Czy można zastąpić właściwość display wartością domyślną? Na przykład, jeśli ustawiłem go na none w jednym stylu i chcę zastąpić go w innym stylu domyślnym.
A może to jedyny sposób, aby dowiedzieć się, jaka jest wartość domyślna tego elementu, a następnie ustawić go na taki? Chciałbym nie wiedzieć, czy element jest zwykle blokowy, wbudowany czy cokolwiek ...
unset
.unset
,initial
,inherit
,revert
Odpowiedzi:
Domyślne style przeglądarki są zdefiniowane w arkuszu stylów agenta użytkownika, którego źródła można znaleźć tutaj . Niestety, specyfikacja kaskadowania i dziedziczenia poziomu 3 nie wydaje się proponować sposobu zresetowania właściwości stylu do wartości domyślnej przeglądarki. Istnieją jednak plany ponownego wprowadzenia tego słowa kluczowego na poziomie kaskadowania i dziedziczenia na poziomie 4 - grupa robocza po prostu nie ustaliła jeszcze nazwy dla tego słowa kluczowego (link obecnie podaje
revert
, ale nie jest ostateczny). Informacje na temat obsługi przeglądarekrevert
można znaleźć na caniuse.com .Podczas gdy specyfikacja poziomu 3 wprowadza
initial
słowo kluczowe , ustawienie właściwości na jej wartość początkową resetuje ją do wartości domyślnej zdefiniowanej przez CSS , a nie zdefiniowanej przez przeglądarkę . Początkowa wartośćdisplay
toinline
; jest to określone tutaj . Słowoinitial
kluczowe odnosi się do tej wartości, a nie do wartości domyślnej przeglądarki. Sama specyfikacja umieszcza tę notatkę podall
właściwością :Więc wydaje mi się, że jedynym sposobem w tej chwili przy użyciu czystego CSS jest wyszukanie domyślnej wartości przeglądarki i ustawienie jej ręcznie:
(Alternatywą dla powyższego byłoby
div.foo:not(.bar) { display: inline-block; }
, ale wiąże się to raczej z modyfikacją oryginalnego selektora niż nadpisaniem).źródło
initial
tak naprawdę działa. Zaktualizowałem moją odpowiedź.display
to zawszeinline
( w3.org/TR/CSS21/visuren.html#display-prop ), niezależnie od tego, czy znajduje się nadiv
aspan
.div
Elementem jestdisplay: block
domyślnie zgodnie z HTML , CSS i nie, więc jest to do UA stylów znaczy przeglądarkidiv { display: block; }
.default
została zmieniona narevert
.Jeśli używanie javascript jest dozwolone , możesz ustawić
display
właściwość na pusty ciąg. Spowoduje to, że użyje wartości domyślnej dla tego konkretnego elementu.Oto link do pliku jsbin .
To jest dobre, bo nie trzeba się martwić o różnych typach, aby powrócić do ekranu (
block
,inline
,inline-block
,table-cell
, etc).Ale wymaga javascript, więc jeśli szukasz rozwiązania tylko dla CSS, to nie jest to rozwiązanie dla Ciebie.
Uwaga: zastępuje style wbudowane, ale nie style ustawione w css
źródło
style
atrybutu wbudowanego w pierwszej kolejności. Nie można przesłonić ani usunąć deklaracji z arkusza stylów przy użyciu tej metody.style
atrybutu lub ustawiającego JavaScript. Nadal możesz nadpisać deklarację arkusza stylów, jeśli ustawisz określoną wartość za pomocą JS, ale ustawienie jej na pustą jest równoznaczne z całkowitym nie ustawieniem jej - deklaracja arkusza stylów pozostanie nienaruszona. Zobacz zmodyfikowane skrzypce: jsfiddle.net/BoltClock/g45qagt3/1Nieskonfigurowany
display
:Możesz użyć wartości,
unset
która działa zarówno w przeglądarce Firefox, jak i Chrome .źródło
unset
ma takie same problemy jakinitial
. Wartośćdisplay
będzieinline
. Zobacz codepen.io/Gidgidonihah/pen/mwWxEqunset
nie pomoże w tym, ponieważ jest na właściwość i zawsze zresetuje wyświetlacz doinline
. Rozważ aktualizację swojej odpowiedzi.Nie, generalnie nie jest to możliwe. Gdy jakiś kod CSS (lub HTML) ustawi wartość właściwości elementu, nie ma sposobu, aby to cofnąć i powiedzieć przeglądarce, aby użyła jej wartości domyślnej.
Jest oczywiście możliwe, aby ustawić właściwość wartość, że spodziewać się wartość domyślna. Może to działać dość szeroko, jeśli sprawdzisz sekcję Rendering w HTML5 CR, głównie odzwierciedlającą to, co faktycznie robią przeglądarki.
Mimo to odpowiedź brzmi „nie”, ponieważ przeglądarki mogą mieć dowolne wartości domyślne. Powinieneś przeanalizować, jaki był powód chęci przywrócenia ustawień domyślnych; oryginalny problem może nadal być rozwiązywalne.
źródło
Jeśli masz dostęp do JavaScript , możesz utworzyć element i odczytać jego wyliczony styl.
źródło
Jeśli chodzi o odpowiedź BoltClock i Johna, osobiście miałem problemy z początkowym słowem kluczowym podczas korzystania z IE11. Działa dobrze w Chrome, ale w IE wydaje się nie mieć żadnego efektu.
Zgodnie z tą odpowiedzią IE nie obsługuje początkowego słowa kluczowego: wyświetlanie Div: początkowe nie działa zgodnie z przeznaczeniem w ie10 i chrome 29
Zamiast tego próbowałem ustawić go jako pusty, jak sugerowano tutaj: jak wrócić do normalnego stanu po wyświetleniu: brak dla wiersza tabeli
To zadziałało i było wystarczająco dobre dla mojego scenariusza. Oczywiście, aby ustawić prawdziwą wartość początkową, powyższa odpowiedź jest jedyną dobrą, jaką udało mi się znaleźć.
źródło