Chcę zmienić grubość mojej poziomej reguły ( <hr>
) w CSS. Wiem, że można to zrobić w HTML -
<hr size="10">
Ale słyszę, że jest to przestarzałe, jak wspomniano tutaj w MDN . W CSS próbowałem użyć, height:1px
ale nie zmienia to grubości. Chcę, żeby <hr>
linia była 0.5px
gruba.
Korzystam z Firefox 3.6.11 na Ubuntu
html
css
user-interface
Srikar Appalaraju
źródło
źródło
Odpowiedzi:
Aby uzyskać spójność, usuń wszelkie granice i użyj wysokości dla
<hr>
grubości. Dodanie koloru tła spowoduje stylizację<hr>
z określoną wysokością i kolorem.W twoim arkuszu stylów:
Lub wbudowany, jak masz:
Dłuższe wyjaśnienie tutaj
źródło
border:none
? Jakiegokolwiek powodu? Czy obramowanie również dodaje grubość?<hr style="border: none; height:1px; color:#333; background-color:#333;">;
color
?Renderowanie subpikseli w przeglądarkach
Renderowanie subpikseli jest trudne. Nie można oczekiwać, że monitor wyświetli cienką linię o grubości mniejszej niż piksel. Ale możliwe jest podanie wymiarów subpikseli. W zależności od przeglądarki renderują je inaczej. Sprawdź post na ten temat w blogu Johna Resiga .
Zasadniczo, jeśli monitor jest wyświetlaczem LCD i rysujesz linie pionowe, możesz łatwo narysować linię 1/3 pikseli. Jeśli tło jest białe, podaj kolor linii
#f0f
. Dla oka ta linia będzie miała 1/3 szerokości piksela. Chociaż będzie miał jakiś kolor, jeśli powiększysz monitor, zobaczysz, że tylko jeden segment całego piksela (składający się z RGB) będzie ciemny. Jest to technika stosowana do precyzyjnego podpowiedzi typu, tj . ClearType .Ale linie poziome mogą mieć wysokość tylko pełnego piksela. To ograniczenie technologiczne monitorów LCD. Kineskopy były jeszcze bardziej skomplikowane z ich trójkątnymi luminoforami (chyba że były to kratki typu apertura, np. Sony Trinitron), ale to inna historia.
Zasadniczo podanie wymiaru subpikselowego i oczekiwanie, że będzie renderowany w ten sposób, jest tym samym, co oczekiwanie, że zmienna całkowita będzie przechowywać liczbę 1,2034759349. Jeśli zrozumiesz, że jest to niemożliwe, powinieneś zrozumieć, że monitory nie są w stanie renderować wymiarów subpikseli.
Bezpieczny styl dla różnych przeglądarek
Ale sposób, w jaki mieszają się poziome reguły, zwykle wykonuje się za pomocą kolorów. Więc jeśli twoje tło jest na przykład białe (
#fff
), zawsze możesz zrobićHR
bardzo jasne. Jak#eee
.Bezpiecznym stylem dla wielu przeglądarek dla bardzo lekkiej reguły poziomej byłoby:
I użyj pliku CSS zamiast stylów wbudowanych. Zapewniają one centralną definicję całej witryny, a nie tylko konkretnego elementu. To znacznie ułatwia konserwację.
źródło
Szukałem najkrótszego sposobu na narysowanie linii 1px, ponieważ całe obciążenie oddzielonego CSS nie jest najszybszym ani najkrótszym rozwiązaniem.
Aż do HTML5, WAS był krótszy dla 1px hr: <hr noshade>, ale .. Atrybut noshade <hr> nie jest obsługiwany w HTML5. Zamiast tego użyj CSS. (ani inne atrybuty używane wcześniej, jako rozmiar, szerokość, wyrównanie ) ...
Teraz ten jest dość trudny, ale działa dobrze, jeśli potrzebna jest najprostsza godzina 1px:
Odmiana 1, CZARNY godz .: (najlepsze rozwiązanie dla czerni)
Wyjście: FF, Opera - czarny / Safari - ciemnoszary
Wariant 2, SZARY godz. (Najkrótszy!):
Wyjście: Opera - ciemnoszary / FF - szary / Safari - jasnoszary
Wariant 3, KOLOR zgodnie z życzeniem:
Wyjście: Opera / FF / Safari: 1px czerwony.
źródło
Zalecałbym ustawienie
HR
samej wartości jako0px
wysokiej i użycie jej obramowania, aby była widoczna. Zauważyłem, że podczas powiększania i pomniejszania (ctrl + kółko myszy) sama grubośćHR
się zmienia, a po ustawieniu ramki zawsze pozostaje taka sama:źródło
wysokość atrybutu została uznana za przestarzałą w html 5. To, co bym zrobił, to utworzyć ramkę wokół godziny i zwiększyć jej grubość jako taką: hr style = "border: solid 2px black;"
źródło
Dodałem krycie do linii, więc wydaje się cieńsze:
źródło
Uważam, że najlepsze osiągnięcie dla
<hr>
tagu stylizacji jest następujące:I kodu HTML wystarczy dodać:
<hr>
.źródło
Oto rozwiązanie dla 1-pikselowej czarnej linii bez obramowania i marginesu
Myślałam, że to dlatego, dodać pozostałe odpowiedzi nie obejmują:
margin:0px;
.źródło
Sugeruję użycie konstrukcji podobnej do
źródło