PHP前端开发

如何写出优雅耐看的css代码?

百变鹏仔 3个月前 (09-20) #CSS
文章标签 耐看

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

CSS命名——BEM

BEM是什么

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

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

立即学习“前端免费学习笔记(深入)”;

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

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

使用BEM示例对比

Block

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

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

元素(Element)

/* 常规写法 */   
  /* BEM写法 */      
/* 常规写法 */ .list{} .list .item{} /* BEM写法 */ .list{} .list__item{}

修饰符(modifier)

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

/* 常规写法 */   
  /* BEM写法 */     
/* 常规写法 */ .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、面向属性

2、面向语义

命名汇总推荐

状态

前一个    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前端)