站长资讯网
最全最丰富的资讯网站

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

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

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

前端(vue)入门到精通课程:进入学习

CSS命名——BEM

BEM是什么

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

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

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

-   中划线 :仅作为连字符使用,表示某个块或者某个子元素的多单词之间的连接记号。 __  双下划线:双下划线用来连接块和块的子元素 _   单下划线:单下划线用来描述一个块或者块的子元素的一种状态

使用BEM示例对比

Block

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

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

元素(Element)

/* 常规写法 */    <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>
/* 常规写法 */  .list{}  .list .item{}   /* BEM写法 */  .list{}  .list__item{}

修饰符(modifier)

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

/* 常规写法 */    <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>
/* 常规写法 */  .list{}  .list .item{}  .list .item.active{}   /* BEM写法 */  .list{}  .list__item{} .list__item_active{}

BEM 的好处

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

css命名几大原则

短命名比长命名会更好

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

//  推荐 .some-intro{...}  // 不推荐 .some-introduction{...}

组合命名比单命名会更好

// 不建议 .header{...}  //推荐 .cs-header{...}

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

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

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

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

.header { background-color: #333; color: #fff; } .logo {font-size: 0; color : transparent;}

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

1、面向属性

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

2、面向语义

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

命名汇总推荐

状态

前一个    prev 后一个    next 当前的    current  显示的    show 隐藏的    hide 打开的    open 关闭的    close  选中的    selected 有效的    active 默认的    default 反转的    toggle  禁用的    disabled 危险的    danger 主要的    primary 成功的    success 提醒的    info 警告的    warning 出错的    error  大型的    lg 小型的    sm 超小的    xs

布局

文档    doc 头部    header(hd) 主体    body     尾部    footer(ft)     主栏    main 侧栏    side     容器    box/container

通用部件

列表    list 列表项  item 表格    table     表单    form 链接    link 标题    caption/heading/title 菜单    menu 集合    group 条      bar 内容    content     结果    result

组件

按钮        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

语义化小部件

品牌        brand 标志        logo 额外部件    addon 版权        copyright 注册        regist(reg) 登录        login 搜索        search     热点        hot 帮助        help 信息        info 提示        tips 开关        toggle 新闻        news 广告        advertise(ad) 排行        top     下载        download

功能部件

左浮动    fl 右浮动    fr 清浮动    clear

命名网站推荐

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

参考文档:

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

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

(学习视频分享:web前端)

赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号