Layout-relaterade CSS-egenskaper
Den här artikeln förklarar layout-relaterade CSS-egenskaper.
Du kan lära dig användningen och hur man skriver display
- och position
-egenskaper.
YouTube Video
HTML för förhandsgranskning
css-layout.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 Properties Example</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-layout.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS Properties For Layout</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header>
19 <h2>Layout Related Properties</h2>
20 </header>
21 <article>
22 <h3>display: block</h3>
23 <section>
24 <header><h4>CSS</h4></header>
25<pre class="sample">
26.block-element {
27 display: block;
28 width: 400px;
29 background-color: lightblue;
30 padding: 10px;
31 margin-bottom: 10px;
32}
33</pre>
34 <header><h4>HTML</h4></header>
35 <pre><div class="block-element">This is a block element.</div></pre>
36 <header><h4>HTML+CSS</h4></header>
37 <section class="sample-view">
38 <div class="block-element">This is a block element.</div>
39 </section>
40 </section>
41 </article>
42 <article>
43 <h3>display: inline</h3>
44 <section>
45 <header><h4>CSS</h4></header>
46<pre class="sample">
47span.inline-element {
48 background-color: lightgray;
49 padding: 10px;
50}
51
52div.inline-element {
53 display: inline;
54 background-color: lightblue;
55 padding: 10px;
56}
57</pre>
58 <header><h4>HTML</h4></header>
59<pre>
60<span class="inline-element">This is an inline element.</span>
61<div class="inline-element">div tag with "display: inline"</div>
62</pre>
63 <header><h4>HTML+CSS</h4></header>
64 <section class="sample-view">
65 <span class="inline-element">This is an inline element.</span>
66 <div class="inline-element">div tag with "display: inline"</div>
67 </section>
68 </section>
69 </article>
70 <article>
71 <h3>display: inline-block</h3>
72 <section>
73 <header><h4>CSS</h4></header>
74<pre class="sample">
75.inline-block-element {
76 display: inline-block;
77 width: 200px;
78 background-color: lightblue;
79 padding: 10px;
80}
81</pre>
82 <header><h4>HTML</h4></header>
83<pre>
84<span class="inline-element">This is an inline element.</span>
85<div class="inline-block-element">This is an inline-block element.</div>
86<span class="inline-element">Another inline element.</span>
87</pre>
88 <header><h4>HTML+CSS</h4></header>
89 <section class="sample-view">
90 <span class="inline-element">This is an inline element.</span>
91 <div class="inline-block-element">This is an inline-block element.</div>
92 <span class="inline-element">Another inline element.</span>
93 </section>
94 </section>
95 </article>
96 <article>
97 <h3>display: none</h3>
98 <section>
99 <header><h4>CSS</h4></header>
100<pre class="sample">
101div.none-element {
102 display: none;
103 background-color: lightblue;
104 padding: 10px;
105}
106</pre>
107 <header><h4>HTML</h4></header>
108 <pre><div class="none-element">This is a none element.</div></pre>
109 <header><h4>HTML+CSS</h4></header>
110 <section class="sample-view">
111 <div class="none-element">This is a none element.</div>
112 </section>
113 </section>
114 </article>
115 <article>
116 <h3>display: flex</h3>
117 <section>
118 <header><h4>CSS</h4></header>
119<pre class="sample">
120.flex-container {
121 display: flex;
122 justify-content: space-between;
123 background-color: lightgray;
124 padding: 10px;
125}
126
127.flex-container div {
128 width: 120px;
129 background-color: lightblue;
130}
131</pre>
132 <header><h4>HTML</h4></header>
133<pre>
134<div class="flex-container">
135 <div>Item 1</div>
136 <div>Item 2</div>
137</div>
138</pre>
139 <header><h4>HTML+CSS</h4></header>
140 <section class="sample-view">
141 <div class="flex-container">
142 <div>Flex item 1</div>
143 <div>Flex item 2</div>
144 </div>
145 </section>
146 </section>
147 </article>
148 <article>
149 <h3>display: inline-flex</h3>
150 <section>
151 <header><h4>CSS</h4></header>
152<pre class="sample">
153.inline-flex-container {
154 display: inline-flex;
155 width: 250px;
156 justify-content: space-between;
157 background-color: lightgray;
158 padding: 10px;
159}
160
161.inline-flex-container div {
162 width: 100px;
163 background-color: lightblue;
164}
165</pre>
166 <header><h4>HTML</h4></header>
167<pre>
168<span class="inline-element">Inline element</span>
169<div class="inline-flex-container">
170 <div>Inline Flex item 1</div>
171 <div>Inline Flex item 2</div>
172</div>
173</pre>
174 <header><h4>HTML+CSS</h4></header>
175 <section class="sample-view">
176 <span class="inline-element">Inline element</span>
177 <div class="inline-flex-container">
178 <div>Inline Flex item 1</div>
179 <div>Inline Flex item 2</div>
180 </div>
181 </section>
182 </section>
183 </article>
184 <article>
185 <h3>display: grid</h3>
186 <section>
187 <header><h4>CSS</h4></header>
188<pre class="sample">
189.grid-container {
190 display: grid;
191 grid-template-columns: repeat(2, 1fr);
192 gap: 10px;
193 background-color: #f3f3f3;
194 padding: 10px;
195 height: 200px;
196}
197.grid-container div {
198 background-color: lightblue;
199 border: 1px solid #aaa;
200 padding: 5px;
201 text-align: center;
202 width: 100px;
203}
204</pre>
205 <header><h4>HTML</h4></header>
206<pre>
207<div class="grid-container">
208 <div>Item 1</div>
209 <div>Item 2</div>
210 <div>Item 3</div>
211 <div>Item 4</div>
212</div>
213</pre>
214 <header><h4>HTML+CSS</h4></header>
215 <section class="sample-view">
216 <div class="grid-container">
217 <div>Item 1</div>
218 <div>Item 2</div>
219 <div>Item 3</div>
220 <div>Item 4</div>
221 </div>
222 </section>
223 </section>
224 </article>
225 <article>
226 <h3>display: inline-grid</h3>
227 <section>
228 <header><h4>CSS</h4></header>
229<pre class="sample">
230.inline-grid-element {
231 display: inline-grid;
232 grid-template-columns: 1fr 1fr;
233 gap: 5px;
234 background-color: lightblue;
235 padding: 5px;
236 width: 200px;
237 height: 150px;
238}
239.inline-grid-element div {
240 background-color: lightskyblue;
241 padding: 5px;
242 text-align: center;
243 border: 1px solid #ccc;
244 width: 80px;
245 height: 25px;
246}
247</pre>
248 <header><h4>HTML</h4></header>
249<pre>
250<span class="inline-element">This is an inline element.</span>
251<div class="inline-grid-element">
252 <div>Item 1</div>
253 <div>Item 2</div>
254 <div>Item 3</div>
255 <div>Item 4</div>
256</div>
257<span class="inline-element">Another inline element.</span>
258</pre>
259 <header><h4>HTML+CSS</h4></header>
260 <section class="sample-view">
261 <span class="inline-element">This is an inline element.</span>
262 <div class="inline-grid-element">
263 <div>Item 1</div>
264 <div>Item 2</div>
265 <div>Item 3</div>
266 <div>Item 4</div>
267 </div>
268 <span class="inline-element">Another inline element.</span>
269 </section>
270 </section>
271 </article>
272 <article>
273 <h3>display: table</h3>
274 <section>
275 <header><h4>CSS</h4></header>
276<pre class="sample">
277.table-container {
278 display: table;
279 border-collapse: collapse;
280 width: 100%;
281 height: 100%;
282}
283
284.table-row {
285 display: table-row;
286}
287
288.table-cell {
289 display: table-cell;
290 border: 1px solid #999;
291 padding: 8px;
292 text-align: center;
293 vertical-align: middle;
294 background-color: lightblue;
295}
296
297.header-row .table-cell {
298 font-weight: bold;
299 background-color: lightskyblue;
300}
301</pre>
302 <header><h4>HTML</h4></header>
303<pre>
304<section>
305 <div class="table-container">
306 <div class="table-row header-row">
307 <div class="table-cell">Header 1</div>
308 <div class="table-cell">Header 2</div>
309 </div>
310 <div class="table-row">
311 <div class="table-cell">Row 1, Cell 1</div>
312 <div class="table-cell">Row 1, Cell 2</div>
313 </div>
314 <div class="table-row">
315 <div class="table-cell">Row 2, Cell 1</div>
316 <div class="table-cell">Row 2, Cell 2</div>
317 </div>
318 </div>
319</section>
320</pre>
321 <header><h4>HTML+CSS</h4></header>
322 <section class="sample-view">
323 <div class="table-container">
324 <div class="table-row header-row">
325 <div class="table-cell">Header 1</div>
326 <div class="table-cell">Header 2</div>
327 </div>
328 <div class="table-row">
329 <div class="table-cell">Row 1, Cell 1</div>
330 <div class="table-cell">Row 1, Cell 2</div>
331 </div>
332 <div class="table-row">
333 <div class="table-cell">Row 2, Cell 1</div>
334 <div class="table-cell">Row 2, Cell 2</div>
335 </div>
336 </div>
337 </section>
338 </section>
339 </article>
340 <article>
341 <h3>display: list-item</h3>
342 <section>
343 <header><h4>CSS</h4></header>
344<pre class="sample">
345.list-item-element {
346 display: list-item;
347 list-style-position: inside;
348 list-style-type: disc;
349 margin-left: 20px;
350 background-color: lightblue;
351 padding: 10px;
352 height: min-content;
353}
354</pre>
355 <header><h4>HTML</h4></header>
356<pre>
357<div class="list-item-element">This is a list item element.</div>
358<div class="list-item-element">Another list item element.</div>
359<div class="list-item-element">Yet another list item element.</div>
360</pre>
361 <header><h4>HTML+CSS</h4></header>
362 <section class="sample-view">
363 <div class="list-item-element">This is a list item element.</div>
364 <div class="list-item-element">Another list item element.</div>
365 <div class="list-item-element">Yet another list item element.</div>
366 </section>
367 </section>
368 </article>
369 <article>
370 <h3>position</h3>
371 <section style="height: auto;">
372 <header><h4>position: static</h4></header>
373 <section class="sample-view">
374 <div class="static-element">This is a static element.</div>
375 </section>
376 <header><h4>position: relative; top: 10px; left: 20px;</h4></header>
377 <section class="sample-view">
378 <div class="relative-element">This is a relative element.</div>
379 </section>
380 <header><h4>position: absolute; top: 10px; left: 20px;</h4></header>
381 <section class="sample-view">
382 <div class="absolute-container">
383 <div class="absolute-element">This is an absolute element.</div>
384 </div>
385 </section>
386 <header><h4>position: fixed; bottom: 10px; right: 10px;</h4></header>
387 <section class="sample-view">
388 <div class="fixed-element">This is a fixed element.</div>
389 </section>
390 <header><h4>position: sticky; top: 0;</h4></header>
391 <section class="sample-view">
392 <div class="sticky-container">
393 <div style="width: 20px; height: 400px; background: linear-gradient(to top, red, blue);"></div>
394 <div class="sticky-element">This is a sticky element. Scroll down!</div>
395 </div>
396 </section>
397 </section>
398 </article>
399 </main>
400</body>
401</html>
{^ i18n 配置・レイアウト ^}
display
-egenskap
display
-egenskapen är en CSS-egenskap som definierar hur elementet visas. Den bestämmer i vilket format elementet renderas, såsom block, inline, flex, grid eller dolt.
display
-egenskapens värden
block
1.block-element {
2 display: block;
3 width: 400px;
4 background-color: lightblue;
5 padding: 10px;
6 margin-bottom: 10px;
7}
- Genom att ange
block
visas elementet som ett block-nivåelement. - Blockelement visas på en ny rad på sidan, vilket skjuter andra element till nästa rad.
- Typiska blockelement inkluderar
<div>
,<p>
,<h1>
,<section>
,<article>
med flera.
inline
1span.inline-element {
2 background-color: lightgray;
3 padding: 10px;
4}
5
6div.inline-element {
7 display: inline;
8 background-color: lightblue;
9 padding: 10px;
10}
- Genom att ange
inline
visas elementet som ett inlineelement. - Inlineelement visas på samma linje som angränsande element och är horisontellt justerade.
- Typiska inlineelement inkluderar
<span>
,<a>
,<strong>
med flera. - Inlineelement placeras på samma linje som andra inlineelement och visas kontinuerligt horisontellt, till skillnad från blockelement.
inline-block
1.inline-block-element {
2 display: inline-block;
3 width: 200px;
4 background-color: lightblue;
5 padding: 10px;
6}
- Anger man
inline-block
visas elementet som ett inline-element, men det har också blockelementsegenskaper. - Inline-block-element visas på samma linje som andra inlineelement, men du kan ställa in höjd och bredd som för blockelement.
<img>
,<button>
och<canvas>
-element beter sig sominline-block
som standard.
none
1div.none-element {
2 display: none;
3 background-color: lightblue;
4 padding: 10px;
5}
- Genom att ange
none
visas inte elementet. - Elementet blir helt osynligt och utesluts både från skärmen och layouten.
flex
1.flex-container {
2 display: flex;
3 justify-content: space-between;
4 background-color: lightgray;
5 padding: 10px;
6}
7
8.flex-container div {
9 width: 120px;
10 background-color: lightblue;
11}
- Anger man
flex
visas elementet som en flexbox-behållare. - Det används för att flexibelt arrangera och justera barnelement (flexobjekt).
- Genom att använda flexbox kan barnelement visas i rad, med marginaler och justering som automatiskt anpassas.
inline-flex
1.inline-flex-container {
2 display: inline-flex;
3 width: 250px;
4 justify-content: space-between;
5 background-color: lightgray;
6 padding: 10px;
7}
8
9.inline-flex-container div {
10 width: 100px;
11 background-color: lightblue;
12}
- Att specificera
inline-flex
visar elementet som en inline-flexbox-behållare. - Medan det har flexbox-egenskaper behandlas det som ett inline-element och visas på samma rad som andra element.
grid
1.grid-container {
2 display: grid;
3 grid-template-columns: repeat(2, 1fr);
4 gap: 10px;
5 background-color: #f3f3f3;
6 padding: 10px;
7 height: 200px;
8}
9
10.grid-container div {
11 background-color: lightblue;
12 border: 1px solid #aaa;
13 padding: 5px;
14 text-align: center;
15 width: 100px;
16}
- Att specificera
grid
visar elementet som en rutnätsbehållare. - Ett rutnätslayout kan tillämpas för att rada upp barn-element i rader och kolumner.
- Barn-element inom rutnätsbehållaren är snyggt arrangerade längs kolumner och rader.
inline-grid
1.inline-grid-element {
2 display: inline-grid;
3 grid-template-columns: 1fr 1fr;
4 gap: 5px;
5 background-color: lightblue;
6 padding: 5px;
7 width: 200px;
8 height: 150px;
9}
10.inline-grid-element div {
11 background-color: lightskyblue;
12 padding: 5px;
13 text-align: center;
14 border: 1px solid #ccc;
15 width: 80px;
16 height: 25px;
17}
- Att specificera
inline-grid
visar elementet som en inline-rutnätsbehållare. - Det använder rutnätslayoutsystemet och behandlas som ett inline-element.
table
1.table-container {
2 display: table;
3 border-collapse: collapse;
4 width: 100%;
5 height: 100%;
6}
7
8.table-row {
9 display: table-row;
10}
11
12.table-cell {
13 display: table-cell;
14 border: 1px solid #999;
15 padding: 8px;
16 text-align: center;
17 vertical-align: middle;
18 background-color: lightblue;
19}
20
21.header-row .table-cell {
22 font-weight: bold;
23 background-color: lightskyblue;
24}
- Att specificera
table
visar elementet som en tabell. Det har en layout som liknar HTML<table>
och dess barn-element behandlas som tabellceller. - Som i detta exempel, ställ in
display
-egenskapen för barnelement tilltable-row
ellertable-cell
.- När
table-row
anges beter sig elementet som en tabellrad (<tr>
). - När
table-cell
anges beter sig elementet som en tabellcell (<td>
).
- När
list-item
1.list-item-element {
2 display: list-item;
3 list-style-position: inside;
4 list-style-type: disc;
5 margin-left: 20px;
6 background-color: lightblue;
7 padding: 10px;
8 height: min-content;
9}
- Att specificera
list-item
visar elementet som en listpunkt. Det används på<li>
-element som vanligtvis används inom<ul>
eller<ol>
.
position
-egenskapen
1.static-element {
2 position: static;
3 background-color: lightblue;
4 padding: 10px;
5 margin-bottom: 20px;
6}
7
8.relative-element {
9 position: relative;
10 background-color: lightblue;
11 top: 10px;
12 left: 20px;
13 padding: 10px;
14 margin-bottom: 20px;
15}
16
17.absolute-container {
18 position: relative;
19 width: 500px;
20 height: 150px;
21 background-color: lightgray;
22 margin-bottom: 20px;
23}
24
25.absolute-element {
26 position: absolute;
27 top: 10px;
28 left: 20px;
29 background-color: lightblue;
30 padding: 10px;
31}
32
33.fixed-element {
34 position: fixed;
35 bottom: 10px;
36 right: 10px;
37 background-color: lightblue;
38 padding: 10px;
39}
40
41.sticky-container {
42 overflow: scroll;
43 height: 150px;
44 width: 500px;
45}
46
47.sticky-element {
48 position: sticky;
49 top: 0;
50 background-color: lightblue;
51 padding: 10px;
52}
position
är en egenskap som styr hur element är positionerade i CSS. Denna egenskap kan användas för att positionera element relativt eller absolut till deras förälder eller andra element, eller för att fixa dem på plats.
Värden för position
-egenskapen
static
1.static-element {
2 position: static;
3}
- I klassen
static-element
angesposition
somstatic
. Elementet är positionerat i det normala flödet. static
är standardvärdet. Omposition
inte är angiven, tillämpasstatic
.- Elementet positioneras enligt det normala dokumentflödet. Egenskaperna
top
,right
,bottom
,left
kan inte användas.
relative
1.relative-element {
2 position: relative;
3 top: 10px;
4 left: 20px;
5}
- I klassen
relative-element
ärposition
inställd pårelative
. Elementet flyttar sig relativt sin normala position. I detta exempel är det positionerat 10px nedåt och 20px till höger. - Genom att ange
relative
positioneras elementet relativt. Elementet flyttas från sin ursprungliga position till positionen som anges av egenskapernatop
,right
,bottom
,left
, och följer det normala dokumentflödet. - Ett element med relativ positionering lämnar utrymme på sin ursprungliga position även efter att det har flyttats.
- I detta exempel flyttas elementet 10 pixlar nedåt och 20 pixlar åt höger från sin ursprungliga position, men dokumentflödet bearbetas utifrån den ursprungliga positionen.
absolute
1.absolute-element {
2 position: absolute;
3 top: 10px;
4 left: 20px;
5}
- I klassen
absolute-element
ärposition
inställd påabsolute
. I detta exempel är elementet positionerat 10 pixlar ned och 20 pixlar till höger från det övre vänstra hörnet av dess förälder (eller vyn). - När
absolute
anges är elementet absolut positionerat i förhållande till dess förälder. Om föräldraelementetsposition
är inställd pårelative
,absolute
ellerfixed
, flyttas elementet baserat på föräldern med hjälp av egenskapernatop
,right
,bottom
,left
. Om inget föräldraelement hittas, positioneras det relativt hela sidan (vyfönstret). - Ett element med absolut positionering tas bort från det normala dokumentflödet och påverkar inte andra element.
fixed
1.fixed-element {
2 position: fixed;
3 top: 0;
4 right: 0;
5}
- I klassen
fixed-element
ärposition
inställd påfixed
. Genom att angefixed
positioneras elementet på en fast plats. Elementet är fast i visningsporten och flyttas inte när man skrollar. - Det används exempelvis för att hålla en sidhuvud eller navigeringsfält alltid synligt.
- I detta exempel är elementet fixerad till det nedre högra hörnet av skärmen och förblir där även när sidan rullas.
sticky
1.sticky-element {
2 position: sticky;
3 top: 0;
4}
- I klassen
sticky-element
ärposition
inställd påsticky
. - När
sticky
anges, positioneras elementet dynamiskt baserat på scrollning. Det följer det normala dokumentflödet, men när sidan scrollas "fastnar" elementet på en specifik position baserat på de angivna värdena förtop
,right
,bottom
ochleft
. sticky
beter sig som ett fixerat element inom ett visst intervall.- I detta exempel visas elementet på sin normala position, men när sidan scrollas till den angivna
top
-positionen, fastnar det på den positionen och följer scrollningen.
Egenskaperna top
, left
, bottom
, right
top
, left
, bottom
och right
är egenskaper för att kontrollera elementpositioner i CSS. Dessa egenskaper används tillsammans med position
-egenskapen för att ange hur mycket ett element ska flyttas i en viss riktning i förhållande till sin position.
Dessa egenskaper gäller dock endast när position
är inställd på relative
, absolute
, fixed
eller sticky
. I standardvärdet static
har dessa egenskaper ingen effekt.
Hur man använder top
, left
, bottom
, right
top
1.relative-element {
2 position: relative;
3 top: 20px; /* Positioned 20px from the top */
4}
top
-egenskapen anger hur långt ett element ska flyttas från toppen.- I det här exemplet flyttas elementet 20px ner från sin normala position.
left
1.absolute-element {
2 position: absolute;
3 left: 50px; /* Positioned 50px from the left */
4}
left
-egenskapen anger hur långt ett element ska flyttas från vänster.- I det här exemplet flyttas elementet 50px till höger från vänster.
bottom
1.fixed-element {
2 position: fixed;
3 bottom: 10px; /* Positioned 10px from the bottom */
4}
bottom
-egenskapen anger hur långt ett element ska flyttas från botten.- I det här exemplet är elementet fast 10px ovanför skärmens botten. Det förblir i den positionen även när man scrollar.
right
1.sticky-element {
2 position: sticky;
3 right: 20px; /* Positioned 20px from the right */
4}
right
-egenskapen anger hur långt ett element ska flyttas från höger.- I det här exemplet flyttas elementet 20px åt vänster från höger och är fast på den positionen under scrolling.
Relation till position
-egenskapen
relative
: Flyttar elementet med de angivna värdena förtop
,left
,bottom
,right
i förhållande till dess normala position.absolute
: Flyttar elementet till den angivna platsen förtop
,left
,bottom
,right
i förhållande till den närmaste föregångaren medposition
inställd pårelative
,absolute
ellerfixed
.fixed
: Fäster elementet på den angivna positionen i förhållande till viewporten (hela skärmen). Det förblir i den positionen även när man scrollar.sticky
: Elementet förblir i sin normala position tills det når en viss position under scrolling, då det "fastnar" på den positionen.
Du kan följa med i artikeln ovan med hjälp av Visual Studio Code på vår YouTube-kanal. Vänligen kolla även in YouTube-kanalen.