I don’t know about you, but I write these three declarations many times in my CSS:
ul { padding: 0; margin: 0; list-style-type: none; }
You might yell at me and say I can just put those in my CSS resets. I wish I could, but I don‘t want to and I’ll tell you why in a second.
User agents set values to those properties in a list for a purpose, and that is to make lists more readable. These are the default styles in chromium browsers for a
- element:
ul { list-style-type: disc; margin-block-start: 1em; margin-block-end: 1em; margin-inline-start: 0px; margin-inline-end: 0px; padding-inline-start: 40px; }
So, without adding any class in HTML or style in CSS, we get those for free. That‘s a nice thing and I don‘t want to lose it. But I would appreciate it if I could make the browser understand that there is very high chance I don’t want that default feature in cases where I add a class to the element.
So here is a quick solution to reset a
- element that has a class:
ul[class] { padding: 0; margin: 0; list-style-type: none; }
Now I don’t lose the default style except when I add a class to my
- element.
The problem
There is a problem with this solution. Imagine there is a list that we want to have a different list-style-type for it, like the following:
ul[class] { padding: 0; margin: 0; list-style-type: none; } .list { list-style-type: square; }
This doesn’t work since ul[class] has higher specificity. That’s where our solution breaks down.
We could add more weight to the selector’s specificity:
ul.list { list-style-type: square; /* Specificity: 0, 1, 1 */ } /* or */ .sidebar .list { list-style-type: square; /* Specificity: 0, 2, 0 */ }
If you are OK adding more weight to the selector, you are good to go. But I’m not OK with it, personally. For example, I don’t want to put the element’s name in my CSS most of the times due to a separation of concerns principle. Or, if you are following BEM methodology, problems will most certainly arise as this conflicts with it.
So what can we do?
The solution
A few months ago, I learned about some hot selectors, including :is() and :where(). One thing about these two functional pseudo selectors, is that they can change specificity, giving us the power to nullify or increase that specificity.
The key about :where() is that it always has 0 specificity. So we can get rid of our problem very easily like this:
:where(ul[class]) { list-style: none; } .list { list-style: square; /* Now this works like a charm! */ }
With the power of this selector, libraries can give us style with no specificity. So there would be no specificity to compete with when we as authors write CSS.
Demo
In the following demo, you can remove :where() to see what we talked about in action:
Das obige ist der detaillierte Inhalt vonVerwenden der Spezifität von: wo () als CSS zurückgesetzt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Wenn Sie jemals eine interaktive Animation während eines Live -Vortrags oder einer Klasse anzeigen mussten, wissen Sie vielleicht, dass es nicht immer einfach ist, mit Ihren Folien zu interagieren

Mit Astro können wir während unseres Builds den größten Teil unserer Website generieren, verfügen jedoch über ein kleines Stück serverseitiger Code, mit dem Suchfunktionen mithilfe von so etwas wie Fuse.js. In dieser Demo werden wir Fuse verwenden, um eine Reihe persönlicher "Lesezeichen" zu durchsuchen.

Ich wollte eine Benachrichtigungsnachricht in einem meiner Projekte implementieren, ähnlich wie in Google Docs, während ein Dokument speichert. Mit anderen Worten, a

Vor einigen Monaten war ich in Hacker News (wie einer) und stieß auf einen (jetzt gelöschten) Artikel über die Nichtverwendung von If -Anweisungen. Wenn Sie neu in dieser Idee sind (wie ich

Seit den frühen Tagen der Science -Fiction haben wir über Maschinen geträumt, die mit uns sprechen. Heute ist es alltäglich. Trotzdem die Technologie für die Herstellung

Ich erinnere mich, als Gutenberg in den Kern entlassen wurde, weil ich an diesem Tag in Wordcamp war. Inzwischen sind einige Monate vergangen, also stelle ich mir immer mehr von uns vor

Die Idee hinter den meisten Webanwendungen besteht darin, Daten aus der Datenbank abzurufen und sie dem Benutzer bestmöglich vorzustellen. Wenn wir dort mit Daten umgehen

Lassen Sie sich ein wenig Schritt für Schritt von einer Situation machen, in der Sie nicht ganz das tun können, was zu sinnvoll ist, aber Sie können es trotzdem mit CSS-Tricks erledigen. In diesem


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Dreamweaver CS6
Visuelle Webentwicklungstools