2012-06-04 13 views
5

Wygląda na to, że gdy masz element o różnych rozmiarach/kolorowych obramowaniach, możesz zobaczyć bardzo dziwną postrzępioną linię. Nigdy wcześniej tego nie zauważyłem, ale przyglądałem się super gorącemu nowemu projektowi Vimeo, kiedy zauważyłem (nie bardzo chcę powiedzieć "glitch") dziwne zjawisko.Szyk CSS poszarpany o różnych rozmiarach/kolorowych obramowaniach

Więc jeśli miał div wiszące, stylizowany jak w poniżej, zauważysz nasilenia pikseli (prawie jak to ustawić na wstawce, zamiast stałej ...)

div { 
    height   : 25px; 
    width    : 50px; 
    background  : #eee; 
    border-style  : solid; 
    border-color  : green; 
    border-left-color : black; 
    border-width  : 3px 3px 3px 15px; 
} 

Ktoś to zauważy/wiem, dlaczego tak się dzieje?

+0

hm. ciekawy. – Jason

Odpowiedz

4

Dzieje się tak, ponieważ tworzy się "ramkę" wokół pudełka.

Wyobraź sobie drewnianą ramę do zdjęć, nie używasz czterech prostokątnych kawałków drewna do utworzenia ramki, używasz 4 kawałków trapezów i łączysz je ze sobą. Po ustawieniu większej szerokości z jednej strony, jej ukośne renderowanie do wewnątrz w kierunku rogu pudełka.

Powodem, dla którego wygląda źle jest to, że wygładzanie między granicami nigdy nie było dobre.

alternatywna

Można po prostu zrobić div:before{border-left: 15px solid #000;} jeśli nie chcą granice przycięte tak.

+0

Po prostu zawsze zakładałem, że 'border-style: inset' użył tej metody, i że ta graniczna bryła zrzuciłaby narożnik do pikseli poziomych lub pionowych, zamiast równo rozdzielać tę przestrzeń. Nie zdawałem sobie sprawy, że "border: solid" został zbudowany w ten sposób. Zawsze tyle się uczyć, haha. – Matthew

+0

Obaj używają tego rodzaju stylu. Chodzi mi o to, że gdyby zrobili to, jak byś chciał, musieliby mieć oddzielną własność, żeby wybrać, w którą stronę chcesz podzielić granice. –

3

To nie jest "usterka" - tak działają granice. Łączą się po przekątnej.

Zażycie krok dalej i stworzyć <div> bez wysokości i szerokości, ale duża granicy można zobaczyć wynik - http://jsfiddle.net/mFzrA/

BTW - jest to technika używana do tworzenia czystych trójkąty CSS i dymki. Po prostu 3 przezroczyste ramki są przezroczyste, a 4 - ładny trójkąt.

+0

Całkowicie. Zbierałem kształty z granicami, chociaż tak naprawdę nie rozumiałem, dlaczego to zadziałało. Teraz czuję się trochę zboczony ... – Matthew

2

Po prostu chciałem zasugerować użycie cienia-pudełka na granicy o większej szerokości, aby uniknąć "poszarpanej linii". Działa dla mnie, mam nadzieję, że pomaga :)

div { 
    height   : 25px; 
    width    : 50px; 
    background  : #eee; 
    border-style  : solid; 
    border-color  : green; 
    border-width  : 3px 3px 3px 0px; 
    box-shadow:-15px 0px black; 
} 
Powiązane problemy