html CSS / Sass:按数据属性的元素属性。 #css #sass
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html CSS / Sass:按数据属性的元素属性。 #css #sass相关的知识,希望对你有一定的参考价值。
<div class="app">
<div class="app--note note">
<ul class="note--list list">
<li class="list--li li" data-state="active">Item</li>
</ul>
</div>
</div>
/* =============================================
1. Element Layer
============================================ */
li {
/* defines generic li styles */
}
ul {
/* defines generic ul styles */
}
/* ================================================
2. Object Layer (IS-A)
================================================ */
.li {
/* overrides li stylex */
}
.li[data-state="active"] {
/* overrides li styles */
}
.list {
/* overrides ul styles */
}
/* ====================================================
3. Component Layer (HAS-A)
==================================================== */
.list {
/* overrides .list styles */
}
.list--li {
/* overrides .li styles */
}
.list--li[data-state="active"] {
/* overrides .li styles */
}
.note {
/* defines .note styles */
}
.note--list {
/* overrides .list styles */
}
.note--list .list--li {
/* overrides .list--li styles */
}
.note--list .list--li[data-state="active"] {
/* overrides .list--li stylex */
}
/* ========================================================
4. Application layer
======================================================== */
.app {
/* defines .app styles */
}
.app--note .note--list .list--li {
/* overrides .list--li styles */
}
.app--note .note--list .list--li[data-state="active"] {
/* overrides .list--li styles */
}
// ----
// Sass (v3.4.9)
// Compass (v1.0.1)
// ----
// HTML/CSS/Sass: Element Property by data attribute.
//
// SEE ALSO:
// CSS/Sass: Robust/Scalable Layered CSS Architecture
// http://sassmeister.com/gist/8e1941924605cc062020
//
// http://twitter.com/whizark
//
// Other ideas
// https://github.com/whizark/xass#ideas
/* =============================================
1. Element Layer
============================================ */
li { /* defines generic li styles */ }
ul { /* defines generic ul styles */ }
/* ================================================
2. Object Layer (IS-A)
================================================ */
.li { /* overrides li stylex */ }
// `data-li-*` attribute represents its own property of .li
.li[data-state="active"] { /* overrides li styles */ }
// pseudo-code:
// var li = new Li();
// li.dataset.state = 'active';
// if (li.dataset.state === 'active') {
// li.style = { /* styles */ };
// }
// ANTI PATTERN:
// Do not use BEM-like syntax for a variant (`element--modifier`):
// .li--featured { /* variant styles of .li */ }
//
// Defines new name for a variant of object:
// .featured-li { /* variant styles of .li */ }
//
// Or defines it as its own property of .li:
// .li[data-type="featured"] { /* variant styles of .li */ }
.list { /* overrides ul styles */ }
/* ====================================================
3. Component Layer (HAS-A)
==================================================== */
.list { /* overrides .list styles */ }
.list--li { /* overrides .li styles */ }
.list--li[data-state="active"] { /* overrides .li styles */ }
.note { /* defines .note styles */ }
.note--list { /* overrides .list styles */ }
.note--list .list--li { /* overrides .list--li styles */ }
.note--list .list--li[data-state="active"] {
/* overrides .list--li stylex */
}
/* ========================================================
4. Application layer
======================================================== */
.app { /* defines .app styles */ }
.app--note .note--list .list--li {
/* overrides .list--li styles */
}
.app--note .note--list .list--li[data-state="active"] {
/* overrides .list--li styles */
}
<div class="app">
<div class="app--note note">
<ul class="note--list list">
<li class="list--li li" data-state="active">Item</li>
</ul>
</div>
</div>
以上是关于html CSS / Sass:按数据属性的元素属性。 #css #sass的主要内容,如果未能解决你的问题,请参考以下文章
sass学习入门篇
Sublime Text 3 中的 Sass + CSS3 + CSS Comb
处理元素(jQuery)
css选择器详解
如何在所有站点上仅使用 css 获取具有相同数据属性的元素?
前端编码规范—— CSS 和 Sass (SCSS) 规范