多个类可以使用逗号分配给元素吗?
我刚刚在一个网站上讨论这个问题,即时通讯工作..它的东西之前没有见过,无法在任何地方找到任何解释,所以希望有人能解释。多个类可以使用逗号分配给元素吗?
所以我特地翻过了在下面的格式标记有2班的元素:
<div class = "class1, class2"></div>
我从来没有见过分配给元素像这样多个类..它看起来像一个选择对我来说..我希望他们能够加入这样的:(无逗号)
<div class = "class1 class2"></div>
这是有效的CSS刚才我从来没有遇到翻过还是我刚刚发现在页面上稍显怪异的错误?
根据规格,第一个是无效:
类= CDATA列表[CS]该属性分配一个类名称或一组 类名的元素。任何数量的元素都可以被分配到相同的类名或名称 。 多个类名称必须用 空格字符分隔。
第二个是有效的。
参考
的例子是不正确的语法。可接受的标记应该如下
<div class = "class1 class2"></div>
现在逗号分隔是在样式表
.class1, class2 {
some styling
}
可接受但是,这是用于处理类比显示的示例完全不同。
我想补充的额外信息一点点比迄今为止其他答案:
- 正确的语法(每个人都在说)是第二 - 用空格分开。
- 如果您使用第一个(以逗号分隔),那么后面紧跟逗号的类将不会应用,但其他任何类将会使用。例如:
<div class="class1, class2">
适用类2只到div。
<div class="class1 class2,">
适用class1的唯一
<div class="class1 , class2">
将成功申请两个类。
<div class="class1,class2">
将负载既不
请注意,此延伸超过两个类:class="class1 class2, class3"
适用的Class1和CLASS3,例如。
它发现您尝试添加的任何类名包含无效或未转义的特殊字符(请参阅Here和here)将不会加载,但不会阻止其他有效的类名加载。因为类是空格分隔的,所以DOM将"class1, class2"
解释为两个类class1,
和class2
,并且确定class1,
无效,因为,
是CSS中的特殊字符。
您可以使用data- *属性将类分配给用逗号分隔的任何元素,然后使用一些JavaScript自动指定删除逗号的类。从技术上讲,你存储在数据类属性(假设)中的类是一个整体字符串。你抓住该字符串使用字符串的split方法来存储从n-between中移除逗号的类名,并运行for循环来将值赋予rea类的'class'属性。
这里的剧本我coded-
//helper function which returns all the elements matching the selector passed as the argument
function $$(selector) {
var elements= document.querySelectorAll(selector);
return [].slice.call(elements);
}
//select all elements having [data-classes] attribute and the do the stuff
$$("[data-classes]").forEach(function(el) {
var dataClasses= el.getAttribute("data-classes");
var classes= dataClasses.split(",");
for(var i=0; i<classes.length; i++) {
el.classList.add(classes[i]);
}
});
现在,你可以不喜欢这个 -
<button data-classes="button,button-large,button-fancy">You Button</button>
(包括逗号/类名之间没有空格)
注意:确保该脚本包含在<head>
中的所有内容的顶部,以便它在加载页面时运行的第一件事情,即使在所有CSS之前文件。
没有错误。 **第二选项**是有效的,它总是这样做的。 – nicael
对不起,你的意思是添加这样的选择器
有效吗? – Ash“必须具有一个值,该值是由代表该元素所属的各种类的**空格分隔**标记组成的”http://www.w3.org/TR/html5/dom.html#classes –