42

私はこのHTMLコードを持っています:

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

CSS の幅を data-width 属性の値と同じに設定したい、たとえば次のようにします。

div {
    width: [data-width];
}

どこかでやってたのを見たけど思い出せない。ありがとう。

4

8 に答える 8

15

疑似型のコンテンツなしでデータ属性値を css に直接渡すことはできません。むしろ、この方法で行うことができます.. 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;
}
于 2013-08-18T15:33:30.783 に答える
8

インラインCSS 変数は、データ属性とほぼ同じくらい宣言型であり、現在では広くサポートさattr()れています。これをチェックしてください:

var elem = document.getElementById("demo");
var jsVar = elem.style.getPropertyValue("--my-var");
function next() {
  jsVar = jsVar % 5 + 1; // loop 1..5
  elem.style.setProperty("--my-var", jsVar);
}
.d1 {
  width: calc( var(--my-var) * 100px );
  background-color: orange;
}
.d2 {
  column-count: var(--my-var);
}
<button onclick="next()">Increase var</button>
<div id="demo" style="--my-var: 2">
  <div class="d1">CustomWidth</div>
  <div class="d2">custom columns number custom columns number custom columns number custom columns number custom columns number custom columns number custom columns number</div>
</div>

于 2019-11-10T00:29:03.390 に答える
1

私はこれを楽しんでいますが、jQuery ソリューションは次のようになります。

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 スケッチはこちら: http://cdpn.io/otdqB


一種の更新 幅プロパティに変数を渡したいので、探しているものではありません。この場合、クラスを使用することもできます。

HTML

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

CSS

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

スケッチはこちら: http://cdpn.io/jKDcH

于 2013-08-18T15:44:38.397 に答える
1

CSS は、特定の html 要素に関する静的なスタイル設定情報であり、その逆ではありません。CSS を使用して div の幅を設定する場合は、クラスを使用することをお勧めします。

HTML:

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

CSS:

.foo {
    width: 70px;
}

jsフィドル

于 2013-08-18T15:19:05.477 に答える
0

もう 1 つの方法は、CSS カスタム プロパティを style 要素と共に使用して、HTML から CSS に値を渡すことです。

div {
  width: var(--width);
  height: var(--height);
  background-color: var(--backgroundColor);
}
<div
  style="
    --width: 50px;
    --height: 25px;
    --backgroundColor: #ccc;
  "
></div>

<div
  style="
    --width: 100px;
    --height: 50px;
    --backgroundColor: #aaa;
  "
></div>

于 2020-04-07T09:06:29.140 に答える