Czy ktoś wie o jakiejkolwiek różnicy między właściwościami „granicy” i „konturu” w CSS? Jeśli nie ma różnicy, to dlaczego istnieją dwie właściwości tej samej rzeczy?
194
Od: http://webdesign.about.com/od/advancedcss/a/outline_style.htm
Właściwość konturu CSS jest mylącą właściwością. Kiedy po raz pierwszy się o tym dowiadujesz, trudno jest zrozumieć, w jaki sposób różni się on nawet od nieruchomości granicznej. W3C wyjaśnia, że ma następujące różnice:
1. Linie nie zajmują miejsca.
2. Linie mogą być nie prostokątne.
Oprócz kilku innych odpowiedzi ... oto kilka innych różnic, o których mogę myśleć:
1) Zaokrąglone rogi
border
obsługuje zaokrąglone rogiborder-radius
właściwościoutline
nie.Pokaż fragment kodu
SKRZYPCE
(Uwaga: chociaż firefox ma
-moz-outline-radius
właściwość, która pozwala na zaokrąglanie rogów na konspekcie ... ta właściwość nie jest zdefiniowana w żadnym standardzie CSS i nie jest obsługiwana przez inne przeglądarki ( źródło ))2) Stylizacja tylko z jednej strony
granica ma właściwości do stylu każdej strony
border-top:
,border-left:
etc.zarys nie może tego zrobić. Nie ma top-top: itd. Wszystko albo nic. (zobacz ten post SO )
3) przesunięcie
Zarys obsługuje przesunięcie z właściwością Zarys-przesunięcie . granica nie.
Pokaż fragment kodu
SKRZYPCE
Uwaga: wszystkie główne przeglądarki obsługują
outline-offset
oprócz Internet Exploreraźródło
outlines
że renderowanie jest szybsze niż granice?Oprócz innych odpowiedzi kontury są zwykle używane do debugowania. Opera ma fajne style CSS użytkownika, które wykorzystują właściwość konturu, aby pokazać, gdzie znajdują się wszystkie elementy w dokumencie.
Jeśli próbujesz dowiedzieć się, dlaczego element nie pojawia się w oczekiwanym miejscu lub w oczekiwanym rozmiarze, dodaj kilka konturów i sprawdź, gdzie znajdują się elementy.
Jak już wspomniano, kontury nie zajmują miejsca. Kiedy dodajesz ramkę, całkowita szerokość / wysokość elementu w dokumencie zwiększa się, ale nie dzieje się tak w przypadku konturu. Nie można także ustawiać konturów po określonych stronach, takich jak granice; to wszystko albo nic.
źródło
tldr;
W3C wyjaśnia, że ma następujące różnice:
Źródło
Dla ułatwienia należy użyć konspektu
Należy również zauważyć, że głównym celem konspektu jest dostępność. Ustawienie go na zarys: nie należy go unikać.
Jeśli musisz go usunąć, być może lepszym pomysłem jest zapewnienie alternatywnego stylu:
Źródło: „Nie usuwaj konturu z kontrolek linków i formularzy”, 365 Berea Street
Więcej zasobów
źródło
Praktyczne zastosowanie konturu dotyczy przejrzystości. Jeśli masz element nadrzędny z tłem, ale chcesz, aby granica elementu podrzędnego była przezroczysta, aby tło elementu nadrzędnego było widoczne, musisz użyć „konspektu” zamiast „ramki”. Obramowanie może być przezroczyste, ale pokazuje tło dziecka, a nie rodzica.
Innymi słowy, to ustawienie wywołało następujący efekt:
źródło
background-clip: padding-box;
do swojej stylizacji .. :)Z witryny szkolnej W3
W CSS graniczne właściwości pozwalają określić styl i kolor obramowania elementu.
Zarys jest linia, która jest zasysane wokół elementów (poza granicami), aby element „stand out”.
Skrótowa właściwość konspektu ustawia wszystkie właściwości konspektu w jednej deklaracji.
Właściwości, które można ustawić, to (w kolejności): kolor konturu, styl konturu, szerokość konturu.
Jeśli brakuje jednej z powyższych wartości, np. „Zarys: bryła # ff0000;”, zostanie wstawiona domyślna wartość brakującej właściwości, jeśli taka istnieje.
Sprawdź tutaj, aby uzyskać więcej informacji: http://webdesign.about.com/od/advancedcss/a/outline_style.htm
źródło
Trochę starego pytania, ale warto wspomnieć o błędzie renderowania Firefoksa (wciąż obecny od stycznia 2013 r.), W którym kontur będzie renderowany na zewnątrz wszystkich elementów potomnych, nawet jeśli przepełnią one swój element nadrzędny (przez ujemne marginesy, cienie pola) itp.)
Możesz to naprawić za pomocą:
Bardzo niefortunnie, że wciąż nie został naprawiony. Zdecydowanie wolę kontury w wielu przypadkach, ponieważ nie dodają się one do wymiarów elementu, dzięki czemu nie musisz brać pod uwagę szerokości obramowania przy ustalaniu wymiarów elementu.
W końcu co jest prostsze?
Lub:
źródło
box-sizing
spróbuj! linkWarto również zauważyć, że zarys W3C jest granicą IE, ponieważ IE nie implementuje modelu skrzynki W3C.
W modelu pudełkowym w3c ramka nie uwzględnia szerokości i wysokości elementu. W IE jest to włącznie.
źródło
Zrobiłem mały kawałek kodu css / html, aby zobaczyć różnicę między nimi.
outline
lepiej jest włączyć potencjalnie przepełnione elementy potomne, szczególnie do wbudowanego pojemnika.border
jest znacznie bardziej dostosowane do bloku elementów -behaving.Skrzypce dla pana!
źródło
Właściwość konturu w CSS rysuje linię wokół elementu. Jest podobny do granicy, z tym że:
pozycję elementu ani sąsiednich elementów
Źródło: https://css-tricks.com/almanac/properties/o/outline/
źródło
Jako praktyczny przykład użycia „konturu”, słabą kropkowaną ramkę, która podąża za fokusem systemowym na stronie internetowej (np. Jeśli tabulujesz linki) można kontrolować za pomocą właściwości konspektu (przynajmniej wiem, że może to zrobić w Firefoksie , nie wypróbowałem innych przeglądarek).
Powszechną techniką „zastępowania obrazu” jest na przykład:
z następującymi w CSS:
Problem polega na tym, że gdy fokus osiąga znacznik, kontur przesuwa się o 1000em w lewo. Kontur pozwala wyłączyć kontur skupienia na takich elementach.
Uważam, że pasek narzędzi programisty IE również używa czegoś takiego jak kontur „pod maską” podczas podświetlania elementów do inspekcji w trybie „wybierz”. To dobrze pokazuje fakt, że „zarys” nie zajmuje miejsca.
źródło
Pomyśl o zarysie jako granicy, którą projektor rysuje poza czymś, ponieważ granica jest faktycznym przedmiotem wokół tego obiektu.
projekcja może łatwo zachodzić na siebie, ale ramka nie pozwala przejść.
czasami kiedy używam
grid+%width
, border zmienia skalowanie w porcie widoku, na przykład div zwidth:100%
rodzicem zwidth:100px
całkowicie wypełnia rodzic, ale kiedy dodamborder:solid 5px
do div, zmniejsza div, aby zrobić miejsce na obramowanie (chociaż jest to rzadkie i do obejścia!),ale z konturem nie ma tego problemu, ponieważ kontur jest bardziej wirtualny: D to tylko linia poza elementem, ale problem polega na tym, że jeśli nie wykonasz właściwego odstępu, nakłada się on na inną zawartość.
w skrócie:
zarysuj zalety:
nie zadziera z odstępami i
wadami pozycji :
duża szansa na nakładanie się
źródło
Różnice między ramką a konturem:
Obramowanie jest częścią modelu pudełkowego, więc wlicza się do rozmiaru elementu. Kontur nie jest częścią modelu pudełkowego, więc nie wpływa na elementy w pobliżu.
Próbny:
Inne różnice:
kontur jest wyświetlany poza ramką.
Kontury nie mogą mieć zaokrąglonych rogów; granice mogą.
źródło
Skopiowano z W3Schools:
źródło
outline
jest