2013-01-03 13 views
19

Esiste un selettore CSS per il targeting di elementi con stili in linea? Quindi posso scegliere come target la prima span ma non la seconda con i CSS?Selettore CSS per elemento all'interno di un elemento con stile in linea?

In caso contrario, è possibile farlo con jQuery?

http://jsfiddle.net/TYCNE/

<p style="text-align: center;"> 
    <span>target</span> 
</p> 

<p> 
    <span>not target</span> 
</p> 
​ 
+0

Dipende. Ti interessa solo la presenza dell'attributo inline style o devi selezionare uno stile inline specifico? Selezionando semplicemente l'attributo è semplice e affidabile, ma avendo uno stile in linea specifico ... non tanto, a meno che tu non possa controllare il markup. – BoltClock

risposta

13
p[style="text-align: center;"] { 
    color: red; 
} 

Tuttavia questo è brutto.

+5

E fallisce, a meno che la stringa 'style' sia una corrispondenza * esatta *. –

+0

Più uno per il commento di David. Se il paragrafo ha altri stili associati, è necessario includerlo nella dichiarazione CSS. –

+0

Ho avuto un caso in cui IE ha ignorato tale regola. – Vlad

2

uso:

​p[style] span { 
    color: red; 
}​ 
27

Un po 'tardi al tea party, ma ho pensato di condividere la soluzione che ho trovato uso &.

@ la risposta di simone è perfetta se è possibile abbinare esattamente l'attributo di stile. Tuttavia, se avete bisogno di indirizzare un attributo stile in linea che può avere altri stili inline ad esso associati è possibile utilizzare:

p[style*="text-align:center;"] 

"* =" significa "corrisponda al seguente valore in qualsiasi punto l'attributo valore. "

Per ulteriori riferimento o informazioni più dettagliate su altri selettori vedere questo post del blog su css-tricks.com:

il magro su CSS selettori

http://css-tricks.com/attribute-selectors/#rel-anywhere

4

Se si farebbe come applicare gli stili a una particolare dichiarazione di regole, puoi anche usare lo stile *. Questo corrisponderà a tutti gli elementi che hanno lo stile in linea, indipendentemente dal valore applicato.

div[style*="background-image"] { 
    background-size: cover; 
    background-repeat: no-repeat; 
} 
Problemi correlati