模块化css

Posted star

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模块化css相关的知识,希望对你有一定的参考价值。

模块化css是指把页面分割成不同的组成部分,这些组成部分可以在多种上下文中重复使用,并且互相之间没有依赖关系。当我们需要变更样式时不会影响到其它部分。

基础样式

默认的样式,是对单个元素选择器(包括其属性选择器,伪类选择器,孩子/兄弟选择器)的基础样式设置,例如html, body, input[type=text], a:hover, etc.推荐个base库-normalize.css,它消除了不同浏览器渲染的不同

html, body {
  margin: 0;
  padding: 0;
}

input[type=text] {
  border: 1px solid #999;
}

a {
  color: #039;
}

a:hover {
  color: #03C;
}

模块

页面拆分为不同的模块,给这些模块编写独立样式,模块与子模块之间一般以下横线连接

//下拉
.dropdown, .dropdown > ul {
  display: inline-block;
  border: 1px solid #283AE2;
}

.dropdown li:hover {
  background-color: #999;
}
//media
.media{padding:30px;background-color:#eeeee};
.media_title{
   font-size:16px;
   font-weight:bold
}

修饰类

对一个模块进行修饰,一般以双横线相连。下面以button模块为例

.btn{
  padding: .3em 1em;
  font-size: 14px;
  outline: none;
  color: #333333;
  cursor: pointer;
  border: 1px solid #eee
}
.btn--small{
  font-size: 12px;
}
.btn--large{
  font-size: 16px;
}

状态类(一般配合js来进行样式切换)

状态类一般以is-或者has-开头,这样的状态类一般来描绘模块当前状态下的一些特征。比如is-expanded、is-loading或者has-error

//input
input.is-error{
  color:red
}
//tab
.tabs {
  border: 1px solid #e8e8e8;
}
.tabs > .tab{
  color:#333333;
  border:none;
}
.tabs > .tab.is-active {
  border-bottom: 1px solid red;
  color: #29A288;
}

工具类

有时候我们需要一个类来做一件简单的事,比如让文字居中,让元素显示,隐藏,左浮动等

.text-align{
  text-align: center!important;
}
.float-left{
  float: left!important;
}
.show{
  display: block!important;
}
.hide{
  display: none!important;
}

这里用到了important,因为我们在使用这些工具类时肯定是为了它的样式,所以要把优先级提到最高,防止覆盖

注意点

1、千万不要使用基于页面位置的后代选择器

比如header和footer都有button,但是header中的是红色字体,那么我们不能写header .btn这样的类,而是应该给button增加修饰类btn--danger

.header .btn{
  color:red
}//错误写法
.btn--danger{
  color:red
}//正确写法

2、不要使用像buttn-20px这样精确的修饰符,会为后续修改带来很大的麻烦

3、不要滥用工具类,对于大部分网站来说,最多十几个工具类就足够了

4、页面开发时,应该是以css来驱动html设计。尽量使用css模块库中已经存在的模块来设计html模块结构,酌情使用修饰类来适应不同

以上是关于模块化css的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段7——CSS动画

VSCode自定义代码片段7——CSS动画

VSCode自定义代码片段6——CSS选择器

css常用代码片段 (更新中)

CSS代码片段

CSS代码片段