2011-09-24 30 views
102

Mi piacerebbe indirizzare tutti gli elementi h1..h6 su una pagina. So che puoi farlo in questo modo ...CSS Target Tutti i tag H

h1, h2, h3, h4, h5, h6 { 
    font-size: 1.2em; 
} 

Questo può essere ottenuto utilizzando CSS3 o CSS4? Ad esempio:

[att^=h] { 
    font-size: 1.2em; 
} 

Se non possibile con CSS3 o 4, quali sono alcune alternative creative?

+0

+1 Mi piacerebbe molto anche questo. È esattamente lo stesso quando provi e selezioni solo input [tipo = testo] finendo con un lungo elenco di input [tipo = email], ecc. –

+5

Questo diventa sempre più noioso quando si seleziona 'h1 a: hover, h2 a: hover, h3 a: hover, h4 a: hover, ... ' – Vortico

risposta

76

No, un elenco separato da virgole è ciò che si desidera in questo caso.

+1

Grazie ragazzi, sembra che non ci sia scorciatoia facile purtroppo. Penso che rimarrò nella lista separata da virgole. Mi chiedevo solo se mi mancasse qualcosa di ovvio ... – SparrwHawk

+0

Essere così pratici fa ben poco per stimolare l'immaginazione e stimolare la creatività. –

34

Non è css di base, ma se si sta utilizzando meno (http://lesscss.org), si può fare questo usando la ricorsione:

.hClass (@index) when (@index > 0) { 
    [email protected]{index} { 
     font: 32px/42px trajan-pro-1,trajan-pro-2; 
    } 
    .hClass(@index - 1); 
} 
.hClass(6); 

Sass (http://sass-lang.com) vi permetterà di gestire questo, ma non permettete ricorsione; hanno @for sintassi per questi casi:

@for $index from 1 through 6 { 
    h#{$index}{ 
    font: 32px/42px trajan-pro-1,trajan-pro-2; 
    } 
} 

Se non si utilizza un linguaggio dinamico che compila a CSS come minore o Sass, si dovrebbe verificare una di queste opzioni. Possono davvero semplificare e rendere più dinamico lo sviluppo dei CSS.

+2

+1 per meno. meno è molto potente – Vnge

+0

Sarebbe bello che anche gli stili fossero un parametro in modo che tu possa usarlo per caratteri diversi dal font: D –

+0

sono quasi sicuro che sto digitando manualmente piuttosto che creare per loop in CSS come h1, h2, h3 ... richiede meno tempo, spazio ... più chiaro da capire ora e più tardi. –

25

Se stai usando SASS si potrebbe anche usare questo mixin:

@mixin headings { 
    h1, h2, h3, 
    h4, h5, h6 { 
     @content; 
    } 
} 

Utilizzare in questo modo:

@include headings { 
    font: 32px/42px trajan-pro-1, trajan-pro-2; 
} 

Edit: Il mio modo preferito di fare questo estendendo facoltativamente un selettore di segnaposto su ciascuno degli elementi di titolo.

h1, h2, h3, 
h4, h5, h6 { 
    @extend %headings !optional; 
} 

allora posso indirizzare tutte le linee di come vorrei indirizzare una singola classe, ad esempio:

.element > %headings { 
    color: red; 
} 
+2

Ora vorrei aver scelto SASS per questo progetto ..: P – Bill

+0

È un passo molto piccolo da SCSS a SCSS + Compass: http://compass-style.org/reference/compass/helpers/selectors/ - titoli ($ from, $ to) – Imperative

+0

Wow, ci siamo imbattuti in questo due anni dopo .. e la modifica sembra d'oro! Sono sicuro che capisco lo scopo del flag '! Optional' sull'estensione però? E non riesco a trovare nulla su Google ... – Bill

1

Per affrontare questo con vaniglia sguardo CSS per i modelli agli antenati dei h1..h6 elementi:

<section class="row"> 
    <header> 
    <h1>AMD RX Series</h1> 
    <small>These come in different brands and types</small> 
    </header> 
</header> 

<div class="row"> 
    <h3>Sapphire RX460 OC 2/4GB</h3> 
    <small>Available in 2GB and 4GB models</small> 
</div> 

Se può individuare il modello s potresti essere in grado di scrivere un selettore che bersaglia ciò che vuoi.Dato l'esempio sopra tutti h1..h6 elementi possono essere presi di mira combinando le :first-child e :not pseudo-classi da CSS3, disponibile in tutti i browser moderni, in questo modo:

.row :first-child:not(header) { /* ... */ } 

In futuro selettori di pseudo-classe avanzate come :has(), e subsequent-sibling combinators (~), fornirà un controllo ancora maggiore man mano che gli standard Web continueranno ad evolversi nel tempo.

Problemi correlati