Proprietà CSS relative al layout
Questo articolo spiega le proprietà CSS relative al layout.
Puoi imparare l'utilizzo e come scrivere le proprietà display
e position
.
YouTube Video
HTML per Anteprima
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 配置・レイアウト ^}
Proprietà display
La proprietà display
è una proprietà CSS che definisce come viene visualizzato l'elemento. Determina in quale formato viene renderizzato l'elemento, come block, inline, flex, grid o nascosto.
Valori della proprietà display
block
1.block-element {
2 display: block;
3 width: 400px;
4 background-color: lightblue;
5 padding: 10px;
6 margin-bottom: 10px;
7}
- Specificando
block
, l'elemento viene visualizzato come elemento a livello di blocco. - Gli elementi a blocco vengono visualizzati su una nuova riga all'interno della pagina, spostando gli altri elementi alla riga successiva.
- Tipici elementi a blocco includono
<div>
,<p>
,<h1>
,<section>
,<article>
, ecc.
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}
- Specificando
inline
, l'elemento viene visualizzato come elemento inline. - Gli elementi inline vengono visualizzati sulla stessa riga degli elementi vicini e sono allineati orizzontalmente.
- Tipici elementi inline includono
<span>
,<a>
,<strong>
, ecc. - Gli elementi inline vengono posizionati sulla stessa riga di altri elementi inline e vengono visualizzati orizzontalmente in modo continuo, a differenza degli elementi a blocco.
inline-block
1.inline-block-element {
2 display: inline-block;
3 width: 200px;
4 background-color: lightblue;
5 padding: 10px;
6}
- Specificando
inline-block
, l'elemento viene visualizzato come elemento inline, ma possiede anche caratteristiche degli elementi a blocco. - Gli elementi inline-block vengono visualizzati sulla stessa riga di altri elementi inline, ma è possibile impostare altezza e larghezza come per gli elementi a blocco.
- Gli elementi
<img>
,<button>
e<canvas>
si comportano comeinline-block
per impostazione predefinita.
none
1div.none-element {
2 display: none;
3 background-color: lightblue;
4 padding: 10px;
5}
- Specificando
none
, l'elemento non viene visualizzato. - L'elemento diventa completamente invisibile ed è escluso sia dallo schermo che dal layout.
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}
- Specificando
flex
, l'elemento viene visualizzato come contenitore flexbox. - È utilizzato per organizzare e allineare in modo flessibile gli elementi figli (flex items).
- Utilizzando il flexbox, gli elementi figli possono essere visualizzati inline, con margini e allineamento regolati automaticamente.
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}
- Specificare
inline-flex
visualizza l'elemento come un contenitore flexbox in linea. - Pur possedendo caratteristiche flexbox, viene trattato come un elemento in linea e visualizzato sulla stessa riga degli altri elementi.
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}
- Specificare
grid
visualizza l'elemento come un contenitore a griglia. - Un layout a griglia può essere applicato per allineare gli elementi figli in righe e colonne.
- Gli elementi figli all'interno del contenitore a griglia sono disposti ordinatamente lungo colonne e righe.
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}
- Specificare
inline-grid
visualizza l'elemento come un contenitore a griglia in linea. - Utilizza il sistema di layout a griglia ed è trattato come un elemento in linea.
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}
- Specificare
table
visualizza l'elemento come una tabella. Ha un layout simile a<table>
in HTML e i suoi elementi figli vengono trattati come celle della tabella. - Come in questo esempio, imposta la proprietà
display
degli elementi figli sutable-row
otable-cell
.- Quando viene specificato
table-row
, l'elemento si comporta come una riga di tabella (<tr>
). - Quando viene specificato
table-cell
, l'elemento si comporta come una cella di tabella (<td>
).
- Quando viene specificato
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}
- Specificare
list-item
visualizza l'elemento come un elemento di lista. È applicato agli elementi<li>
comunemente usati all'interno di<ul>
o<ol>
.
Proprietà position
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
è una proprietà che controlla come gli elementi sono posizionati in CSS. Questa proprietà può essere utilizzata per posizionare gli elementi in modo relativo o assoluto rispetto al loro genitore o ad altri elementi, oppure per fissarli in un punto specifico.
Valori della proprietà position
static
1.static-element {
2 position: static;
3}
- Nella classe
static-element
, la proprietàposition
è specificata comestatic
. L'elemento è posizionato nel flusso normale. static
è il valore predefinito. Seposition
non è specificato, viene applicatostatic
.- L'elemento è posizionato secondo il normale flusso del documento. Le proprietà
top
,right
,bottom
,left
non possono essere utilizzate.
relative
1.relative-element {
2 position: relative;
3 top: 10px;
4 left: 20px;
5}
- Nella classe
relative-element
, la proprietàposition
è impostata surelative
. L'elemento si sposta rispetto alla sua posizione normale. In questo esempio, è posizionato 10px in basso e 20px a destra. - Specificando
relative
, l'elemento viene posizionato in modo relativo. L'elemento si sposta dalla sua posizione originale alla posizione specificata dalle proprietàtop
,right
,bottom
,left
, seguendo il normale flusso del documento. - Un elemento con posizione relativa lascia spazio nella sua posizione originale anche dopo lo spostamento.
- In questo esempio, l'elemento si sposta di 10 pixel verso il basso e 20 pixel a destra dalla sua posizione originale, ma il flusso del documento viene elaborato sulla base della posizione originale.
absolute
1.absolute-element {
2 position: absolute;
3 top: 10px;
4 left: 20px;
5}
- Nella classe
absolute-element
, la proprietàposition
è impostata suabsolute
. In questo esempio, l'elemento è posizionato a 10 pixel verso il basso e 20 pixel a destra rispetto all'angolo in alto a sinistra del suo elemento padre (o della finestra di visualizzazione). - Quando viene specificato
absolute
, l'elemento è posizionato in modo assoluto rispetto al suo elemento padre. Se la proprietàposition
dell'elemento padre è impostata surelative
,absolute
ofixed
, l'elemento si sposta in base a quel genitore utilizzando le proprietàtop
,right
,bottom
,left
. Se non viene trovato un elemento padre, viene posizionato rispetto all'intera pagina (viewport). - Un elemento con posizionamento assoluto viene rimosso dal normale flusso del documento e non influenza gli altri elementi.
fixed
1.fixed-element {
2 position: fixed;
3 top: 0;
4 right: 0;
5}
- Nella classe
fixed-element
, la proprietàposition
è impostata sufixed
. Specificandofixed
, l'elemento viene posizionato in una posizione fissa. L'elemento è fissato al viewport e non si sposta durante lo scorrimento. - Ad esempio, viene utilizzato per mantenere sempre visibile un'intestazione di pagina o una barra di navigazione.
- In questo esempio, l'elemento è fissato all'angolo in basso a destra dello schermo e rimane lì anche quando la pagina viene scorsa.
sticky
1.sticky-element {
2 position: sticky;
3 top: 0;
4}
- Nella classe
sticky-element
,position
è impostato susticky
. - Quando viene specificato
sticky
, l'elemento viene posizionato dinamicamente in base allo scrolling. Segue il normale flusso del documento, ma quando la pagina viene scorsa, l'elemento si "blocca" in una posizione specifica in base ai valori specificati ditop
,right
,bottom
eleft
. sticky
si comporta come un elemento fisso all'interno di un determinato intervallo.- In questo esempio, l'elemento viene visualizzato nella sua posizione normale, ma quando la pagina viene scorsa fino alla posizione specificata di
top
, si blocca in quella posizione e segue lo scrolling.
Proprietà top
, left
, bottom
, right
top
, left
, bottom
e right
sono proprietà per controllare la posizione degli elementi in CSS. Queste proprietà vengono utilizzate insieme alla proprietà position
per specificare di quanto spostare un elemento in una certa direzione rispetto alla sua posizione.
Tuttavia, queste proprietà si applicano solo quando position
è impostato su relative
, absolute
, fixed
o sticky
. Con il valore predefinito static
, queste proprietà non hanno alcun effetto.
Come utilizzare top
, left
, bottom
, right
top
1.relative-element {
2 position: relative;
3 top: 20px; /* Positioned 20px from the top */
4}
- La proprietà
top
specifica di quanto un elemento deve essere spostato dal bordo superiore.- In questo esempio, l'elemento si sposta di 20px verso il basso rispetto alla sua posizione normale.
left
1.absolute-element {
2 position: absolute;
3 left: 50px; /* Positioned 50px from the left */
4}
- La proprietà
left
specifica di quanto un elemento deve essere spostato dal bordo sinistro.- In questo esempio, l'elemento si sposta di 50px verso destra dal bordo sinistro.
bottom
1.fixed-element {
2 position: fixed;
3 bottom: 10px; /* Positioned 10px from the bottom */
4}
- La proprietà
bottom
specifica di quanto un elemento deve essere spostato dal bordo inferiore.- In questo esempio, l'elemento è fissato a 10px sopra il bordo inferiore dello schermo. Rimane in quella posizione anche durante lo scorrimento.
right
1.sticky-element {
2 position: sticky;
3 right: 20px; /* Positioned 20px from the right */
4}
- La proprietà
right
specifica di quanto un elemento deve essere spostato dal bordo destro.- In questo esempio, durante lo scorrimento, l'elemento si sposta di 20px verso sinistra rispetto al bordo destro e rimane fisso in quella posizione.
Relazione con la proprietà position
relative
: Sposta l'elemento dei valori specificati ditop
,left
,bottom
,right
rispetto alla sua posizione normale.absolute
: Sposta l'elemento nella posizione specificata ditop
,left
,bottom
,right
rispetto all'antenato più vicino conposition
impostato surelative
,absolute
ofixed
.fixed
: Fissa l'elemento nella posizione specificata rispetto al viewport (l'intero schermo). Rimane in quella posizione anche durante lo scorrimento.sticky
: L'elemento rimane nella sua posizione normale fino a quando non raggiunge una posizione specificata durante lo scorrimento, a quel punto si "fissa" in quella posizione.
Puoi seguire l'articolo sopra utilizzando Visual Studio Code sul nostro canale YouTube. Controlla anche il nostro canale YouTube.