目录
CSS命名——BEM
Block
元素(Element)
修饰符(modifier)
css命名几大原则
命名汇总推荐
参考文档:
首页 web前端 css教程 如何写出优雅耐看的css代码?css命名小技巧分享!

如何写出优雅耐看的css代码?css命名小技巧分享!

Sep 15, 2022 am 11:28 AM
css

如果使用 CSS 有一段时间,那么您就会知道继承、特异性和命名是一些最难处理的事情。由于所有 CSS 都是全局的,随着代码库的增长,防止样式相互冲突并导致意外副作用变得越来越困难!下面本篇文章给大家分享一些css命名小技巧,让我们的代码优雅又耐看,希望对大家有所帮助!

如何写出优雅耐看的css代码?css命名小技巧分享!

CSS命名——BEM

BEM是什么

BEM是一种CSS命名规范。【推荐学习:css视频教程

BEM代表 “块(block),元素(element),修饰符(modifier)”。

在选择器中,由以下三种符号来表示扩展的关系:

1

2

3

-   中划线 :仅作为连字符使用,表示某个块或者某个子元素的多单词之间的连接记号。

__  双下划线:双下划线用来连接块和块的子元素

_   单下划线:单下划线用来描述一个块或者块的子元素的一种状态

登录后复制

使用BEM示例对比

Block

如下面的例子,li.item 是列表的一个子元素

1

2

/* 常规写法和BEM写法相同 */

.list

登录后复制

元素(Element)

1

2

3

4

5

6

7

8

9

10

11

/* 常规写法 */ 

  <ul class="list">

    <li class="item">Pricing</li>

    <li class="item">Contact</li>

  </ul>

   

/* BEM写法 */   

   <ul class="list">

    <li class="list__item">Pricing</li>

    <li class="list__item">Contact</li>

  </ul>

登录后复制

1

2

3

4

5

6

7

/* 常规写法 */ 

.list{} 

.list .item{} 

 

/* BEM写法 */ 

.list{} 

.list__item{}

登录后复制

修饰符(modifier)

一个“修饰符”可以理解为一个块的特定状态!

1

2

3

4

5

6

7

8

9

10

11

12

13

/* 常规写法 */ 

  <ul class="list">

    <li class="item">Pricing</li>

    <li class="item">Contact</li>

  </ul>

   

/* BEM写法 */   

  <ul class="list">

    <li class="list__item_active">

      Pricing

    </li>

    <li class="list__item">Contact</li>

  </ul>

登录后复制

1

2

3

4

5

6

7

8

9

/* 常规写法 */ 

.list{} 

.list .item{} 

.list .item.active{} 

 

/* BEM写法 */ 

.list{} 

.list__item{}

.list__item_active{}

登录后复制

BEM 的好处

  • 摆脱特异性的困扰
  • 修复继承问题
  • 停止担心命名

css命名几大原则

短命名比长命名会更好

因为短命名缩短书写时间,也减小了css文件大小!例如这个例子:

1

2

3

4

5

//  推荐

.some-intro{...}

 

// 不推荐

.some-introduction{...}

登录后复制

组合命名比单命名会更好

1

2

3

4

5

// 不建议

.header{...}

 

//推荐

.cs-header{...}

登录后复制

面向属性的命名和面向语义的命名

面向属性的命名指选择器的命名是跟着具体的CSS样式走的,与项目、页面、模块统统没有关系。例如,比较经典的清除浮动类名.clearfix:

1

.clearfix:after { content : ''; display: table; clear: both; }

登录后复制

面向语义的命名则是根据应用元素所处的上下文来命名的。例如:

1

2

.header { background-color: #333; color: #fff; }

.logo {font-size: 0; color : transparent;}

登录后复制

上述两种命名方式各有优缺点:

1、面向属性

  • 优点:在于CSS的重用率高,性能最佳,即插即用,方便快捷,开发也极为迅速,因为它省去了大量在 HTML 和CSS文件之间切换的时间。
  • 缺点:在于由于属性单一,其适用场景有限,另外因为使用方便,易被过度使用,从而带来更高的维护成本。

2、面向语义

  • 优点是应用场景广泛,可以实现非常精致的布局效果,扩展方便;
  • 缺点:在于代码啰唆,开发效率一般,因为所有HTML都需要命名,哪怕是一个10像素的间距。这就导致很多开发者要么选择直接使用标签选择器,要么就选择一个简单的类名,然后通过父子关系限定样式,结果带来了更糟糕的维护问题。

命名汇总推荐

状态

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

前一个    prev

后一个    next

当前的    current

 

显示的    show

隐藏的    hide

打开的    open

关闭的    close

 

选中的    selected

有效的    active

默认的    default

反转的    toggle

 

禁用的    disabled

危险的    danger

主要的    primary

成功的    success

提醒的    info

警告的    warning

出错的    error

 

大型的    lg

小型的    sm

超小的    xs

登录后复制

布局

1

2

3

4

5

6

7

文档    doc

头部    header(hd)

主体    body    

尾部    footer(ft)    

主栏    main

侧栏    side    

容器    box/container

登录后复制

通用部件

1

2

3

4

5

6

7

8

9

10

11

列表    list

列表项  item

表格    table    

表单    form

链接    link

标题    caption/heading/title

菜单    menu

集合    group

条      bar

内容    content    

结果    result

登录后复制

组件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

按钮        button(btn)

字体        icon

下拉菜单    dropdown

工具栏      toolbar

分页        page

缩略图      thumbnail

警告框      alert

进度条      progress

导航条      navbar

导航        nav    

子导航      subnav

面包屑      breadcrumb(crumb)    

标签        label

徽章        badge

巨幕        jumbotron

面板        panel

洼地        well

标签页      tab

提示框      tooltip

弹出框      popover

轮播图      carousel

手风琴      collapse 

定位浮标    affix

登录后复制

语义化小部件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

品牌        brand

标志        logo

额外部件    addon

版权        copyright

注册        regist(reg)

登录        login

搜索        search    

热点        hot

帮助        help

信息        info

提示        tips

开关        toggle

新闻        news

广告        advertise(ad)

排行        top    

下载        download

登录后复制

功能部件

1

2

3

左浮动    fl

右浮动    fr

清浮动    clear

登录后复制

命名网站推荐

codelf:https://unbug.github.io/codelf

参考文档:

1、张鑫旭的《css选择世界》

2、https://www.cnblogs.com/qianxiaox/p/13816077.html

(学习视频分享:web前端

以上是如何写出优雅耐看的css代码?css命名小技巧分享!的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

vue中placeholder是什么意思 vue中placeholder是什么意思 May 07, 2024 am 09:57 AM

vue中placeholder是什么意思

vue中空格怎么写 vue中空格怎么写 Apr 30, 2024 am 05:42 AM

vue中空格怎么写

vue中怎么获取dom vue中怎么获取dom Apr 30, 2024 am 05:36 AM

vue中怎么获取dom

js中span是什么意思 js中span是什么意思 May 06, 2024 am 11:42 AM

js中span是什么意思

js中rem是什么意思 js中rem是什么意思 May 06, 2024 am 11:30 AM

js中rem是什么意思

vue中引入图片的方法 vue中引入图片的方法 May 02, 2024 pm 10:48 PM

vue中引入图片的方法

span标签的作用是什么 span标签的作用是什么 Apr 30, 2024 pm 01:54 PM

span标签的作用是什么

js中prompt怎么换行 js中prompt怎么换行 May 01, 2024 am 06:24 AM

js中prompt怎么换行

See all articles