当前位置: 首页 > Web前端 > CSS

BEM实战之扒一扒淘票票页面

时间:2023-03-30 19:17:20 CSS

BEM分析BEM是一套CSS国际命名规范。这是一个非常有用的强大而简单的命名约定。它可以使前端代码更具可读性,易于理解和易于扩展。BEM是块、元素和修饰符的首字母缩写词。B:Block是一个块,一个独立的组件,将所有的东西都分成一个组件E:Element是一个块中的子节点。为了表示一个子节点属于哪个块,写成block__elementM:Modifier声明了某个节点的修改状态。我们用一个搜索框来简单说明上面三个东西的用法:这个搜索框可以看成一个块Block,它由两个子节点组成,一个是输入区input,一个是查询按钮button。对于这个块的命名,根据BEM规则,我们可以这样写:将整体搜索框site-search命名为模块,在模块下的两个子节点添加两个下划线,添加自己的名字input和button,这种命名方式,即使我们看不到网页内容,只看CSS样式名称,我们仍然可以感受到页面结构和页面元素之间的关系。如果我们要说明button按钮是灰色的,我们还可以加上一个修饰类名的修饰符,比如可以是site-search__button--gray。上图说明一个元素是可以模块化的,它可以包含多个元素。这样的命名约定可以更好地说明元素之间的关系。为什么使用BEM命名你是否曾在编写CSS样式名称时摸不着头脑?你是否曾在团队合作时看不到别人的代码,只能无奈地说“重写这个CSS比修改旧文件更快”?BEM命名规则给我们带来了以下便利:BEM命名规则为我们提供了一个很好的模板,可以体现元素之间的命名关系,CSS命名更语义化,元素更容易理解。而且独特的命名方式使得代码能够更好的复用,所以在写样式名的时候不用再小心翼翼,生怕和上下文中的样式名重名,导致样式要覆盖的元素组件。刚接触BEM命名方式的人可能会觉得一个元素的类名又长又丑,但是这种冗长的命名方式大大降低了类名重复的可能性。BEM官网表示,这种命名约定最关键的特点是:BEM的关键特点是块的独立性。正如CSS推荐的那样,您可以在网页的任何位置放置一个块,并确保它不受周围环境的影响。而且,如果您最近需要在当前块中嵌套另一个块,则可以保证它们的完全兼容性。换句话说,在维护Web应用程序时,您可以在页面周围移动块、添加其他项目并将它们组合起来。看看Taopiaopiao的界面Taopiaopiao的界面写的很漂亮,但是最近看了一下Taopiaopiao的CSS命名方式,觉得略显不妥。例如,工单顶部的索引栏。以下是淘票票对顶部导航栏的CSS命名。为了让大家更好的看到页面结构,我对页面元素进行了简单的处理,并添加了几行注释:

Home
手机电话购买客服咨询
这里有两个比较严重的问题:12.页面结构不清晰从css的命名方式上很难看出将以上类放在一起,同一模块中的内容缺乏联系。2、CSS命名与页面内容挂钩,代码复用性低。观察上面的命名方式,比如cityWrap、entry、phone等,命名方式都是和页面内容挂钩的。这种命名方式的缺点是不能移到其他地方重复使用。因为其他页面可能没有城市、入口、手机的内容。或者,万一页面元素需要改变,比如把城市(cityWrap)改成国家(country),为了保持CSS和页面内容的统一,需要改变所有的CSS样式,这就增加了很多给代码的维护带来难度。我的修改建议是使用BEM命名规则来模块化页面元素。整个导航栏是一个模块,模块分为三个典型层:head、body、footer,尾部存放logo、导航栏内容等功能。:南昌首页手机购买导航条被看作是一个整体的模块Block,这个模块有三个子节点元素Elemet。采用这种命名方式后,即使不看页面元素,只看CSS元素的类名,你能猜出大概的结构吗?而且,页面内容不作为命名方式。这样结构相似的页面也可以直接复用这套CSS样本。同时,清晰的命名方式也让页面维护更轻松掘金文章地址:https://juejin.im/post/5a1399...