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) 规范