Jestem pewien, że musiałem o tym wspomnieć / zapytać, ale szukałem wieku bez szczęścia, moja terminologia musi być błędna!
Niejasno pamiętam tweet, który widziałem jakiś czas temu, który sugeruje, że dostępna jest reguła css, która usuwa wszystkie style wcześniej ustawione w arkuszu stylów dla określonego elementu.
Dobrym przykładem użycia może być strona RWD na urządzenia mobilne, w której znaczna część stylizacji zastosowanej do określonego elementu w widokach małego ekranu wymaga „zresetowania” lub usunięcia tego samego elementu w widoku pulpitu.
Reguła css, która może osiągnąć coś takiego:
.element {
all: none;
}
Przykładowe użycie:
/* mobile first */
.element {
margin: 0 10;
transform: translate3d(0, 0, 0);
z-index: 50;
display: block;
etc..
etc..
}
@media only screen and (min-width: 980px) {
.element {
all: none;
}
}
Abyśmy mogli szybko usunąć lub ponownie ustawić stylizację bez konieczności deklarowania każdej właściwości.
Ma sens?
all
proponowana do resetowania wszystkich właściwości CSS dla danego elementu do pewnych wartości w całym CSS - wartość, której chcesz użyćunset
, to która resetuje właściwość do jej odziedziczonej wartości, jeśli domyślnie dziedziczy, lub w przeciwnym razie jego wartość początkowa. Nie ma słowa o implementacji, ale miło jest wiedzieć, że ktoś o tym pomyślał.all: revert
zrobi. Zobacz moją odpowiedź. @CBroe Tak, coś takiego istnieje już teraz.Odpowiedzi:
Słowo kluczowe CSS3
initial
ustawia właściwość CSS3 na wartość początkową zdefiniowaną w specyfikacji . Słowoinitial
kluczowe obsługuje szeroką przeglądarkę, z wyjątkiem rodzin IE i Opera Mini.Ponieważ brak obsługi IE może powodować problemy, oto niektóre sposoby resetowania niektórych właściwości CSS do ich wartości początkowych:
Jak wspomniano w komentarzu @ user566245:
[POST EDIT FEB 4, '17] Wybitny za to, że został nowoczesną normą, użytkownik Joost
PRZYKŁAD Z W3
JAVASCRIPT?
Nikt nie pomyślał o css poza resetowaniem css? Tak?
Jest taki wycinek w pełni odpowiedni: https://stackoverflow.com/a/14791113/845310
odpowiedział 9 lutego 2013 o 20:15 przez VisioN
Z tym wszystkim powiedziane; nie sądzę, aby reset css był wykonalny, chyba że skończymy z tylko jedną przeglądarką internetową ... jeśli „domyślne” zostanie ustawione przez przeglądarkę.
Dla porównania, oto lista wartości Firefoksa 40.0 dla miejsca, w
<blockquote style="all: unset;font-style: oblique">
którymfont-style: oblique
wyzwala działanie DOM.źródło
Dla przyszłych czytelników. Myślę, że o to właśnie chodziło, ale obecnie nie jest tak szeroko obsługiwane (patrz poniżej):
źródło
all
.all
jak rozważane . Przyszła wersja Edge może go obsługiwać.#someselector { ... * { all: unset; } ... }
jest Sass. Nie wspomniałeś tutaj o Sassu - czy to coś nowego w CSS3? Poszukiwanie „zagnieżdżonego CSS” pozwala mi uzyskać podstawowe samouczki i informacje o Sass. Dodanie... * { ... } ...
zagnieżdżonej części do mojego CSS (w HTML5) powoduje uszkodzenie mojego dokumentu (elementy potomne indywidualnie przyjmują styl, który właśnie chciałem zastosować do rodzica).Znaleźliśmy zupełnie nowe rozwiązanie tego problemu.
Użyj
all: revert
luball: unset
.Z MDN:
Jeśli więc element ma nazwę klasy, taką jak
remove-all-styles
:Na przykład:
HTML:
Z CSS:
Kasuje wszystkie style stosowane przez
other-class
,another-class
i wszystkie inne style dziedziczone i stosowane dodiv
.Lub w twoim przypadku:
Zrobię
Kliknij tutaj, aby poznać różnicę między stylami autora, użytkownika, użytkownika i agenta.
Na przykład: jeśli chcemy odizolować osadzone widżety / komponenty od stylów strony, która je zawiera , możemy napisać:
Co spowoduje przywrócenie wszystkich
author styles
(tj. CSS dla programistów) douser styles
(stylów, które ustawił użytkownik naszej witryny - mniej prawdopodobny scenariusz) lub douser-agent
stylów, jeśli nie ustawiono stylów użytkownika.Więcej informacji tutaj: https://developer.mozilla.org/en-US/docs/Web/CSS/revert
Jedynym problemem jest wsparcie : tylko Safari 9.1 i iOS Safari 9.3 mają wsparcie
revert
wartości w momencie pisania.Powiem więc: użyj tego stylu i powróć do innych odpowiedzi.
źródło
all: initial
iall: unset
działała dla mnie na MS Edge 16).Pozwolę sobie odpowiedzieć dokładnie na to pytanie, ponieważ było to dla mnie źródłem bólu przez kilka lat i bardzo niewiele osób naprawdę rozumie problem i dlaczego jest tak ważne, aby go rozwiązać. Gdybym był w ogóle odpowiedzialny za specyfikację CSS, byłbym zawstydzony, szczerze mówiąc, że nie rozwiązałem tego w ostatniej dekadzie.
Problem
Musisz wstawić znaczniki do dokumentu HTML i musi on wyglądać w określony sposób. Ponadto nie jesteś właścicielem tego dokumentu, więc nie możesz zmienić istniejących reguł stylu. Nie masz pojęcia, jakie mogą być arkusze stylów ani do czego mogą się zmienić.
Przypadki użycia w tym przypadku występują, gdy udostępniasz możliwy do wyświetlenia komponent do użycia przez nieznane strony internetowe stron trzecich. Przykładami tego mogą być:
Najprostsza poprawka
Umieść wszystko w ramce iframe. Ma to swój własny zestaw ograniczeń:
Jeśli twoja treść może zmieścić się w polu, można obejść problem nr 1, zapisując ramkę iframe i jawnie ustawiając zawartość, omijając w ten sposób problem, ponieważ element iframe i dokument będą miały tę samą domenę.
Rozwiązanie CSS
Szukałem daleko tego rozwiązania, ale niestety nie ma takiego. Najlepsze, co możesz zrobić, to jawnie przesłonić wszystkie możliwe właściwości, które można zastąpić, i zastąpić je tym, co myślisz , że ich wartość domyślna powinna być.
Nawet po zastąpieniu nie ma sposobu, aby bardziej ukierunkowana reguła CSS nie zastąpiła Twojej . Najlepsze, co możesz tutaj zrobić, to ustawić cel nadpisywania tak dokładnie, jak to możliwe i mieć nadzieję, że dokument nadrzędny nie przypadkowo go najlepiej: użyj niejasnego lub losowego identyfikatora elementu nadrzędnego treści i użyj! Ważne we wszystkich definicjach wartości właściwości .
źródło
p { color: blue}
Nie zostanie zresetowany)inne sposoby:
1) dołącz kod css (plik) resetowania Yahoo CSS, a następnie umieść wszystko w tym DIV:
2) lub użyj
źródło
Nie polecam używania odpowiedzi oznaczonej tutaj jako poprawną. Jest to ogromna kropla CSS, która próbuje pokryć wszystko.
Sugeruję, abyś ocenił, jak usunąć styl z elementu na podstawie poszczególnych przypadków.
Powiedzmy, że do celów SEO musisz umieścić H1 na stronie, która nie ma rzeczywistego nagłówka w projekcie. Możesz ustawić link nawigacyjny tej strony jako H1, ale oczywiście nie chcesz, aby ten link nawigacyjny wyświetlał się jako gigantyczny H1 na stronie.
To, co powinieneś zrobić, to owinąć ten element w znacznik h1 i sprawdzić go. Zobacz, jakie style CSS są stosowane konkretnie w elemencie h1.
Powiedzmy, że widzę następujące style zastosowane do elementu.
Teraz musisz dokładnie wskazać styl zastosowany do H1 i rozbroić je w klasie css. To wyglądałoby mniej więcej tak:
Jest to o wiele czystsze i nie powoduje zrzucania przypadkowych kropli kodu do twojego css, czego nie wiesz, co on właściwie robi.
Teraz możesz dodać tę klasę do swojego h1
źródło
Jeśli akurat używasz sassa w systemie kompilacji, jednym ze sposobów, aby to zrobić, które będzie działać we wszystkich głównych przeglądarkach, jest zawinięcie wszystkich importowanych stylów za pomocą selektora: not () tak ...
Następnie możesz użyć klasy wyłączania na kontenerze, a podtekst nie będzie miał żadnego z twoich stylów.
Oczywiście wszystkie twoje style będą teraz poprzedzone selektorem: not (), więc jest trochę nieprzyzwoicie, ale działa dobrze.
źródło
Wspomniałeś o witrynach na telefony komórkowe ... Aby uzyskać responsywny projekt, z pewnością można zastąpić style małego ekranu stylami dużego ekranu. Ale może nie musisz.
Spróbuj tego:
Te zapytania o media nie nakładają się, więc ich reguły się nie zastępują. Ułatwia to utrzymanie każdego zestawu stylów osobno.
źródło
LEPSZE ROZWIĄZANIE
Pobierz arkusz stylów „kopiuj / wklej”, aby zresetować właściwości css do domyślnych (styl UA):
https://github.com/monmomo04/resetCss.git
Dzięki @ Milche Patern!
Przydatny link:Naprawdę szukałem wartości resetowania / domyślnych właściwości stylu. Moją pierwszą próbą było skopiowanie obliczonej wartości z narzędzia deweloperskiego przeglądarki elementu root (html). Ale jak obliczył, wyglądałby / działał inaczej w każdym systemie.
Dla tych, którzy napotykają awarię przeglądarki, gdy próbują użyć gwiazdki *, aby zresetować styl elementów potomnych, a ponieważ wiedziałem, że to nie zadziałało, zastąpiłem gwiazdkę „*” wszystkimi nazwami tagów HTML. . Przeglądarka nie uległa awarii; Korzystam z Chrome w wersji 46.0.2490.71 m.
Na koniec warto wspomnieć, że te właściwości zresetują styl do domyślnego stylu najwyższego elementu głównego, ale nie do wartości początkowej dla każdego elementu HTML. Aby to naprawić, wziąłem style przeglądarki użytkownika „user-agent” i zaimplementowałem ją w klasie „reset-this”.
Pobierz arkusz stylów „kopiuj / wklej”, aby zresetować właściwości css do domyślnych (styl UA):
https://github.com/monmomo04/resetCss.git
Styl użytkownika użytkownika:
domyślny CSS przeglądarki dla elementów HTML
http://trac.webkit.org/browser/trunk/Source/WebCore/css/html.css
Specyfika CSS (zwróć uwagę na specyfikę):
https://css-tricks.com/specifics-on-css-specificity/
https://github.com/monmomo04/resetCss.git
źródło
W moim konkretnym scenariuszu chciałem pominąć stosowanie typowych stylów do określonej części strony, lepiej zilustrowane w ten sposób:
Po zadziałaniu z resetowaniem CSS, który nie przyniósł wiele sukcesów (głównie ze względu na pierwszeństwo reguł i złożoną hierarchię arkuszy stylów), na ratunek przyszedł wszechobecny jQuery, który wykonał zadanie bardzo szybko i dość brudno:
(Teraz powiedz, jak złe jest używanie JS do radzenia sobie z CSS :-))
źródło
Dla tych z Was, którzy próbują dowiedzieć się, jak faktycznie usunąć styl z elementu, bez usuwania css z plików, to rozwiązanie działa z jquery:
źródło
jeśli ustawisz swój CSS w ramach klas, możesz łatwo usunąć je za pomocą metody jQuery removeClass (). Poniższy kod usuwa klasę .element:
Jeśli nie zostanie określony parametr, ta metoda usunie WSZYSTKIE nazwy klas z wybranych elementów.
źródło
Nie, to tylko kwestia lepszego zarządzania strukturą css.
W twoim przypadku zamówiłbym mój css coś takiego:
Po prostu eksperymentuj.
źródło
Czy jest szansa, że szukasz ważnej zasady? Nie powoduje cofnięcia wszystkich deklaracji, ale umożliwia ich zastąpienie.
„Gdy!! Ważna reguła jest używana w deklaracji stylu, deklaracja ta zastępuje każdą inną deklarację złożoną w CSS, gdziekolwiek jest na liście deklaracji. Chociaż! Ważne nie ma nic wspólnego ze specyfiką.”
https://developer.mozilla.org/en-US/docs/CSS/Specificity#The_!important_exception
źródło