Master the CSS cascade: Say goodbye to chaos and embrace control! This article will explore how to use new CSS features to control cascades to write more concise and efficient CSS code. In the past, styles from different sources often made cascades difficult to manage and eventually produced redundant code. Even with methods like ITCSS and BEM, we still face challenges posed by cascades, such as the need to precisely control the position of the @import
statement or have to resort to !important
. Fortunately, some new tools have come out, allowing us to effectively control the cascade.
Drive :where
pseudo selector
:where
pseudo-selectror allows us to remove the particularity of the selector so that it is only higher than the user agent default style, regardless of the CSS loading order. This means that the selector's particularity is actually zero, which is very useful for general-purpose components.
For example, use :where
to define a common table style:
:where(table) { background-color: tan; }
Even if other table styles were defined before this:
table { background-color: hotpink; } :where(table) { background-color: tan; }
The table background color is still tan
because :where
eliminates the particularity of the selector. This makes :where
perfect for CSS reset.
:where
's brother selector :is
has the opposite effect:
The particularity of the
:is()
pseudo-class is determined by the particularity of its most special parameters. Therefore, selectors written with:is()
do not necessarily have the same speciality as equivalent selectors written without:is()
. ——Selector Level 4 Specification
Continue with the previous example:
:is(table) { --tbl-bgc: orange; } table { --tbl-bgc: tan; } :where(table) { --tbl-bgc: hotpink; background-color: var(--tbl-bgc); }
The background color of the table will be tan
because :is
has the same particularity as table
, and table
is located behind it. But if we change it to:
:is(table, .c-tbl) { --tbl-bgc: orange; }
The background color will be orange
because :is
has the same weight as its most special selector.c .c-tbl
.
Example: Configurable table components
Let's build a table component with the following HTML:
Next, we wrap .c-tbl
in :where
selector and add the rounded corners:
:where(.c-tbl) { border-collapse: separate; border-spacing: 0; table-layout: auto; width: 99.9%; }
Table cells use different styles:
:where(.c-tbl thead th) { /* ... */ } :where(.c-tbl tbody td) { /* ... */ }
Due to rounded corners and border-collapse: separate
, we need to add extra styles:
:where(.c-tbl tr td:first-of-type) { /* ... */ } /* ... */
Now we can create variations of the table component by injecting other styles before or after the general style (benefits from :where
's speciality elimination):
.c-tbl--purple th { background-color: hsl(330, 50%, 40%) } /* ... */
CSS custom properties
We will use data-component
property to define the component:
The above is the detailed content of Don't Fight the Cascade, Control It!. For more information, please follow other related articles on the PHP Chinese website!

ThebestmethodforincludingCSSdependsonprojectsizeandcomplexity:1)Forlargerprojects,useexternalCSSforbettermaintainabilityandperformance.2)Forsmallerprojects,internalCSSissuitabletoavoidextraHTTPrequests.Alwaysconsidermaintainabilityandperformancewhenc

What it looks like to troubleshoot one of those impossible issues that turns out to be something totally else you never thought of.

@keyframesandCSSTransitionsdifferincomplexity:@keyframesallowsfordetailedanimationsequences,whileCSSTransitionshandlesimplestatechanges.UseCSSTransitionsforhovereffectslikebuttoncolorchanges,and@keyframesforintricateanimationslikerotatingspinners.

I know, I know: there are a ton of content management system options available, and while I've tested several, none have really been the one, y'know? Weird pricing models, difficult customization, some even end up becoming a whole &

Linking CSS files to HTML can be achieved by using elements in part of HTML. 1) Use tags to link local CSS files. 2) Multiple CSS files can be implemented by adding multiple tags. 3) External CSS files use absolute URL links, such as. 4) Ensure the correct use of file paths and CSS file loading order, and optimize performance can use CSS preprocessor to merge files.

Choosing Flexbox or Grid depends on the layout requirements: 1) Flexbox is suitable for one-dimensional layouts, such as navigation bar; 2) Grid is suitable for two-dimensional layouts, such as magazine layouts. The two can be used in the project to improve the layout effect.

The best way to include CSS files is to use tags to introduce external CSS files in the HTML part. 1. Use tags to introduce external CSS files, such as. 2. For small adjustments, inline CSS can be used, but should be used with caution. 3. Large projects can use CSS preprocessors such as Sass or Less to import other CSS files through @import. 4. For performance, CSS files should be merged and CDN should be used, and compressed using tools such as CSSNano.

Yes,youshouldlearnbothFlexboxandGrid.1)Flexboxisidealforone-dimensional,flexiblelayoutslikenavigationmenus.2)Gridexcelsintwo-dimensional,complexdesignssuchasmagazinelayouts.3)Combiningbothenhanceslayoutflexibilityandresponsiveness,allowingforstructur


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SublimeText3 English version
Recommended: Win version, supports code prompts!

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Dreamweaver CS6
Visual web development tools
