CSS-`@`-Regeln
Dieser Artikel erklärt CSS-@
-Regeln.
Sie können den Gebrauch und die Erstellung von @
-Regeln wie @import
und @media
lernen.
YouTube Video
HTML zur Vorschau
css-at-rule.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>CSS At Rules</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-at-rule.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS At(@) Rules</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header><h2>CSS At(@) Rules</h2></header>
19 <article>
20 <h3>@import</h3>
21 <section>
22 <header><h4>CSS</h4></header>
23<pre class="sample">
24@import url('styles.css');
25</pre>
26 </section>
27 </article>
28 <article>
29 <h3>@media</h3>
30 <section>
31 <header><h4>CSS</h4></header>
32<pre class="sample">
33@media screen and (max-width: 600px) {
34 body {
35 background-color: lightblue;
36 }
37}
38</pre>
39 </section>
40 </article>
41 <article>
42 <h3>@media Example(Screen Width)</h3>
43 <section>
44 <header><h4>CSS</h4></header>
45<pre class="sample">
46@media (min-width: 600px) {
47 body {
48 background-color: lightblue;
49 }
50}
51@media (max-width: 599px) {
52 body {
53 background-color: lightpink;
54 }
55}
56</pre>
57 </section>
58 </article>
59 <article>
60 <h3>@media Example(Orientation)</h3>
61 <section>
62 <header><h4>CSS</h4></header>
63<pre class="sample">
64@media (orientation: portrait) {
65 body {
66 font-size: 18px;
67 }
68}
69@media (orientation: landscape) {
70 body {
71 font-size: 16px;
72 }
73}
74</pre>
75 </section>
76 </article>
77 <article>
78 <h3>@media Example(Resolution)</h3>
79 <section>
80 <header><h4>CSS</h4></header>
81<pre class="sample">
82@media (min-resolution: 2dppx) {
83 body {
84 background-image: url('high-res-image.png');
85 }
86}
87</pre>
88 </section>
89 </article>
90 <article>
91 <h3>@media Example(AND Condition)</h3>
92 <section>
93 <header><h4>CSS</h4></header>
94<pre class="sample">
95@media (min-width: 600px) and (orientation: portrait) {
96 body {
97 background-color: lightgreen;
98 }
99}
100</pre>
101 </section>
102 </article>
103 <article>
104 <h3>@media Example(OR Condition)</h3>
105 <section>
106 <header><h4>CSS</h4></header>
107<pre class="sample">
108@media (max-width: 400px), (orientation: landscape) {
109 body {
110 color: gray;
111 }
112}
113</pre>
114 </section>
115 </article>
116 <article>
117 <h3>@media Example(NOT Condition)</h3>
118 <section>
119 <header><h4>CSS</h4></header>
120<pre class="sample">
121@media not all and (min-width: 600px) {
122 body {
123 font-size: 14px;
124 }
125}
126</pre>
127 </section>
128 </article>
129 <article>
130 <h3>@font-face</h3>
131 <section>
132 <header><h4>CSS</h4></header>
133<pre class="sample">
134@font-face {
135 font-family: 'CustomFont';
136 src: url('customfont.woff2') format('woff2'),
137 url('customfont.woff') format('woff');
138}
139</pre>
140 </section>
141 </article>
142 <article>
143 <h3>@keyframes</h3>
144 <section>
145 <header><h4>CSS</h4></header>
146<pre class="sample">
147@keyframes slidein {
148 from {
149 transform: translateX(100%);
150 }
151 to {
152 transform: translateX(0%);
153 }
154}
155
156div {
157 animation: slidein 2s ease-in-out;
158}
159</pre>
160 </section>
161 </article>
162 <article>
163 <h3>@supports</h3>
164 <section>
165 <header><h4>CSS</h4></header>
166<pre class="sample">
167@supports (display: grid) {
168 .container {
169 display: grid;
170 }
171}
172</pre>
173 </section>
174 </article>
175 <article>
176 <h3>@page</h3>
177 <section>
178 <header><h4>CSS</h4></header>
179<pre class="sample">
180@page {
181 size: A4;
182 margin: 2cm;
183}
184</pre>
185 </section>
186 </article>
187 <article>
188 <h3>@charset</h3>
189 <section>
190 <header><h4>CSS</h4></header>
191<pre class="sample">
192@charset "UTF-8";
193</pre>
194 </section>
195 </article>
196 <article>
197 <h3>@layer</h3>
198 <section>
199 <header><h4>CSS</h4></header>
200<pre class="sample">
201@layer reset {
202 h1 {
203 margin: 0;
204 }
205}
206@layer base {
207 h1 {
208 font-size: 24px;
209 color: blue;
210 }
211}
212@layer theme {
213 h1 {
214 color: red;
215 }
216}
217</pre>
218 <header><h4>HTML</h4></header>
219<pre>
220<h1>CSS Layer Test</h1>
221<p>
222 This page demonstrates how to apply styles to
223 the <code>&lt;h1&gt;</code> element using CSS layers.
224</p>
225</pre>
226 <header><h4>HTML+CSS</h4></header>
227 <section class="sample-view">
228 <h1>CSS Layer Test</h1>
229 <p>
230 This page demonstrates how to apply styles to
231 the <code><h1></code> element using CSS layers.
232 </p>
233 </section>
234 </section>
235 </article>
236 <article>
237 <h3>@layer with order</h3>
238 <section>
239 <header><h4>CSS</h4></header>
240<pre class="sample">
241@layer theme, base, reset;
242
243@layer reset {
244 h1 {
245 margin: 0;
246 }
247}
248@layer base {
249 h1 {
250 font-size: 24px;
251 color: blue;
252 }
253}
254@layer theme {
255 h1 {
256 color: red;
257 }
258}
259</pre>
260 <header><h4>HTML</h4></header>
261<pre>
262<h1>CSS Layer Test</h1>
263<p>
264 This page demonstrates how to apply styles to
265 the <code>&lt;h1&gt;</code> element using CSS layers.
266</p>
267</pre>
268 <header><h4>HTML+CSS</h4></header>
269 <section class="sample-view">
270 <h1>CSS Layer Test</h1>
271 <p>
272 This page demonstrates how to apply styles to
273 the <code><h1></code> element using CSS layers.
274 </p>
275 </section>
276 </section>
277 </article>
278 <article>
279 <h3>@import & @layer</h3>
280 <section>
281 <header><h4>CSS</h4></header>
282<pre class="sample">
283@import url('css/reset.css') layer(reset);
284@import url('css/base.css') layer(base);
285@import url('css/theme.css') layer(theme);
286</pre>
287 <header><h4>HTML</h4></header>
288<pre>
289<h1>CSS Layer Test</h1>
290<p>
291 This page demonstrates how to apply styles to
292 the <code>&lt;h1&gt;</code> element using CSS layers.
293</p>
294</pre>
295 <header><h4>HTML+CSS</h4></header>
296 <section class="sample-view">
297 <h1>CSS Layer Test</h1>
298 <p>
299 This page demonstrates how to apply styles to
300 the <code><h1></code> element using CSS layers.
301 </p>
302 </section>
303 </section>
304 </article>
305 </main>
306</body>
307</html>
CSS-@
-Regeln
CSS-@
-Regeln (At-Rules) sind spezielle Anweisungen, die das Verhalten und die Anwendungsbedingungen von Stylesheets steuern. Im Gegensatz zu normalen CSS-Eigenschaften wenden @
-Regeln Stile bedingt an oder importieren externe Ressourcen. Repräsentative @
-Regeln umfassen unter anderem @media
, @import
und @keyframes
.
Arten von beispielhaften @
-Regeln
@import
1@import url('styles.css');
@import
wird verwendet, um andere CSS-Dateien in das aktuelle Stylesheet zu importieren. Dies ermöglicht eine einfache Wiederverwendung externer CSS-Dateien.
Punkte:
@import
muss am Anfang des Stylesheets geschrieben werden.- Es sollte in großen Projekten vermieden werden, da es die Leistung beeinträchtigen kann.
@media
1@media screen and (max-width: 600px) {
2 body {
3 background-color: lightblue;
4 }
5}
@media
verwendet Media Queries, um Stile basierend auf bestimmten Bedingungen (wie Bildschirmbreite, Auflösung usw.) anzuwenden. Es wird häufig bei der Umsetzung von Responsive Design verwendet.
Häufig verwendete Bedingungen
Die folgenden sind häufig verwendete Bedingungen, die häufig in Media Queries verwendet werden.
Bedingungen basierend auf der Breite
1@media (min-width: 600px) {
2 body {
3 background-color: lightblue;
4 }
5}
6@media (max-width: 599px) {
7 body {
8 background-color: lightpink;
9 }
10}
- Minimale Breite (
min-width
) wendet Stile an, wenn die Breite gleich oder größer als der angegebene Wert ist. - Maximale Breite (
max-width
) wendet Stile an, wenn die Breite gleich oder kleiner als der angegebene Wert ist.
Ausrichtung des Geräts (orientation
)
1@media (orientation: portrait) {
2 body {
3 font-size: 18px;
4 }
5}
6@media (orientation: landscape) {
7 body {
8 font-size: 16px;
9 }
10}
- Ausrichtung des Geräts (
orientation
) kann auf Hochformat oder Querformat eingestellt werden.
Auflösung (resolution
)
1@media (min-resolution: 2dppx) {
2 body {
3 background-image: url('high-res-image.png');
4 }
5}
- Stile können basierend auf der Auflösung (
resolution
) angewendet werden. - In diesem Beispiel wird ein hochauflösendes Hintergrundbild für hochauflösende Displays angegeben.
Kombinieren von Bedingungen
Media Queries können auch mehrere Bedingungen kombinieren.
UND-Bedingung (and
)
1@media (min-width: 600px) and (orientation: portrait) {
2 body {
3 background-color: lightgreen;
4 }
5}
- Die UND-Bedingung wendet Stile an, wenn alle Bedingungen erfüllt sind.
- In diesem Beispiel wird die Hintergrundfarbe des
body
auf Hellgrün gesetzt, wenn die Bildschirmbreite600px
oder größer ist und das Gerät im Hochformat ist.
ODER-Bedingung (,
)
1@media (max-width: 400px), (orientation: landscape) {
2 body {
3 color: gray;
4 }
5}
- Die ODER-Bedingung wendet Stile an, wenn eine der Bedingungen erfüllt ist.
- In diesem Beispiel wird die Textfarbe des
body
auf Grau gesetzt, wenn die Bildschirmbreite400px
oder kleiner ist, oder das Gerät im Querformat ist.
NICHT-Bedingung (not
)
1@media not all and (min-width: 600px) {
2 body {
3 font-size: 14px;
4 }
5}
- Die NICHT-Bedingung wendet Stile an, wenn die Bedingung nicht erfüllt ist.
- In diesem Beispiel wird für alle Geräte die Schriftgröße des
body
auf14px
gesetzt, wenn die Bildschirmbreite nicht600px
oder größer ist.
@font-face
1@font-face {
2 font-family: 'CustomFont';
3 src: url('customfont.woff2') format('woff2'),
4 url('customfont.woff') format('woff');
5}
@font-face
wird verwendet, um Webfonts zu definieren. Mit dieser Regel können externe Schriftarten heruntergeladen und auf einer Webseite angewendet werden.
- Benutzerdefinierte Schriftarten können anstelle von Standardschriftarten verwendet werden.
- Es ist wichtig, auf die Dateigröße der Schriftarten zu achten.
@keyframes
1@keyframes slidein {
2 from {
3 transform: translateX(100%);
4 }
5 to {
6 transform: translateX(0%);
7 }
8}
9
10div {
11 animation: slidein 2s ease-in-out;
12}
@keyframes
wird verwendet, um CSS-Animationen zu erstellen. Stile können für jeden Schritt einer Animation definiert werden.
- Es ermöglicht eine detaillierte Steuerung von Animationen.
- Es wird in Verbindung mit der
animation
-Eigenschaft verwendet.
@supports
1@supports (display: grid) {
2 .container {
3 display: grid;
4 }
5}
@supports
prüft, ob bestimmte CSS-Funktionen vom Browser unterstützt werden, und wendet Stile basierend auf dem Ergebnis an.
- Es hilft, die Kompatibilität zwischen älteren und neueren Browsern aufrechtzuerhalten.
- Fallbacks können durch Feature-Erkennung angewendet werden.
@page
1@page {
2 size: A4;
3 margin: 2cm;
4}
@page
wird verwendet, um Stile für den Druck zu steuern. Es ist nützlich, um Seitengröße und Ränder festzulegen.
Punkte:
- Es wird verwendet, um Stile für Druckmedien festzulegen.
- Sie können auch die Stile von spezifischen Seitenelementen wie Kopf- und Fußzeilen anpassen.
@charset
1@charset "UTF-8";
@charset
gibt die Zeichenkodierung einer CSS-Datei an. In der Regel wird UTF-8 angegeben.
- Es muss am Anfang des Stylesheets angegeben werden.
- Es wird besonders für mehrsprachige Websites verwendet.
@layer
@layer
ist eine neue @
-Regel, die verwendet wird, um die Priorität von Stylesheets in CSS zu organisieren, wodurch mehrere CSS-Regeln in Schichten gruppiert und verwaltet werden können. Diese Regel ist besonders nützlich in großen Stylesheets oder Projekten mit mehreren externen Stylesheets, um CSS-Konflikte zu vermeiden.
In CSS-Stylesheets wird die Priorität normalerweise durch die 'Cascade' bestimmt, aber durch die Verwendung von @layer
kann die Stilpriorität flexibler und expliziter gesteuert werden.
Grundlegende Syntax
1@layer <layer-name> {
2 /* Styles within this layer */
3}
- Wenn Sie Stile mit
@layer
definieren, sieht die Syntax so aus.
1@layer reset {
2 h1 {
3 margin: 0;
4 }
5}
6@layer base {
7 h1 {
8 font-size: 24px;
9 color: blue;
10 }
11}
12@layer theme {
13 h1 {
14 color: red;
15 }
16}
- Zum Beispiel können Sie Stile in verschiedenen Layern wie folgt definieren:
- In diesem Fall werden die
reset
-,base
- undtheme
-Schichten jeweils definiert, und der endgültigeh1
-Stil wird durch den Inhalt dertheme
-Schicht bestimmt, was dazu führt, dasscolor: red;
angewendet wird.
Priorität mehrerer Layer
Die mächtige Funktion von @layer
besteht darin, die Priorität der Stile zwischen Schichten zu verwalten. Im obigen Beispiel überschreibt die zuletzt definierte theme
-Schicht die in anderen Schichten definierten Stile.
Außerdem kann @layer
verwendet werden, um die Prioritätskaskade in externen Stylesheets oder CSS-Dateien, die aus anderen Bibliotheken geladen werden, zu verwalten.
Globale Priorität
1@layer theme, base, reset;
2
3@layer reset {
4 h1 {
5 margin: 0;
6 }
7}
8@layer base {
9 h1 {
10 font-size: 24px;
11 color: blue;
12 }
13}
14@layer theme {
15 h1 {
16 color: red;
17 }
18}
- Die Reihenfolge der Schichten hat innerhalb der CSS-Cascade Vorrang, wobei später definierte Stile überwiegen. Sie können beispielsweise die Reihenfolge der Schichten ausdrücklich festlegen, indem Sie sie wie folgt schreiben.
- Dies stellt sicher, dass Styles in der Reihenfolge
theme
,base
undreset
angewendet werden, selbst wenn dietheme
-Ebene zuerst definiert wurde.
Verwendung von @import
mit @layer
1@import url('css/reset.css') layer(reset);
2@import url('css/base.css') layer(base);
3@import url('css/theme.css') layer(theme);
- Durch die Kombination von
@import
und@layer
ist es auch möglich, Schichten in externen Stylesheets zu verwalten. - Dadurch können externe Stylesheets in verschiedenen Schichten platziert und deren Priorität verwaltet werden.
Wichtige Punkte zu @layer
@layer
ist ein mächtiges Werkzeug im CSS-Stilmanagement und bietet eine praktische Methode, um Stilkonflikte in großen Projekten zu vermeiden. Es ist besonders bemerkenswert, um Stilprioritäten prägnant zu verwalten, wenn mehrere Stilquellen verwendet werden. Es ist sinnvoll, die folgenden Punkte zu beachten.
- Durch die Trennung von Stilen in Schichten können Sie die Priorität der Cascade steuern.
- Durch die Verwendung zusammen mit
@import
können externe CSS-Dateien in die Schichtverwaltung einbezogen werden. - Das Definieren mehrerer Ebenen kann Stilkonflikte verhindern.
Dies minimiert Stilkonflikte und ermöglicht ein effizientes Design, selbst in Projekten, die ein komplexes Stilmanagement erfordern.
Beispiele für die Verwendung von @layer
Bei der Verwendung von @layer
können Aspekte wie Benennungsrichtlinien für Layer, Importreihenfolge und die Anzahl der Layer, die zum Umfang des Projekts passen, berücksichtigt werden.
Benennung von Layern
Layer-Namen werden auf der Grundlage der Struktur und des Zwecks des Projekts festgelegt. Häufige Beispiele für die Benennung von Layern umfassen Folgendes:.
1@layer base, layout, components, utilities;
base
: Ein Layer, der grundlegende Stile wie Resets und Typografie definiert.layout
: Ein Layer, der die Stile für Seitenlayouts und Rastersysteme definiert.components
: Ein Layer, der die Stile für wiederverwendbare UI-Komponenten wie Buttons und Karten definiert.utilities
: Ein Layer, der Stile für Dienstklassen (z. B.margin
,padding
,text-center
) definiert.
Klar definierte Importreihenfolge
1@import url('base.css') layer(base);
2@import url('layout.css') layer(layout);
3@import url('components.css') layer(components);
4@import url('utilities.css') layer(utilities);
- Beim Umgang mit mehreren CSS-Dateien ist es wichtig, eine klare Reihenfolge mit
@import
festzulegen. Diese Reihenfolge stellt sicher, dass die beabsichtigte Priorität eingehalten wird.
Konsolidierung und Vereinfachung von Layern
1@layer common {
2 body {
3 margin: 0;
4 padding: 0;
5 box-sizing: border-box;
6 }
7
8 .container {
9 max-width: 1200px;
10 margin: 0 auto;
11 }
12}
- In kleineren Projekten kann die Begrenzung der Anzahl der Layer die Komplexität reduzieren.
Zusammenfassung
CSS-@
-Regeln sind mächtige Werkzeuge, die eine flexible Stil-Anwendung und Leistungsverbesserung im Webdesign unterstützen. @media
, @keyframes
und @supports
erleichtern das Styling unter Berücksichtigung von Geräteunterschieden und Browser-Kompatibilität. Zusätzlich ermöglichen @import
und @font-face
die effiziente Einbindung externer Ressourcen für eine ausdrucksstärkere Gestaltung.
Das Verstehen und korrekte Anwenden dieser @
-Regeln ermöglicht eine effektivere CSS-Programmierung.
Sie können den obigen Artikel mit Visual Studio Code auf unserem YouTube-Kanal verfolgen. Bitte schauen Sie sich auch den YouTube-Kanal an.