2013-08-18 19 views
18

ho questo codice HTML:Ottenere valore dell'attributo in CSS

<div data-width="70"></div> 

voglio impostare la sua larghezza in CSS pari al valore di attributo data-larghezza, per esempio qualcosa del genere:

div { 
    width: [data-width]; 
} 

Ho visto questo è stato fatto da qualche parte, ma non riesco a ricordarlo. Grazie.

+0

Puoi usare questo 'var width = 70px;' poi nel codice puoi scriverlo come 'width: @width // asp.net web pages variable'. Sarebbe meglio usare lo stile nella testa della pagina non in un file separato. –

+5

Questo è stato proposto come CSS3 'attr()' ma non implementato. Non può essere raggiunto con CSS2 'attr()'. – BoltClock

risposta

31

questo è quello che cercavo:

https://developer.mozilla.org/en-US/docs/Web/CSS/attr

Il problema è che non è supportato nemmeno da alcuni dei principali browser, in questo caso Chrome.

+1

È sperimentale. –

+0

Ma questa è la risposta corretta. @amar potresti contrassegnarlo come quello corretto, come se fossi l'interrogante. – elboletaire

+5

quindi la risposta era '' 'width: attr (data-width);' '';) – svassr

2

I CSS sono informazioni di stile statico su elementi html specifici e non il contrario. Se si desidera utilizzare i CSS per impostare la larghezza del div Vi suggerisco di fare con l'uso di classi:

HTML:

<div class="foo"></div> 

CSS:

.foo { 
    width: 70px; 
} 

jsFiddle

8

Non puoi passare il valore dell'attributo dei dati direttamente in css senza contenuto di pseudo tipo. Piuttosto si può fare in questo modo .. CHECK THIS FIDDLE

<div data-width="a"></div><br> 
<div data-width="b"></div><br> 
<div data-width="c"></div> 

CSS

div[data-width="a"] { 
    background-color: gray; 
    height: 10px; 
    width:70px; 
} 
div[data-width="b"] { 
    background-color: gray; 
    height: 10px; 
    width:80px; 
} 
div[data-width="c"] { 
    background-color: gray; 
    height: 10px; 
    width:90px; 
} 
+2

Posso passarlo, l'ho visto prima. –

1

sto solo divertendo con questo, ma una soluzione jQuery sarebbe qualcosa di simile:

HTML

<div class='foo' data-width='70'></div> 
<div class='foo' data-width='110'></div> 
<div class='foo' data-width='300'></div> 
<div class='foo' data-width='200'></div> 

CSS

.foo { 
    background: red; 
    height: 20px; 
    margin-bottom: 10px; 
    width: 0; /** defaults to zero **/ 
} 

jQuery

$(document).ready(function(){ 
    $('.foo').each(function(i) { 
    var width = $(this).data('width'); 
    $(this).width(width); 
    }); 
}); 

Codepen schizzo qui: http://cdpn.io/otdqB


TIPO DI UN AGGIORNAMENTO Non è quello che stai cercando, dal momento che vuoi passare una variabile alla proprietà width. Potresti anche usare una classe in questo caso.

HTML

<div data-width='70'>Blue</div> 

CSS

div[data-width='70'] { 
    width: 70px; 
} 

Sketch qui: http://cdpn.io/jKDcH

+0

Ho già fatto questo in jQuery, ecco perché sto chiedendo un modo per farlo in css. –

+0

@AmarSyla Non c'è modo di farlo in CSS –

+0

Giuro che può essere fatto bro, forse con un plugin o qualcosa del genere, ma ho visto che il valore dell'attributo html è passato allo stile css. –

Problemi correlati