2011-09-20 11 views
6

ho implementato (una versione modificata di) di Gene Locklin 'profondità', che funziona bene, ecco il codice:Usando: prima /: dopo selettori per aggiungere margini attorno Elementi

body:before { 
    height: 10px; 
    width: 110%; 
    position: fixed; 
    top: -10px; 
    left: -10px; 
    z-index: 6; 
    -webkit-box-shadow: 0px 0px 10px rgba(0,0,0,0.8); 
    -moz-box-shadow: 0px 0px 10px rgba(0,0,0,0.8); 
    box-shadow: 0px 0px 10px rgba(0,0,0,0.8); 
    content: ""; 
} 

Ma vorrei usare the: before &: dopo i selettori per aggiungere margini o padding, si conosce una sorta di gap, per separare un modulo dal testo circostante.

Questo mi viene dopo che ho provato ad usare questi selettori per dare qualche spaziatura intorno a paragrafi specifici, senza successo ho girato lo styling di questi sulla base dei loro attributi di destinazione.

Mi rendo conto che i selettori sono stati progettati principalmente per facilitare l'auto-testo e che è perfettamente facile farlo con margini o riempimento (aggiunti a seguito di query di seguito), interruzioni di riga, span, una divisione vuota o anche utilizzando JavaScript per creare un elemento, e. Ma mi piacerebbe farlo con: prima dello &: dopo.

Ecco il codice di esempio che vorrei ottenere lavoro:

form:before { 
    height: 20px; 
    content: ""; 
} 

form:after { 
    height: 20px; 
    content: ""; 
    } 

possibilità penso possa essere la prevenzione di questa di lavorare ...: prima /: dopo la necessità di essere visualizzato come a livello di blocco in quanto sono normalmente in linea (ma la 'profondità' non ha bisogno di questo?) e/o: prima /: dopo richiede il posizionamento assoluto.

Grazie in anticipo per il vostro generoso contributo.

+1

Qualcosa che non va nella proprietà del margine? – animuson

+0

Sono con Animuson ... perché stai tentando di usare psuedo-elementi per aggiungere finte imbottiture? Basta usare correttamente le proprietà 'margin' e' padding' ... – Ben

+0

Assolutamente, perché è 'form {margin: 20px auto; } 'non funziona per te? – robertc

risposta

12

Provare a specificare display: block;. Non è necessario che siano position: absolute;.

form:after { 
    content: ' '; 
    display: block; 
    height: 20px; 
} 

form:before { 
    content: ' '; 
    display: block; 
    height: 20px; 
} 
+0

Se lo si specifica come 'display: block' implicherà già una 'larghezza 100%' (espandibile per riempire la larghezza disponibile). Non essere ridondante, per favore. – animuson

+0

Grazie, ci proverò. Supponendo che funzioni, perché display: il blocco è richiesto, il codice 'depth' funziona secondo il principio che eredita il 'display: block' dall'elemento body? –

+0

La proprietà 'display' non è ereditata. –

Problemi correlati