在声明css类或html div时使用变量

时间:2015-07-19 08:15:58

标签: javascript jquery html css

我需要在我的html代码中创建不定的div,并且它们之间只有一个特征(例如大小)不同。

所以,我现在正在做的是使用许多css类,每个类都有我需要的每个div的大小,以及一个包含div其余部分样式的类,声明为<div class="class1 class2"></div>。< / p>

我正在寻找一种方法来将变量合并到我的css或html中以避免声明很多类,从而可以直接在代码中更改大小,例如:

CSS
html { ... } 
.name {
 ...
content: ...;
font: ...;
border: ...;
}

.name_($var) {
 ...
height: ($var);
width: ($var);
}

HTML    
<div class="name name_10"></div> //div 1 size is 10px 10px
<div class="name name_20"></div> //div 2 size is 20px 20px
<div class="name name_50"></div> //div 3 size is 50px 50px
<div class="name name_80"></div> //div 4 size is 80px 80px

这样,就可以拥有任意数量的div,而不必为每个创建一个类。有没有办法只通过CSS和HTML实现这个目标?!如果没有,有什么可以帮助我用jq或js获得这个?

先谢谢你们,伙计们!

3 个答案:

答案 0 :(得分:1)

如果你真的只需要不同的大小或其他简单的css差异,那么为所有生成的div创建一个master-class,并在Javascript(或后端)中设置该class +内联样式,其中单个属性不同

...以这样结束HTML:

<div class="name" style="height:10px"></div>
<div class="name" style="height:20px"></div>

通过这种方式,您可以在JS(或后端)中完成所有工作,并且您的标记仍然相当简单。

答案 1 :(得分:1)

使用常规的旧CSS,你不能这样做。你应该考虑SASSLESS,如果你想开始进入CSS变量和这样的函数(以及其他一些整洁的东西)。

你可以使用jQuery内联它,如果你觉得自己很好地内联你的CSS并使用JS它。它不是很好但是做的工作。 :

<div class="name name_10"></div>
<div class="name name_20"></div>

jQuery的:

$('.name').each(function(){  
    var $this = $(this),
         size = $this.attr('class').split('_')[1]; // Split the number from the class

    $this.css({
       'width' : size + 'px',
       'height' : size + 'px'
    });
});

虽然这可能过度,但您可以在此时手动内联它们。

答案 2 :(得分:1)

你也可以尝试这样丑陋的东西:

function addCSS(name, css) {
    var style = document.getElementById("css");
    style.innerHTML += (name + " {" + css + "}");
}

var size = 20;
addCSS(".div1", "background:red; font-size:" + size + "pt;");
<style id="css"></style>

<div class="div1">div</div>