2014-09-17 21 views
6

In FX e IE il codice seguente crea due barre, ma quella blu è leggermente più larga della schermata del browser. Qualsiasi ridimensionamento lascerà una barra di scorrimento orizzontale con la coda della barra blu fuori dallo schermo a sinistra. Questo è ridotto da una pagina molto più grande e non posso rimuovere la posizione: elemento assoluto nell'originale. Qualcuno può capire come rendere la barra blu larga solo al 100% in modo che corrisponda a quella rossa e non causi una barra di scorrimento orizzontale? Qualche idea cosa c'è dietro questo comportamento? Sono perplesso. Grazie mille.posizione: assoluta rende un elemento hr più largo del 100%

<hr style="border:1px solid red; width:100%;"/> 
 
<hr style="position:absolute; border:1px solid blue; width:100%;" />

risposta

11

Semplicemente:

body {position:relative;} 

Demohttp://jsfiddle.net/qyvtzyfh/

Motivo:

In una descrizione semplificata molto breve, position:absolute; e width:100%; sull'elemento rendono la larghezza dell'elemento relativo al genitore immediato con un valore definito esplicitamente position:relative; o position:absolute;, nel tuo caso poiché non ce l'hai, ottiene la larghezza di il blocco iniziale contenente (che contiene anche l'elemento) anziché lo body, aggiungendo alla larghezza dell'elemento relativo a body (oltre alla sua posizione).

+1

Infatti, se non esiste un elemento antenato che abbia una 'posizione' diversa da' static', gli elementi posizionati 'absolute' rispetteranno il ** blocco contenente iniziale ** - non l'elemento '' - in quale si trova l'elemento radice; Se assegni ad una larghezza esplicita l'elemento '', [vedrai] (http://jsbin.com/hugede/1/edit) un elemento 'absolute'ly posizionato con la dichiarazione' right: 0' non rispettare la larghezza dell'elemento ''. Puoi trovare maggiori dettagli [qui] (http://stackoverflow.com/a/25866405/1725764) –

+0

@HashemQolami Vero, è per questo che ho detto "In una descrizione semplificata molto breve", parlando della situazione specifica del codice dell'OP non le definizioni generali del modello di box, ma ho aggiornato la risposta, grazie. – Arbel

+0

@Arbel Grazie per l'aggiornamento. Capisco il tuo punto di vista. Tuttavia IMO potrebbe causare un malinteso che probabilmente porterebbe i lettori a problemi. –

Problemi correlati