如何去组织你的CSS代码

1、Object Oriented CSS (OOCSS)

面向对象的 CSS。OOCSS 的想法首先要明白 CSS 的 “Object” 是个毛线玩意。

CSS的样式是需要应用到页面的结构上的。通俗的讲就是需要应用到HTML标签上。比如一个页面上的一个区域、控件、标签等,就是一个 Object ,大部分情况下,这种 Object 肯定是可以复用的。

常见的比如 Button按钮。视觉上就可能是一个图形按钮,然后我们可以在其上面添加各种样式,以获得我们想要的效果。

Tag : button
calss: btn

OOCSS 有个特点就是结构和样式是分开的,比如说一个渐变按钮,那么 .btn 的 class 是不会包含渐变相关的属性的,而是需要单独抽取出一个渐变的 class,然后让 .btn 去扩展从而得到一个渐变的按钮。

.btn {//结构
    ...
}
.btn.btn-info {//样式
    backgrond: green;
}//这似乎有点像Bootstrap的味道

就像官方说的那样,一个 Object 包含了四个部分:

  1. HTML ,会有一个到多个的 DOM 节点
  2. CSS , 用来表示上述节点的样式, 这些样式都会以最外面的包裹层 Node 的 class Name 开始
  3. 背景图片、或者其他的一些用来展示的资源组成的组件
  4. Javascript 的事件,行为等。

另一个特点在于,OOCSS 认为 container 和 content 是需要隔离开的(这里的container只是将一块区域包裹起来,并不具有任何特殊的意义)。也就是说,尽量不要去使用依赖于节点结构位置的样式定义。比如这样的就是不允许的:

.video-container .title{
  ...
}

OOCSS 中会建议你直接这样去写:也就是直接去写这个元素。

.title{
  ...
}

2、Block,Element,Modifier(BEM)

BEM是一套严格但合理的命名规范使得你的 class 保持一个较好的可读性和维护性。方便合作开发,别人容易读得懂你的代码,你也容易维护好你的样式。

格式为:

.block{}

.block__element{}

.block--modifier{}

格式大约就是如上所属那样,当然,有一点需要注意,多层 DOM 节点的情况下正确的写法应该是这样的:

<div class="block">
    <div class="block__e1">
       <button class="block__e2"></button>
    </div>
</div>

Stackoverflow 上有个特别好的解释对于 BEM 的说法点这里查看

简单说,就是 html 是一个 DOM树,那么你在写样式的的时候就写成一个 BEM树一一对应就可以了。看例子:

html:

<ul>
  <li>
     <a>
       <span></span>
     </a>
  </li>
</ul>

DOM树中有如下四个节点:

ul
ul>li
ul>li>a
ul>li>a>span

那么对应的我们就可以设计出如下的 BEM class:

<ul class="menu">
  <li class="menu__item">
    <a class="menu__link">
      <span class="menu__text"></span>
    </a>
  </li>
</ul>

3、参考文章

瞎扯扯OOCSS,ACSS,BEM,SMACSS

原文地址:https://www.cnblogs.com/yuliangbin/p/9474012.html

时间: 2024-10-15 10:28:45

如何去组织你的CSS代码的相关文章

20个编写现代CSS代码的建议

明白何谓Margin Collapse 不同于其他很多属性,盒模型中垂直方向上的Margin会在相遇时发生崩塌,也就是说当某个元素的底部Margin与另一个元素的顶部Margin相邻时,只有二者中的较大值会被保留下来,可以从下面这个简单的例子来学习: .square { width: 80px; height: 80px; } .red { background-color: #F44336; margin-bottom: 40px; } .blue { background-color: #2

如何写出优雅的CSS代码 ?(转)

对于同样的项目或者是一个网页,尽管最终每个前端开发工程师都可以实现相同的效果,但是他们所写的代码一定是不同的.有的优雅,看起来清晰易懂,代码具有可拓展性,这样的代码有利于团队合作和后期的维护:而有的混乱,虽然表达出了最终的效果,然而却晦涩难懂,显然团队成员在读这样的代码时就显得无从下手,更不利于后期的维护了.那么如何写出优雅的代码呢?下面我将以一个很小的项目就以下几个方面简单的表达一下自己的看法,如有不妥,望批评指正. 如何整理一个项目. 如何写出清晰易懂的HTML代码. 如何写出优雅的css代

实用的60个CSS代码片段

1.垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,可以很优雅的解决这个困惑: .verticalcenter{ position: relative; top: 50%; -webkit-transform: translateY(-50%); -o-transform: translateY(-50%); transform: translateY(-50%); } 使用这个技巧,从单行文本.段落到box,都会垂直对齐.目前浏览器

使用Ant和YUICompressor链接合并压缩你的JS和CSS代码

JS代码和CSS代码在上线前要压缩大家应该都是知道的了.记得之前做项目的时候,最后要交差的时候是找了个网站,将JS代码的文件一个一个地复制,粘贴,复制,粘贴. 当时就在想:TMD有没有好一点的方法,劳资不想老是用Ctrl大法.啊啊啊啊啊啊啊啊阿~.最最坑爹的是,有时候将代码复制粘贴的时候手一抖可能就删了点什么东西,手一快又保存了,反正各种坑爹.坑到没朋友. 但是呢,不压缩也不是是吧? 在写JS代码渐渐多了起来的时候就发现手动压缩根本不是长远的方法.而且JS的代码也开始分块,分功能,分文件写了,尽

css代码规范问题重要的有几个

很多人刚开始接触的时候都会遇到很多困难,其中规范的书写格式也较为明显:今天为大家带来一些CSS代码规范的知识. 1.良好的命名规范 ID和class的命名尽可能短,并符合语义.多个单词的拼接用 '-' 符号链接,尽量使用小写字母. 2.代码缩写 CSS代码缩写可以提高你写代码的速度,精简你的代码量. li{font-family:Arial, Helvetica, sans-serif; font-size: 1.2em; line-height: 1.4em; padding-top:5px;

60个有用的css代码片段

1.垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,可以很优雅的解决这个困惑: .verticalcenter{ position: relative; top: 50%; -webkit-transform: translateY(-50%); -o-transform: translateY(-50%); transform: translateY(-50%); } (ps:[译]如何实现CSS居中?–CSS居中常用方法) 使用这

页面定制CSS代码初探:页面变宽 文本自动换行 图片按比缩放

一.初识博客 初写博客,先在设置里选了个喜欢的模板 第一眼就爱上了呢!那极简的风格,我喜欢!!但是,应用后,却发现... 纳尼!模板上右侧那张漂亮的图片呢?!我的怎么什么都没有.没有图片好难看啊,瞬间无爱了,设置里找了下,->博客侧边栏公告 <-,在这里,放了张宽200px的图,好看多了马上,还是有图才不会那么单调~ 二.认识CSS 过了几天,打算写篇博,发现了一个重大的问题,怎么默认的宽度这么窄?那我放图片怎么办,而且,2边留那么多空白不浪费吗,留个5%就够了吧.于是乎,开始了2天的全折腾.

CSS代码重构

CSS代码重构的目的 我们写CSS代码时,不仅仅只是完成页面设计的效果,还应该让CSS代码易于管理,维护.我们对CSS代码重构主要有两个目的:1.提高代码性能2.提高代码的可维护性 提高代码性能 提高CSS代码性能主要有两个点:1.提高页面的加载性能提高页面的加载性能,简单说就是减小CSS文件的大小,提高页面的加载速度,尽可以的利用http缓存2.提高CSS代码性能不同的CSS代码,浏览器对其解析的速度也是不一样的,如何提高浏览器解析CSS代码的速度也是我们要考虑的 提高代码的可维护性 提高CS

CSS代码重构与优化之路

写CSS的同学们往往会体会到,随着项目规模的增加,项目中的CSS代码也会越来越多,如果没有及时对CSS代码进行维护,CSS代码不断会越来越多.CSS代码交错复杂,像一张庞大的蜘蛛网分布在网站的各个位置,你不知道修改这行代码会有什么影响,所以如果有修改或增加新功能时,开发人员往往不敢去删除旧的冗余的代码,而保险地增加新代码,最终的坏处就是项目中的CSS会越来越多,最终陷入无底洞. CSS代码重构的目的 我们写CSS代码时,不仅仅只是完成页面设计的效果,还应该让CSS代码易于管理,维护.我们对CSS