Come configurare smartphone e PC. Portale informativo
  • casa
  • Programmi
  • Come spostare elementi in css. Gli elementi in linea posizionati in modo assoluto diventano a livello di blocco

Come spostare elementi in css. Gli elementi in linea posizionati in modo assoluto diventano a livello di blocco

In HTML, tutti gli elementi possono essere divisi in blocchi e in linea. Gli elementi del blocco sono generalmente rappresentati come aree rettangolari con alcune informazioni. Con il loro aiuto, viene costruita la griglia della pagina. Tali elementi occupano tutto lo spazio a loro disposizione in larghezza e di solito c'è un'interruzione di riga prima e dopo di essi. I blocchi possono essere impostati su rientri, dimensioni orizzontali e verticali.

Caratteristiche degli elementi di blocco

I tag di blocco includono tag che evidenziano una grande quantità di informazioni di testo:

,
,

,

,

,
    ... Etichetta
    viene spesso utilizzato nel layout dei siti moderni per creare griglie e denota semplicemente una sorta di blocco o contenitore. È consentito nidificare altri tag al suo interno, il che non è possibile con tutti gli elementi del blocco, quindi
    comodo da usare. I blocchi sono generalmente impilati uno sopra l'altro e non sono annidati all'interno di elementi in linea. Gli elementi in linea HTML includono il testo e il CSS viene utilizzato per modellarlo.

    Per una data larghezza del contenuto, la larghezza totale del blocco è la somma del padding sinistro e destro, dei margini, dei bordi e della larghezza. Ad una determinata altezza, dall'imbottitura superiore e inferiore, dai margini, dai bordi e dall'altezza. Il testo negli elementi del blocco è allineato a sinistra per impostazione predefinita. Se uno di essi contiene elementi in linea insieme a elementi di blocco, viene creato un blocco anonimo attorno agli elementi in linea. Ad esso verrà applicato lo stile predefinito. Erediterà anche lo stile dato assegnato al suo genitore.

    Flusso di documenti

    Il flusso si riferisce all'ordine in cui vengono visualizzati gli elementi della pagina, come determinato dalle proprietà specificate nei CSS. In questo caso, per impostazione predefinita, i blocchi sono allineati dall'alto verso il basso e i tag in linea, se non c'è abbastanza spazio, vengono spostati su una nuova riga e disposti dall'alto verso il basso e da sinistra a destra. La posizione di un elemento nella pagina dipende dalla sua posizione nel codice: più è alto, prima è. Ciascuno degli elementi del blocco appare come un rettangolo che allontana da sé quelli vicini. È possibile modificare questo comportamento utilizzando proprietà speciali. Allineare determinate caselle in CSS al centro o ai lati di un contenitore è chiamato posizionamento.

    Elementi di posizionamento

    La posizione dei blocchi può essere controllata utilizzando il posizionamento assoluto e relativo. Il posizionamento viene utilizzato per posizionare sezioni di grandi dimensioni su una pagina in un modo specifico per creare interfacce complesse, popup ed elementi decorativi. La proprietà principale utilizzata per posizionare le caselle nei CSS è position. Ha quattro proprietà principali:

    • parente;
    • assoluto;
    • fisso;
    • statico.

    Con il loro aiuto, puoi cambiare modalità di layout specificando uno dei quattro parametri: in alto, a destra, in basso o a sinistra. C'è anche una proprietà per ordinare i livelli: z-index. Il posizionamento con la proprietà statica di solito non viene utilizzato, poiché denota il posizionamento predefinito dei blocchi. Pertanto, l'uso di qualsiasi parametro non lo influenza in alcun modo. Le altre tre proprietà vengono utilizzate per il layout: relativo, assoluto, fisso.

    Posizionamento relativo

    Il posizionamento relativo dei riquadri nei CSS, ovvero la proprietà position:relative, significa che l'elemento può essere spostato e modificato dalla sua posizione originale. Un tale blocco rimane ancora nel flusso. In effetti, non è lui stesso ad essere spostato, ma la sua copia. Imposta i valori delle proprietà per specificare esattamente quanto il blocco si sposterà da un lato o dall'altro. Sono più spesso misurati in pixel. Ma è consentito utilizzare anche altre unità.

    Utilizzo di proprietà con posizionamento relativo

    La proprietà top sposta la copia di un blocco specifico verso l'alto o verso il basso del numero di pixel specificato nella proprietà. Quando lo si utilizza, gli elementi situati sotto o sopra rimangono al loro posto, poiché in effetti anche il blocco spostato non si sposta da nessuna parte.

    La proprietà inferiore sposta la casella nella direzione opposta alla proprietà superiore. Un valore positivo aiuta a spostarlo verso l'alto e un valore negativo lo sposta verso il basso. Le proprietà right e left spostano l'elemento rispettivamente a destra ea sinistra. Combinandoli tutti, puoi dare al blocco una posizione esatta sulla pagina spostandolo lungo gli assi delle coordinate verticali e orizzontali. Se aumenti i margini, verranno calcolati non dal bordo del blocco stesso, ma dal suo offset al lato della copia.

    Posizionamento assoluto

    Il posizionamento assoluto delle caselle in CSS è impostato dal valore assoluto della proprietà position. Un elemento posizionato in modo assoluto esce dal flusso del documento e viene sostituito da blocchi adiacenti. La larghezza di un tale elemento viene allungata in base al suo contenuto e puoi spostarla impostando determinati valori per le proprietà in alto, a sinistra, a destra, in basso. Il posizionamento assoluto del riquadro CSS è utile per le intestazioni. Ma position: absolute funziona non solo per gli elementi di blocco, ma anche per gli elementi in linea.

    Allineare gli oggetti al centro

    Un elemento posizionato assolutamente in linea si comporterà esattamente come un elemento in linea. Pertanto, l'utilizzo del posizionamento può essere controllato in CSS e testo. Alcune nuove proprietà possono essere applicate ad esso, ad esempio, per modificare l'altezza e la larghezza. I CSS utilizzano una combinazione di diverse proprietà per centrare e allineare verticalmente. Controlla l'allineamento verticale della proprietà superiore. Se vuoi posizionare un blocco in CSS al centro, il contenitore principale deve essere posizionato in modo relativo e l'elemento da allineare deve essere posizionato in modo assoluto. Il contenitore deve essere impostato sulla proprietà top: 50% e per spostare l'elemento a metà della sua altezza, utilizzare la proprietà translate con un valore di "0, -50%". Gli elementi posizionati in modo assoluto possono essere categorizzati in un nuovo tipo perché ad essi vengono applicate proprietà che non sono disponibili per altri tipi di posizionamento.

    Posizionamento relativo all'angolo in alto a sinistra del browser

    Le proprietà left, top, right e bottom funzionano in modo diverso con elementi posizionati in modo assoluto e relativo. Per gli elementi relativi, queste proprietà impostano l'offset relativo a dove si trova l'elemento. Assolutamente promosso occupa spazio relativo ad uno specifico sistema di coordinate legato alle dimensioni della finestra del browser. I punti di partenza di questo sistema sono gli angoli della finestra. Quando si utilizza la proprietà left, il riempimento verrà misurato dal lato sinistro del browser, ma la barra di scorrimento non verrà visualizzata. La proprietà top, quando posizionata in modo assoluto, imposta il padding dalla parte superiore del browser alla parte superiore dell'elemento a cui è applicata. Combinando entrambe le proprietà, l'elemento può essere spostato rispetto all'angolo superiore sinistro del browser.

    Posizionamento relativo all'angolo in alto a destra del browser

    Allo stesso modo, utilizzando le proprietà right e top, puoi bloccare un elemento sul lato destro della finestra del browser e modificarne la posizione verticalmente, spostandolo nell'angolo in alto a destra. Se il valore della proprietà di destra è negativo, il blocco si sposterà all'esterno del bordo della finestra. Successivamente, dovrebbe apparire una barra di scorrimento. La proprietà bottom viene utilizzata per spostare l'elemento verso il basso. Imposta il rientro dal bordo inferiore della finestra del browser alla parte inferiore del blocco. Se il valore è negativo, viene visualizzata anche una barra di scorrimento, poiché l'elemento viene spostato oltre il bordo inferiore della finestra del browser.

    Sistema di coordinate per posizionamento assoluto

    Per impostazione predefinita, tutti gli elementi con posizionamento assoluto sono ancorati allo stesso sistema di coordinate: la finestra del browser. Ma può essere modificato impostando il posizionamento relativo a qualsiasi elemento genitore. Quindi il blocco figlio cambierà la sua posizione a seconda del genitore. Se tra gli elementi genitori ve ne sono diversi con posizionamento relativo, allora il conteggio è da quello più vicino. In questo caso, il posizionamento predefinito sarà basato su quanto specificato nel tag body.

    L'origine di un elemento posizionato in modo assoluto

    Prima che a un elemento fosse assegnato un posizionamento assoluto, in qualche luogo veniva chiamato origine implicita. Se non vengono impostate proprietà per tale blocco, non si sposterà. Puoi compensarlo impostando la proprietà margin. Funziona allo stesso modo delle proprietà di posizionamento. Se non definisci il valore della proprietà left e di tutte le altre, allora sarà uguale ad auto. Inoltre, utilizzando auto, puoi riportare gli elementi nella loro posizione originale.

    Posizionamento fisso

    Un altro valore è fisso. La proprietà position ancora un elemento in una posizione specifica. Il posizionamento fisso viene spesso utilizzato per creare menu in CSS. Sembra un assoluto, ma il blocco fisso cade fuori dal flusso. Anche quando si scorre la pagina, tale elemento rimarrà al suo posto, quindi è conveniente usarlo per creare menu in CSS. Il punto di partenza sarà ancorato alla finestra del browser. Se sono presenti più blocchi posizionati, la proprietà z-index viene utilizzata per disporli. Consente di sovrapporre blocchi relativi a blocchi assoluti assegnando loro un indice intero appropriato. Più è grande, più alto sarà il blocco.

    18/02/15 21,4K

    Se tagli un sito web basato su html, vedrai una certa struttura a strati. Inoltre, nel suo aspetto, sarà simile a una pasta sfoglia. Se la pensi così, molto probabilmente non mangi da molto tempo. Quindi nutri prima la tua fame e poi ti mostreremo come centrare il livello div sul tuo sito:

    Vantaggi dell'etichettatura

    Esistono due tipi principali di costruzione di una struttura del sito:

    • tabulare;
    • Blocco.

    La disposizione dei tavoli è stata dominante sin dagli albori di Internet. I suoi vantaggi includono la precisione del posizionamento specificato. Ma, tuttavia, ha evidenti inconvenienti. I principali sono il volume del codice e la bassa velocità di download.

    Quando si utilizza un layout tabulare, la pagina Web non verrà visualizzata finché non sarà completamente caricata. Mentre quando si utilizzano blocchi div, gli elementi vengono visualizzati immediatamente.

    Oltre all'elevata velocità di caricamento, la costruzione a blocchi del sito consente più volte di ridurre la quantità di codice html. Anche attraverso l'uso di classi CSS.

    Tuttavia, il layout tabulare dovrebbe essere utilizzato per strutturare la visualizzazione dei dati su una pagina. Un classico esempio del suo utilizzo è la visualizzazione delle tabelle.

    Costruzione di blocchi basata sui tag

    chiamato anche strato per strato, e i blocchi stessi sono strati. Questo perché quando si utilizzano determinati valori di proprietà, possono essere impilati uno sopra l'altro, come i livelli in Photoshop.

    Ausili per il posizionamento

    Nel layout a blocchi, il posizionamento dei livelli viene eseguito al meglio utilizzando fogli di stile a cascata. La principale proprietà CSS responsabile del posizionamento

    , è un galleggiante.
    Sintassi della proprietà:
    float: sinistro | destra | nessuno | ereditare,
    In cui si:

    • left - allinea l'elemento a sinistra dello schermo. Il flusso attorno al resto degli elementi avviene a destra;
    • destra - allineamento a destra, flusso attorno ad altri elementi - a sinistra;
    • nessuno - non è consentito avvolgere;
    • inherit - eredita il valore dell'elemento genitore.

    Diamo un'occhiata a un esempio leggero di posizionamento div utilizzando questa proprietà:

    Blocco sinistro


    Ora proviamo ad utilizzare la stessa proprietà per posizionare il terzo div al centro della pagina. Ma sfortunatamente float non ha un valore centrale. E quando imposti un nuovo blocco sul valore di allineamento a destra oa sinistra, viene spostato nella direzione specificata. Pertanto, resta solo da impostare float: lasciato a tutti e tre i blocchi:


    Ma anche questa non è l'opzione migliore. Quando la finestra viene ridotta, tutti i livelli sono disposti in una riga verticalmente e quando la dimensione viene aumentata, si attaccano al bordo sinistro della finestra. Pertanto, è necessario un modo migliore per centrare l'allineamento del div.

    Strati di centraggio

    Nel prossimo esempio, utilizzeremo un livello contenitore in cui posizioneremo il resto degli elementi. Questo risolve il problema dei blocchi che si spostano l'uno rispetto all'altro quando la finestra viene ridimensionata. Il centraggio del contenitore al centro viene effettuato impostando le proprietà del margine su zero per il margine superiore e auto sui lati (margine: 0 auto):

    Blocco sinistro

    Blocco centrale


    Questo stesso esempio mostra come centrare un div orizzontalmente. E se modifichi leggermente il codice sopra, puoi ottenere l'allineamento verticale dei blocchi. Per fare ciò, devi solo modificare la lunghezza del livello del contenitore (ridurla). Cioè, dopo aver modificato il suo css, la classe dovrebbe apparire così:

    Dopo la modifica, tutti i blocchi si allineeranno rigorosamente in fila al centro. E la loro posizione non cambierà in nessuna dimensione della finestra del browser. Ecco come appare il centraggio verticale del div:


    Nell'esempio seguente, abbiamo utilizzato una serie di nuove proprietà CSS per centrare i livelli all'interno del contenitore:


    Una breve descrizione delle proprietà css e dei loro valori che abbiamo usato in questo esempio per centrare il div all'interno del div:
    • display: inline-block - Allinea un elemento di blocco a una linea e assicura che sia avvolto attorno a un altro elemento.
    • vertical-align: middle - allinea l'elemento al centro rispetto al genitore;
    • margin-left - imposta il margine a sinistra.

    Come creare un collegamento da un livello

    Sembra strano, ma è possibile. A volte può essere necessario un blocco div come collegamento durante la disposizione di vari tipi di menu. Diamo un'occhiata a un esempio pratico di implementazione di un livello di collegamento:

    Link al nostro sito


    In questo esempio, utilizzando la riga display: block, impostiamo il collegamento al valore dell'elemento block. E per rendere l'intera altezza del blocco div un collegamento, imposta l'altezza: 100%.

    Nascondere e mostrare elementi di blocco

    Gli elementi di blocco forniscono più opzioni per estendere la funzionalità dell'interfaccia rispetto al layout di tabella obsoleto. Capita spesso che il design di un sito web sia unico e riconoscibile. Ma per una tale esclusiva devi pagare con la mancanza di spazio libero.

    Ciò è particolarmente vero per la home page, che ha il costo più elevato di posizionamento degli annunci. Pertanto, c'è un problema dove "spingere" un altro banner pubblicitario. Allineare il div al centro della pagina non basta!

    Una soluzione più razionale è rendere nascosti alcuni blocchi. Ecco un semplice esempio di tale implementazione:

    Questo è un pulsante magico. Facendo clic su di esso si nasconderà o mostrerà il blocco nascosto.

    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 in questo modo: posizione: assoluta. Successivamente, il blocco perde le sue solite proprietà 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 definito il posizionamento assoluto? 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 posizione: relativo, allora l'offset si verifica rispetto al blocco padre.

    Blocco (posizione: assoluta; in basso: 0; a 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; alto: 0; destra: 10px;)

    #involucro (

    posizione: relativa;

    Blocco (

    posizione: assoluta;

    in alto: 0;

    a destra: 10px;

    In questo esempio, abbiamo prima scritto il posizionamento relativo al contenitore padre (relativo - a riguardo più avanti nell'articolo), quindi abbiamo 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 degli 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 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 avrete visto più di una volta sui siti quando, scorrendo, qualche banner non scompariva, ma continuava ad essere nella vostra zona di visibilità, come se si attaccasse ad 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 usuale 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 basta 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 regolata, lasciando un 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)

    Proprietà posizione ha i seguenti significati
    statico parente assoluto fisso
    Le proprietà vengono applicate solo insieme ad esso (eccetto position: static;)
    superiore parte inferiore Giusto sinistra
    Può essere presente contemporaneamente
    margine trasformare float (escl. posizione: assoluta; e posizione: fissa;)

    Aggiungi un tag vuoto davanti al div con class = "primer" -.

    introduzione

    Gli elementi in una pagina web occupano un po' di spazio. Per analogia con le navi nel gioco "Sea Battle". Dovrebbero esserci caselle vuote tra le navi - margini.

    Per posizionare un elemento sopra un altro, è necessario impostare un valore negativo per il margine. Ma poi il contenuto dei tag si sovrapporrà. Con l'aiuto delle proprietà di posizione e sono in qualche modo sollevate al livello 2.

    In ordine naturale, i tag in basso vengono mostrati sopra i tag in alto nel codice. Grazie allo z-index al livello 2, puoi definire tu stesso l'elemento visibile.


    Posizionamento statico - posizione: statico;

    posizione: statico è l'impostazione predefinita e sovrascrive relativo, assoluto e fisso. I valori delle proprietà superiore, inferiore, destra e sinistra vengono ignorati. In assenza di trasformazione, lo z-index viene ignorato.

    UN
    B
    V

    Posizionamento relativo - posizione: relativo;

    Verrà data priorità al blocco che assegniamo a position: relative. Il contenuto dell'elemento inferiore è nascosto.

    UN
    B
    V

    Per posizionare il blocco B sopra C, ma sotto A, non è sufficiente assegnare la posizione: relativa ad esso, perché nel codice è sotto il blocco A, il che significa che lo sovrapporrà.

    UN
    B
    V

    È inoltre necessario impostare lo z-index per l'elemento B e inferiore a quello del blocco A.

    UN
    B
    V

    Invece del margine durante il posizionamento relativo, a volte è meglio utilizzare le proprietà superiore, inferiore, destra e sinistra. Il punto di partenza per loro è la posizione iniziale dell'elemento. Allo stesso tempo, il blocco B continua a trovarsi come se il blocco A si trovasse nello stesso posto: gli lascia spazio vuoto. Pertanto, non è necessario evocare con un div vuoto ().

    UN
    B
    V

    Completa analogia con la proprietà

    UN
    B
    V

    Per elementi in linea

    Gli elementi in linea non vengono spostati in alto e in basso (). Solo in alto, in basso

    BUNB
    o
    BUNB

    B a b

    Posizionamento assoluto e fisso

    Sembrerebbe che il blocco con posizione: assoluto dovrebbe essere più alto di posizione: relativo, ma non è così, l'ordine naturale si applica qui. Ciò significa che z-index ti consentirà di selezionare l'elemento prioritario tra di loro.

    UN
    B
    V

    Il blocco C ignora la posizione originale del blocco B, perché con posizione: assoluta e posizione: fissa, l'elemento cessa di influenzare i tag adiacenti sia attraverso la sua larghezza / altezza, sia tramite float: sinistra.

    UN
    B
    V

    Tabella riassuntiva

    proprietà distintive posizione: statica; posizione: relativa;
    trasformare: tradurre ();
    posizione: assoluta; posizione: fissa;
    sovrapposizione è meglio non mettere gli elementi uno sopra l'altro gli elementi hanno la precedenza su statici. Gli altri valori sono gli stessi. Visibile sarà quello che è sotto nel codice o ha un grande z-index
    punto di riferimento in alto, a destra, in basso e a sinistra ignorato posizione originale dell'elementoil bordo dell'elemento genitoreil bordo della finestra del browser
    elementi intorno prendere in considerazione la posizione attuale dell'elementotenere conto della posizione originale dell'elemento ignora la posizione dell'elemento
    larghezza: 100%; questa è la larghezza elemento (per inline) / elemento padre (per blocco)elemento genitore con posizione non in un valore statico finestre del browser
    durante lo scorrimento dell'elemento della paginasi sposta "si attacca" alla posizione specificata della finestra del browser

    E ora, per consolidare il materiale, fai clic sui pulsanti all'inizio dell'articolo, pensa al motivo per cui si sono verificati tali cambiamenti.

    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
    • parte inferiore
    • 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 di 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 questo descrivendo le 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 bottom: 0 e left: 0, il suo antenato (casella rossa) 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 i 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 sue proprietà di larghezza e altezza 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 padding 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 comprendere meglio il posizionamento CSS e abbia chiarito le complessità sottostanti.

    Principali articoli correlati