Come configurare smartphone e PC. Portale informativo
  • casa
  • OS
  • Posizionamento degli elementi. CSS - Posizionamento degli elementi del blocco

Posizionamento degli elementi. CSS - Posizionamento degli elementi del blocco

Dall'autore: Saluti. Il posizionamento degli elementi CSS è un argomento molto importante nella creazione di siti. In questo articolo, propongo di considerare in modo più dettagliato tutti i modi per spostare i blocchi nella pagina web.

Quali sono i tipi

Se parliamo del posizionamento degli elementi del blocco, allora viene impostato utilizzando la proprietà position. Ha quattro significati e ognuno merita una considerazione separata.

Posizionamento assoluto

Questa è la prima specie conosciuta. È impostato così: posizione: assoluta. Successivamente, il blocco perde le sue proprietà abituali e abbandona completamente il flusso normale. Cos'è questo flusso? Prova a mettere più elementi di blocco in fila nel markup. Come diventeranno? Uno dopo l'altro, e non altrimenti.

Questo è il normale comportamento predefinito dei blocchi. Ma cosa succede a un blocco che ha un posizionamento assoluto definito? Esce completamente dal flusso normale, altri blocchi semplicemente smettono di notarlo, come se non fosse mai esistito, ma l'elemento rimane sulla pagina. Il posizionamento assoluto in CSS viene spesso utilizzato per il posizionamento preciso di elementi decorativi, icone e altri elementi di design.

Ora può essere spostato utilizzando le proprietà sinistra, destra, superiore e inferiore. Per impostazione predefinita, il movimento avviene rispetto ai bordi della finestra del browser, ma se l'elemento padre ha position: relative, allora l'offset si verifica rispetto al blocco padre.

Blocco (posizione: assoluta; fondo: 0; destra: 0;)

Blocco (

posizione: assoluta;

in basso: 0;

destra: 0;

L'elemento verrà spostato nell'angolo inferiore destro. Noto che il pulsante in alto viene spesso fatto in questo modo: lo posizionano semplicemente nell'angolo. Ecco un altro esempio, in cui ti mostro prima il possibile markup:

< div id = "wrapper" >

< div class = "block" > < / div >

< / div >

E ora gli stili CSS per questo frammento:

#wrapper (posizione: relativa;) .block (posizione: assoluta; in alto: 0; a destra: 10px;)

#involucro (

posizione: relativa;

Blocco (

posizione: assoluta;

in alto: 0;

destra: 10px;

In questo esempio, abbiamo prima annotato il posizionamento relativo al contenitore padre (relativo - a riguardo - più avanti nell'articolo), quindi impostato il posizionamento assoluto per lo stesso elemento .block. Di conseguenza, le coordinate verranno conteggiate non dalla finestra del browser stessa, ma dai bordi dell'elemento padre, ovvero il blocco wrapper.

Posizionamento relativo di elementi css

Questa è la vista seguente ed è scritta così - position: relative. Le coordinate sono impostate con le stesse proprietà della posizione assoluta. L'unica differenza significativa è che l'elemento non cade formalmente fuori dal flusso: c'è spazio per questo.

Questo valore funziona come visibilità: nascosto, quando l'elemento è nascosto dalla pagina, ma lo spazio sottostante non viene toccato. Lo stesso accade con il posizionamento relativo: il blocco può essere spostato ovunque, ma lo spazio per esso rimane vuoto e le altre parti non lo prenderanno.

È anche importante sapere che l'offset non si verifica dai bordi della finestra del browser Web, ma da dove si trovava originariamente il blocco. Questo è:

Blocco (posizione: relativa; in alto: 10 px; a destra: 50 px;)

Blocco (

posizione: relativa;

in alto: 10px;

a destra: 50 pixel;

Il blocco si sposterà di 50 pixel a destra e di 10 pixel a sinistra.

Fissazione

Sicuramente su Internet, hai visto più di una volta sui siti quando, scorrendo, qualche banner non è scomparso, ma ha continuato a essere nella tua zona di visibilità, come se si attaccasse a un posto. Questo viene fatto principalmente utilizzando il posizionamento fisso. Per fare ciò, è necessario scrivere:

Posizione: posizione statica statica o normale

L'ultimo tipo è statico, questo è il comportamento normale degli elementi del blocco. Non è necessario scriverlo, perché è predefinito, ma è comunque necessario conoscere il quarto valore. A volte viene scritto con position: static per annullare un diverso tipo di posizionamento su determinati eventi della pagina web.

Come faccio a posizionare correttamente i blocchi in css?

Abbiamo considerato i significati, ma questo non è sufficiente per chiudere questo argomento a noi stessi. In realtà, è necessario capire dove e quali tipi di posizionamento dovrebbero essere applicati. Ti ho già fornito un esempio con uno fisso: puoi usarlo per creare barre laterali, intestazioni o piè di pagina appiccicosi.

Il posizionamento relativo può essere d'aiuto quando è necessario spostare leggermente un blocco rispetto alla sua posizione e mantenerlo comunque nel flusso. È anche impostato sui blocchi padre per utilizzare il movimento assoluto per i bambini.

Altri trucchi: centratura, blocchi flottanti

La proprietà position non risolve tutti i problemi con la disposizione degli elementi del blocco. Come creeresti, ad esempio, una griglia del sito utilizzandola? Non ho buone idee. Qui altre proprietà vengono in soccorso.

Le griglie sono spesso realizzate utilizzando float in css. La proprietà ti consente di spingere il blocco sul bordo sinistro o destro del genitore (float: left, float: right), consentendo a diversi elementi di blocco di diventare in una riga, cosa comune a qualsiasi sito.

La centratura viene eseguita in questo modo: il blocco deve scrivere una certa larghezza, quindi impostare il margine della proprietà: 0 su auto. È il valore automatico che lo allineerà orizzontalmente esattamente al centro. Naturalmente, per questo deve essere l'unico della sua linea, altrimenti non funzionerà nulla.

Tutti i tipi di posizionamento elencati in questo articolo possono essere utili per uno sviluppatore web. Da qualche parte l'icona deve essere inserita (posizione: assoluta), da qualche parte, la posizione del blocco dovrebbe essere leggermente corretta, lasciando il posto dietro di essa (posizione: relativa) e dove il widget dovrebbe essere fissato (posizione: fisso). In generale, la conoscenza di questa proprietà non sarà sicuramente superflua.

Bene, per imparare ancora di più dal mondo della costruzione di siti, assicurati di iscriverti al nostro blog e ricevere nuovi materiali di formazione. E ti consiglio anche di dare un'occhiata al nostro, dove viene sollevato anche un argomento simile. (posizionamento articolo)

Vlad Merzhevich

Il posizionamento si riferisce alla posizione di un elemento in un sistema di coordinate. Esistono quattro tipi di posizionamento: normale, assoluto, fisso e relativo. A seconda del tipo, che viene impostato tramite la proprietà position, cambia anche il sistema di coordinate.

Grazie alla combinazione delle proprietà position, left, top, right e bottom, un elemento può essere sovrapposto l'uno all'altro, visualizzato in un punto con determinate coordinate, fissato in un luogo determinato, determinare la posizione di un elemento rispetto a un altro, ecc. Come altre proprietà CSS, il controllo del posizionamento è disponibile tramite script. Così, puoi cambiare dinamicamente la posizione degli elementi senza ricaricare la pagina, creando animazioni e vari effetti.

Posizionamento normale

Se la proprietà position non è impostata per un elemento o è statica, l'elemento viene visualizzato come di consueto nel flusso del documento. In altre parole, gli elementi vengono visualizzati nella pagina nell'ordine in cui appaiono nel sorgente HTML.

Le proprietà left, top, right, bottom, se specificate, vengono ignorate.

Posizionamento assoluto

Con il posizionamento assoluto, l'elemento non esiste nel flusso del documento e la sua posizione è relativa ai bordi del browser. È possibile impostare questo tipo tramite il valore assoluto della proprietà position. Vengono specificate le coordinate relative ai bordi della finestra del browser, denominata "area visibile" (Fig. 3.42).

Riso. 3.42. Valori delle proprietà sinistro, destro, superiore e inferiore quando posizionato su assoluto

La modalità ha le seguenti caratteristiche.

  • La larghezza del livello, se non impostata in modo esplicito, è la larghezza del contenuto più i valori di margine, bordo e spaziatura interna.
  • Un livello non cambia la sua posizione originale se non ha le proprietà destra, sinistra, superiore e inferiore.
  • Le proprietà left e top hanno la precedenza sulle proprietà right e bottom. Se sinistra e destra si contraddicono, il valore di destra viene ignorato. Lo stesso vale per il fondo.
  • Se left è impostato su un valore negativo, il livello andrà oltre il bordo sinistro del browser e la barra di scorrimento non verrà visualizzata. Questo è un modo per nascondere un elemento dalla vista. Lo stesso vale per la proprietà superiore, solo il livello andrà oltre il bordo superiore.
  • Se left è impostato su un valore maggiore della larghezza dell'area visualizzabile o se right è specificato con un valore negativo, viene visualizzata una barra di scorrimento orizzontale. Una regola simile funziona con top, interessa solo la barra di scorrimento verticale.
  • Contemporaneamente, le proprietà sinistra e destra specificate formano la larghezza del livello, ma solo se la larghezza non è specificata. Aggiungi la proprietà width e il valore corretto verrà ignorato. Lo stesso accadrà con l'altezza del livello, solo le proprietà superiore, inferiore e altezza sono già coinvolte.
  • Un elemento posizionato in modo assoluto si sposta con il documento mentre scorre.

La proprietà position impostata su assoluto può essere utilizzata per creare un effetto cornice. Oltre al posizionamento assoluto, agli elementi deve essere assegnata la proprietà overflow con il valore auto. Quindi, quando il contenuto supera l'altezza dell'area visibile, apparirà una barra di scorrimento. L'altezza e la larghezza dei "frame" vengono generate automaticamente utilizzando contemporaneamente le proprietà left, right per la larghezza e top, bottom per l'altezza (esempio 3.31).

Esempio 3.31. Creare un analogo di frame

Posizionamento assoluto

pilaf . di Fergana

Mettere la carne tagliata a pezzi in un calderone e friggerla fino a formare una crosticina. Soffriggere la cipolla tagliata ad anelli insieme alla carne fino a farla diventare rossastra, quindi aggiungere le carote tagliate a listarelle. Aggiungere metà del sale, mescolare il tutto e friggere finché le carote non saranno dorate. Successivamente, versare metà della quantità d'acqua richiesta e far bollire.

Coprire il riso con uno strato uniforme, aumentare la fiamma e versare subito dell'acqua in modo che copra il riso di 1–1,5 cm.Appena l'acqua evapora, raccogliere il pilaf con un piano, andato a fondo. Quindi coprire il pilaf e lasciarlo riposare per 20-25 minuti.

Mescolare accuratamente il pilaf finito, trasferirlo in un piatto grande, distribuire sopra la carne.

Il risultato di questo esempio è mostrato in Fig. 3.43. Il livello dell'intestazione viene visualizzato nel flusso come di consueto e la barra laterale e i livelli del contenuto sono impostati sul posizionamento assoluto.

Riso. 3.43. Applicazione del posizionamento assoluto

In IE6, gli elementi posizionati in modo assoluto non possono essere impostati contemporaneamente sulle proprietà sinistra, destra e superiore e inferiore.

Il posizionamento assoluto viene utilizzato anche per creare vari effetti, come i suggerimenti per le foto. Al contrario dell'attributo title del tag che visualizza anche il testo del tooltip, tramite gli stili è possibile controllare l'aspetto del testo visualizzato tramite lo script.

Per prima cosa, creiamo un livello vuoto con l'ID floatTip e definiamo il suo stile. Devono essere richieste tre proprietà di stile: posizione con il valore assoluto, visualizzazione con il valore nessuno nasconde il livello e larghezza imposta la larghezza del livello suggerimento. Il resto delle proprietà viene utilizzato su richiesta dello sviluppatore e ha lo scopo di modificare l'aspetto del livello (esempio 3.32).

Esempio 3.32. Stile descrizione comandi

#floatTip (posizione: assoluta; / * Posizionamento assoluto * / larghezza: 250 px; / * Larghezza blocco * / display: nessuno; / * Nascondi dal display * / bordo: 1 px solido # 000; / * Opzioni cornice * / padding: 5 px ; / * Margini intorno al testo * / font-family: sans-serif; / * Sliced ​​font * / font-size: 9pt; / * Font size * / color: # 333; / * Text color * / background: # ECF5E4; /* Colore di sfondo */ )

Lo script stesso è costituito da due funzioni: moveTip () tiene traccia del movimento del mouse e cambia la posizione del livello in base alle coordinate del cursore e toolTip () controlla la visibilità del livello e visualizza il testo desiderato al suo interno (esempio 3.33).

Esempio 3.33. Script per l'output dei livelli

Document.onmousemove = moveTip; function moveTip (e) (floatTipStyle = document.getElementById ("floatTip"). style; w = 250; // Larghezza livello // Per browser IE if (document.all) (x = event.x + document.body.scrollLeft ; y = event.y + document.body.scrollTop; // Per altri browser) else (x = e.pageX; // coordinata X del cursore y = e.pageY; // coordinata Y del cursore) // Mostra livello a destra del cursore if ((x + w + 10)< document.body.clientWidth) { floatTipStyle.left = x + "px"; // Показывать слой слева от курсора } else { floatTipStyle.left = x - w + "px"; } // Положение от верхнего края окна браузера floatTipStyle.top = y + 20 + "px"; } function toolTip(msg) { floatTipStyle = document.getElementById("floatTip").style; if (msg) { // Выводим текст подсказки document.getElementById("floatTip").innerHTML = msg; floatTipStyle.display = "block"; // Показываем слой } else { floatTipStyle.display = "none"; // Прячем слой } }

Per comodità e versatilità, lo script dovrebbe essere posizionato in un file separato e connesso tramite l'attributo src del tag

Obiettivo "+": Canon EF 24-105 f/4L IS USM
Flash "+": Canon Speedlite 580 EX
"+" Esposizione: 1/125
Apertura: 5.6 ")" onmouseout = "toolTip ()" />

Il risultato di questo esempio è mostrato in Fig. 3.44. Si noti che i ritorni a capo nella chiamata alla funzione toolTip() servono per la leggibilità e utilizzano la sintassi JavaScript. In Safari, lo script a volte non funziona con il wrapping del testo, nel qual caso il testo dovrebbe essere scritto su una riga. Aggiunta la proprietà di opacità CSS3 agli stili, che aggiunge un po' di trasparenza al livello. Prima di IE 9.0, questa proprietà non è supportata.

Riso. 3.44. Tooltip reso con JavaScript

Posizione fissa

La posizione fissa del livello è impostata dalla proprietà Posizione fissa ed è simile in effetti al posizionamento assoluto. Ma a differenza di esso, si lega al punto specificato sinistro, superiore, destro e inferiore dello schermo e non cambia posizione durante lo scorrimento della pagina web. Un'altra differenza rispetto all'assoluto è che quando un livello fisso lascia l'area visibile a destra o al di sotto di esso, non vengono visualizzate barre di scorrimento.

Questo tipo di posizionamento viene utilizzato per creare menu, schede, intestazioni, in generale, tutti gli elementi che devono essere appuntati nella pagina e sempre visibili al visitatore. L'Esempio 3.35 mostra l'aggiunta di un piè di pagina, che rimane in un posto, indipendentemente dalla quantità di informazioni sul sito.

Esempio 3.35. Seminterrato fisso

XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx

Seminterrato fisso

Tutti i metodi per catturare un leone elencati nel sito sono teorici e basati su metodi computazionali. L'autore non garantisce la tua sicurezza durante l'utilizzo e declina ogni responsabilità per il risultato. Ricorda, il leone è un predatore e un animale pericoloso!

Il risultato dell'esempio è mostrato in Fig. 3.45. Poiché il piè di pagina fisso si sovrappone al testo e lo nasconde, abbiamo aggiunto il riempimento inferiore per il selettore BODY. IE6 non supporta il valore fisso, quindi questo esempio non funzionerà correttamente.

Riso. 3.45. Piè di pagina in fondo alla pagina

Posizionamento relativo

Se imposti la proprietà relativa della proprietà position, la posizione dell'elemento è relativa alla sua posizione originale. L'aggiunta delle proprietà sinistra, superiore, destra e inferiore modifica la posizione dell'elemento e lo sposta su un lato o sull'altro rispetto alla posizione originale. Un valore positivo per left specifica un offset a destra del bordo sinistro dell'elemento, un valore negativo specifica un offset a sinistra. Un valore positivo di top specifica lo spostamento dell'elemento verso il basso (Fig. 3.46), un valore negativo specifica lo spostamento verso l'alto.

Riso. 3.46. Valori delle proprietà sinistro e superiore per il posizionamento relativo

Le proprietà in basso ea destra hanno l'effetto opposto. Se il valore è positivo, right sposta l'elemento a sinistra del suo bordo destro, se è negativo, lo sposta a destra (Fig. 3.47). Un valore positivo di bottom sposta l'elemento verso l'alto e un valore negativo lo sposta verso il basso.

Riso. 3.47. Valori delle proprietà a destra e in basso per il posizionamento relativo

Il posizionamento relativo ha le seguenti caratteristiche.

  • Questo tipo di posizionamento non è applicabile agli elementi della tabella come celle, righe, colonne, ecc.
  • Quando un elemento viene spostato rispetto alla sua posizione originale, il posto occupato dall'elemento rimane vuoto e non viene riempito con elementi sotto o sopra.

L'Esempio 3.36 mostra lo spostamento verso il basso del testo dell'intestazione per dargli uno stile di scrittura speciale.

Esempio 3.36. Titolo del testo

XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx

Intestazione

Az e faggi della scienza dei caratteri

Il carattere tipografico è un mezzo per esprimere il design, non una lettura banale.

Il risultato di questo esempio è mostrato in Fig. 3.48.

Riso. 3.48. Spostare il testo dalla sua posizione originale

Strati annidati

Di solito, il posizionamento relativo stesso non viene utilizzato spesso, poiché ci sono un certo numero di proprietà che svolgono effettivamente lo stesso ruolo, ad esempio lo stesso margine. Ma combinare diversi tipi di posizionamento per i livelli nidificati è una delle tecniche di layout più convenienti e pratiche. Se imposti relativo per l'elemento genitore e assoluto per il figlio, il sistema di coordinate cambierà e la posizione dell'elemento figlio viene indicata rispetto al suo genitore (Fig. 3.49).

Riso. 3.49. Valori delle proprietà sinistro, destro, superiore e inferiore nei livelli nidificati

Le coordinate vengono contate dal bordo interno del bordo; i valori dei campi non vengono presi in considerazione. L'esempio seguente posiziona il testo nell'angolo inferiore destro di un livello vicino al bordo, ignorando la proprietà padding.

Testo

Usando le quattro proprietà sinistra, destra, alto, basso per controllare la posizione del livello interno, non è necessario conoscere la dimensione del livello genitore. Ciò espande l'ambito del posizionamento, quindi la posizione viene utilizzata abbastanza attivamente nel layout di vari elementi. Ad esempio, prendiamo la sovrapposizione di diverse informazioni su una foto: il numero di commenti, i collegamenti "Aggiungi commento", "Informazioni sull'autore" e "Aggiungi ai preferiti". In generale, il risultato dovrebbe essere qualcosa come la Fig. 3.50.

Riso. 3.50. Foto con elementi sovrapposti

Il codice stesso è mostrato nell'esempio 3.37. Il livello foto è impostato sul posizionamento relativo e i livelli interni img (output foto), commento (numero di commenti) e strumento (collegamenti nella parte inferiore della foto) sono impostati sul posizionamento assoluto.

Esempio 3.37. Posizionamento dei livelli

XHTML 1.0 CSS 2.1 CSS 3 IE 7+ IE 9+ Cr Op Sa Fx

Posizionamento dei livelli

134

Posizionamento blocchi css una delle fasi più importanti del layout, perché questo è ciò che influenza l'adattabilità del sito o la possibilità della sua implementazione in futuro (se non è richiesto al momento), e ha anche un impatto significativo sull'ulteriore ridimensionamento di il sito. Non è raro che "sfortunati progettisti di layout" creino un layout tale che alla fine sia più facile buttarlo via che cambiare qualcosa, ma allo stesso tempo può sembrare completamente conforme al layout. Questa situazione nasce dal non capire dove e quando utilizzare questo o quel tipo di posizionamento. Oggi cercheremo di capire questo problema. E così, in css c'è una proprietà posizione. Questa proprietà può assumere 5 valori, ma ne considereremo 4 principali:

  • assoluto
  • statico
  • parente
  • fisso

Posizionamento assoluto dei blocchi (assoluto)

Il primo della nostra lista è il metodo di posizionamento assoluto. Quando questa proprietà viene assegnata, il blocco diventa un'unità a sé stante e il resto degli elementi della pagina non influiscono sulla sua posizione, così come su altri elementi. La dimensione della casella è determinata dalle proprietà di larghezza e altezza e la posizione sulla pagina è determinata dalle proprietà in alto. left, right e bottom questi parametri impostano i margini dai bordi superiore, sinistro, destro e inferiore. Se il blocco non ha un elemento genitore, e anche se il posizionamento dell'elemento genitore è diverso da statico, allora le proprietà top, left, bottom, right impostano i rientri dall'inizio della pagina, altrimenti dai bordi della elemento genitore.

Molto spesso, questo tipo di posizionamento viene utilizzato quando il blocco deve essere premuto sul bordo destro o inferiore. Considera un layout come questo.

Per comodità, i blocchi sono stati evidenziati con una cornice multicolore. Il markup sarà simile a questo:

XHTML

Relazione (posizione: relativa;) .giallo (posizione: assoluta; destra: 10px; fondo: 10px;)

Relazione

posizione: relativa;

Giallo

posizione: assoluta;

destra: 10px;

in basso: 10 pixel;

In questo esempio, abbiamo usato le proprietà right e bottom per impostare il rientro dai bordi destro e bottom. Questi valori di proprietà sono equivalenti a top: Altezza elemento - 10 px e a sinistra: Larghezza elemento - 10 px.

Inoltre, il posizionamento assoluto viene talvolta utilizzato quando è necessario "scavalcare" un elemento su un altro.

Posizionamento statico

Il tipo più comune di posizionamento che si verifica su ogni pagina e di solito è impostato per la maggior parte degli elementi è statico, in css è scritto come statico. Per la maggior parte dei tag HTML, questo valore è definito per impostazione predefinita, ad es. se la posizione non è impostata in modo esplicito, il valore sarà statico. Con questa disposizione gli elementi sono allineati uno sopra l'altro e le coordinate nella finestra di ogni elemento dipendono dagli elementi più vicini con posizione: statica o posizione: relativa. Le proprietà top, left, right, bottom non funzioneranno con questo posizionamento, la posizione è cambiata a causa della proprietà margin.

Posizionamento relativo

Questo tipo di posizionamento è molto simile al posizionamento statico, tranne per il fatto che la posizione dell'elemento può essere modificata con le proprietà top, left, right, bottom e margin.

Posizionamento fisso

Il posizionamento fisso in base alle specifiche delle coordinate specificate è simile all'assoluto, ma la posizione viene calcolata non rispetto alla pagina HTML, ma rispetto alla finestra del browser, ad es. con top: 10px, imposterai il padding superiore a 10px DALLA FINESTRA DEL BROWSER e indipendentemente dal livello di scorrimento a cui ti trovi, questo elemento seguirà sempre il tuo schermo.

Solitamente utilizzato per elementi di navigazione, in modo che l'utente abbia sempre in vista informazioni importanti o collegamenti a pagine interessanti.

Gli sviluppatori Web di questi tempi possono creare layout complessi di pagine Web utilizzando varie tecniche CSS. Alcune di queste tecniche hanno una lunga storia (float), altre (flexbox) hanno guadagnato popolarità negli ultimi anni.

In questo articolo, daremo un'occhiata da vicino ad alcune delle cose poco conosciute sul posizionamento CSS.

Prima di iniziare, esaminiamo brevemente le basi dei diversi tipi di posizionamento.

Panoramica dei metodi di posizionamento disponibili

La proprietà position CSS determina il tipo di posizionamento di un elemento.

Opzioni di posizionamento

static è il valore predefinito della proprietà di posizionamento. Segnaliamo che questo elemento non utilizza il posizionamento - il posizionamento viene applicato solo se imposti un tipo di posizionamento diverso da quello predefinito.

Per fare ciò, imposta la proprietà position su uno dei seguenti valori:

  • parente
  • assoluto
  • fisso
  • appiccicoso

E solo dopo aver impostato il posizionamento, puoi utilizzare le proprietà che compensano l'elemento:

  • Giusto
  • metter il fondo a
  • Il valore iniziale per queste proprietà è la parola chiave auto.

Va tenuto presente che se un elemento ha la proprietà position impostata su absolute o fixed, allora è un elemento posizionato in modo assoluto. Inoltre, per gli elementi posizionati, inizia a funzionare la proprietà z-index, che determina l'ordine di sovrapposizione.

Differenze tra i metodi di posizionamento di base

Ora, esaminiamo rapidamente tre differenze fondamentali tra i tipi di posizionamento disponibili:

  • gli elementi posizionati in modo assoluto vengono completamente rimossi dal flusso e i loro vicini più prossimi prendono il loro posto.
  • relativamente posizionati (relativi) e incollati (appiccicosi) mantengono il loro posto nel ruscello e i loro vicini più prossimi non lo occupano. Tuttavia, l'imbottitura di questi elementi non occupa spazio, ma viene completamente ignorata da altri elementi e ciò può comportare la sovrapposizione di elementi.
  • gli elementi fissi (e il posizionamento fisso è una sorta di assoluto) sono sempre posizionati rispetto alla finestra (ignorando il posizionamento dell'antenato), mentre gli elementi incollati sono posizionati rispetto all'antenato in scorrimento più vicino (overflow: auto). E solo in assenza di tali antenati, sono posizionati rispetto alla zona di visibilità.

Questo può essere visto più in dettaglio nella demo:

Nota: il posizionamento degli "elementi colla" è ancora una tecnologia sperimentale con un supporto browser limitato. Naturalmente, se lo desideri, puoi utilizzare il polyfill per aggiungere questa funzionalità al browser, ma data la sua bassa prevalenza, questa proprietà non verrà discussa in questo articolo.

Elementi di posizionamento con tipo di posizionamento assoluto

Sono sicuro che la maggior parte delle persone sa come funziona il posizionamento assoluto. Tuttavia, molte cose al riguardo possono confondere i principianti.

Così ho deciso di iniziare con esso descrivendo caratteristiche di posizionamento poco conosciute.

Quindi, un elemento posizionato in modo assoluto è sfalsato dal suo antenato posizionato più vicino. Ovviamente, questo funziona se uno degli antenati ha una posizione diversa da statica - se l'elemento non ha antenati posizionati, è spostato dalla finestra.

Ciò è dimostrato dal seguente esempio:

In questa demo, la casella verde è inizialmente posizionata con margini assolutamente zero in basso: 0 e sinistra: 0, il suo antenato (riquadro rosso) non è stato posizionato affatto.

Tuttavia, abbiamo posizionato relativamente l'involucro esterno (un elemento jumbotron). Nota come cambia il posizionamento del riquadro verde quando cambia il tipo di posizionamento dei suoi antenati.

Gli elementi posizionati in modo assoluto ignorano la proprietà float

Se applichiamo il posizionamento assoluto o fisso a un elemento flottato, la proprietà float verrà impostata su none. Se invece impostiamo il posizionamento relativo, l'elemento rimarrà flottante.

Dai un'occhiata alla demo corrispondente:

In questo esempio, definiamo due elementi diversi per galleggiare a destra. Si noti che quando la casella rossa viene posizionata in modo assoluto, ignora il valore float, mentre la casella verde relativamente posizionata mantiene il valore float.

Gli elementi in linea posizionati in modo assoluto diventano a livello di blocco

Un elemento in linea con posizionamento assoluto o fisso assume le proprietà di un elemento di blocco. Per maggiori dettagli sulla conversione di elementi in linea in elementi di blocco, vedere la tabella.

In questo caso, abbiamo creato due elementi diversi. Il primo (blocco verde) è un elemento di blocco e il secondo (blocco rosso) è un elemento in linea. Inizialmente, è visibile solo il blocco verde.

La casella rossa non è visibile perché le proprietà di larghezza e altezza impostate su di essa funzionano solo su elementi di blocco e in linea e poiché non ha contenuto, non ha dimensioni.

Quando al blocco rosso viene assegnato un posizionamento assoluto o fisso, diventa blocco e le dimensioni del blocco specificate in esso diventano effettive.

Gli elementi posizionati in modo assoluto non hanno margini compressi

Per impostazione predefinita, quando due margini verticali si toccano, vengono uniti in uno uguale al massimo di essi. Questo è chiamato margini di collasso.

Gli elementi posizionati in modo assoluto si comportano in modo simile agli elementi flottanti: il loro riempimento non viene unito a quelli adiacenti.

In questa demo, l'elemento è impostato su un rientro di 20 pixel. Il suo padding collassa con il padding dell'elemento genitore, che è anch'esso di 20 pixel. Come puoi vedere, solo con il posizionamento assoluto non si verifica alcun collasso.

Ma come possiamo evitare che l'imbottitura crolli? Dobbiamo mettere una sorta di separatore tra di loro.

Può essere padding o border e può essere applicato sia a elementi padre che a elementi figlio. Un'altra opzione è aggiungere un clearfix all'elemento genitore.

Posizionamento di elementi con pixel e percentuali

Hai mai usato le percentuali invece dei pixel per posizionare gli elementi? Se la risposta è sì, allora sai che l'offset dell'elemento dipende dalle unità di misura selezionate (pixel o percentuale).

Questo è un po' imbarazzante, vero? Quindi, per prima cosa, vediamo cosa dice la specifica sull'offset in percentuale:

Offset come percentuale della larghezza (per sinistra e destra) o dell'altezza (superiore o inferiore) del riquadro principale. Per gli elementi incollati, l'offset viene calcolato come percentuale della larghezza (per sinistra e destra) o dell'altezza (superiore o inferiore) del flusso. Sono ammessi valori negativi.

Come accennato, quando si specifica un offset in percentuale, la posizione di un elemento dipende dalla larghezza e dall'altezza del suo genitore.

La demo mostra questa differenza:

Questo esempio utilizza pixel e percentuali per l'offset. Ovviamente, quando imposti l'offset in pixel, l'elemento viene spostato dove deve essere.

E se scegliamo una percentuale per l'offset, il risultato dipenderà dalla dimensione dell'elemento genitore. Ecco una visualizzazione che mostra come viene calcolata la nuova posizione:

Nota: come probabilmente saprai, la proprietà di trasformazione (insieme a varie funzioni di traduzione) ti consente anche di modificare la posizione di un elemento. Ma in questo caso, quando si utilizzano le percentuali, il calcolo si baserà sulla dimensione dell'elemento stesso e non sul suo genitore.

Conclusione

Spero che questo articolo ti abbia aiutato a capire meglio il posizionamento CSS e abbia chiarito le complessità sottostanti.

Funzionano su tutti gli elementi posizionati tranne quelli statici.

Esempio di posizionamento.

Gli elementi possono sovrapporsi tra loro!

Visualizzazione di un elemento sopra il resto!

La proprietà position ha 4 valori: statico, fisso, relativo e assoluto. Ciascuno di questi valori verrà illustrato di seguito con un esempio di utilizzo.

Prima di entrare nei dettagli su tutti i tipi di posizionamento degli elementi su una pagina, dovremo considerare cos'è il flusso di documenti.

Flusso di documenti

Per impostazione predefinita, gli elementi di una pagina Web vengono visualizzati nell'ordine in cui appaiono in un documento HTML, ovvero gli elementi di blocco occupano l'intera larghezza disponibile e sono impilati verticalmente uno sotto l'altro. Gli elementi in linea vengono allineati orizzontalmente fino a quando non viene occupata l'intera larghezza disponibile, dopo che l'intera larghezza è stata occupata, verrà effettuata un'interruzione di riga e tutto ricomincerà da capo. Questo ordine di disposizione degli elementi si chiama flusso normale(chiamato anche flusso di documenti o flusso generale).

Utilizzando la proprietà float o position, è possibile rimuovere un elemento dal flusso normale. Se un elemento "cade" dal flusso normale, gli elementi che si trovano nel codice sotto questo elemento verranno spostati al suo posto nella pagina web.

Posizionamento statico

Statico è il posizionamento predefinito per tutti gli elementi in una pagina web. Se la proprietà position non viene applicata a un elemento, sarà statica e verrà visualizzata nella pagina Web in base al flusso generale degli elementi.

Quando si applicano le proprietà CSS superiore, sinistra, destra o inferiore a un elemento posizionato staticamente, verranno ignorate.

Se necessario, puoi impostare il posizionamento statico nel foglio di stile utilizzando il valore statico:

Nome del documento

Primo paragrafo.

Secondo paragrafo.

Provare "

Posizionamento fisso

Gli elementi a posizione fissa sono posizionati sulla pagina relativa alla finestra del browser. Tali elementi vengono rimossi dal flusso generale, gli elementi che seguono l'elemento fisso nel flusso lo ignoreranno, spostandosi e prendendo il suo posto nella pagina web.

Si precisa che elementi a posizionamento fisso possono sovrapporsi ad altri elementi, nascondendoli in tutto o in parte. Quando scorrono pagine lunghe, creano l'effetto di oggetti fermi, rimanendo nello stesso posto:

Nome del documento

Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo
Provare "

Posizionamento relativo

Gli elementi posizionati in modo relativo, come gli elementi statici, rimangono nel flusso. Quando si applicano le proprietà in alto, a sinistra, a destra o in basso a elementi posizionati relativamente, questi verranno sfalsati dalla loro posizione, lasciando uno spazio bianco dove l'elemento era originariamente posizionato.

Tali elementi non influiscono sulla disposizione degli elementi circostanti, il resto degli elementi rimane al suo posto e può essere sovrapposto da un elemento relativamente posizionato:

Nome del documento

Titolo di primo livello.

Intestazione relativamente posizionata.

Titolo di terzo livello.

Provare "

Nota: gli elementi con posizionamento relativo (relativo) vengono solitamente utilizzati come genitore di elementi con posizionamento assoluto (assoluto).

Posizionamento assoluto

Gli elementi posizionati in modo assoluto vengono completamente rimossi dal flusso, il resto degli elementi occuperà lo spazio liberato, ignorando completamente gli elementi posizionati in modo assoluto. È quindi possibile posizionare l'elemento dove si desidera nella pagina Web utilizzando le proprietà in alto, a sinistra, a destra o in basso.

Tutti gli elementi posizionati in modo assoluto vengono posizionati rispetto alla finestra del browser o rispetto all'antenato posizionato più vicino (se presente) la cui proprietà position è impostata su assoluto, fisso o relativo.

Nome del documento

Cambiamo la posizione del logo usando il posizionamento assoluto.
Ora il logo si troverà nell'angolo in alto a destra della pagina.

Provare "

Elementi sovrapposti

Quando gli elementi sono fuori dal flusso generale della pagina, possono sovrapporsi l'uno all'altro. Di solito, l'ordine degli elementi corrisponde al loro ordine nel codice HTML della pagina, tuttavia, è possibile controllare l'ordine di sovrapposizione utilizzando la proprietà CSS z-index, maggiore è il suo valore, maggiore sarà l'elemento.

Nome del documento

indice z: 1;
indice z: 0;
indice z: 2;

Principali articoli correlati