如果你的类命名太随意,面试官一眼就能看出来你是个新手,这个时候你就需要你一套命名方法来去去身上的“萌新味”。
BEM国际命名规范
BEM(Block Element Modifier)命名规范是一种用于前端开发的CSS类名命名方法论,旨在提高HTML和CSS代码的可读性、可维护性和可复用性。BEM由Yandex公司提出,已经被广泛应用于各种大型项目和框架中,如React、Angular以及许多其他前端技术栈。
BEM的核心概念
BEM命名规范主要围绕三个核心概念:Block、Element 和 Modifier。
-
Block(块)
-
定义:一个独立的功能模块,可以在页面上独立使用,也可以被其他模块引用。
-
命名规则:通常使用小写字母和连字符(hyphen)来表示,例如
header、button、menu等。 -
示例:
<div class="header"></div>
-
-
Element(元素)
-
定义:Block内的一个组成部分,依赖于所属的Block,不能独立存在于页面上。
-
命名规则:在Block名称后加上两个下划线(double underscore),然后是Element的名称,例如
block__element。 -
示例:
<div class="header"> <div class="header__logo"></div> <nav class="header__nav"></nav> </div>
-
-
Modifier(修饰符)
-
定义:用于改变Block或Element的外观、状态或行为。
-
命名规则:在Block或Element名称后加上一个下划线(single underscore),然后是Modifier的名称和值(如果有值的话),例如
block--modifier或block__element--modifier。 -
示例:
<div class="button button--primary"></div> <div class="header__logo header__logo--small"></div>
-
BEM命名的好处
- 清晰的层级关系:通过明确的命名规则,可以很容易地看出各个组件之间的关系。
- 高可复用性:Block可以独立于具体的页面结构,方便在多个地方复用。
- 易于维护:当需要修改样式时,可以通过类名直接定位到对应的CSS规则,减少误改的风险。
- 团队协作:统一的命名规范有助于团队成员之间更好地理解和协作。
示例
假设我们要创建一个简单的导航栏,包含品牌标志和导航链接,可以使用BEM命名如下:
<nav class="navbar">
<div class="navbar__brand">Brand Name</div>
<ul class="navbar__menu">
<li class="navbar__item"><a href="#" class="navbar__link navbar__link--active">Home</a></li>
<li class="navbar__item"><a href="#" class="navbar__link">About</a></li>
<li class="navbar__item"><a href="#" class="navbar__link">Contact</a></li>
</ul>
</nav>
在这个例子中:
.navbar是Block,表示整个导航栏。.navbar__brand、.navbar__menu、.navbar__item和.navbar__link都是Element,分别表示品牌标志、菜单、菜单项和链接。.navbar__link--active是Modifier,表示当前激活的链接。
在了解完BEM国际命名规范后,你要做的第一件事就是了解一下大厂程序员都是怎么做类命名的。
WEUI前端框架
WEUI是腾讯团队为微信Web开发设计的一套前端样式库,旨在帮助开发者快速实现与原生应用一致的视觉体验。它提供了丰富的基础控件,如按钮、对话框、表单等,能够满足大部分移动Web应用的需求。你可以在weui.io/ 中学习微信官方设计团队是如何设计他们的网页的。
WeUI页面结构套路
在WEUI中,.weui-cells是一个Block,代表一组单元格;而.weui-cell__bd则是.weui-cells中的一个Element,用于包含单元格的主要内容。
使用WEUI构建页面时,可以遵循以下基本的页面结构模式:
<div class="page">
<div class="page__hd">
<!-- 页面头部 -->
<h1 class="page__title">页面标题</h1>
<p class="page__desc">页面描述信息</p>
</div>
<div class="page__bd">
<!-- 页面主体 -->
<div class="weui-cells">
<div class="weui-cell">
<div class="weui-cell__hd"><label class="weui-label">标签</label></div>
<div class="weui-cell__bd"><input class="weui-input" type="text" placeholder="输入框"></div>
</div>
</div>
</div>
<div class="page__ft">
<!-- 页面底部 -->
<a href="javascript:;" class="weui-btn weui-btn_primary">主要按钮</a>
</div>
</div>
在这个例子中,.page作为整个页面的容器,包含了头部(.page__hd)、主体(.page__bd)和底部(.page__ft)三个部分。每个部分都按照BEM规范进行了清晰的命名,使得代码具有良好的可读性和可维护性。
注释
另外需要提醒的是,代码的注释也是区分小白和大佬的一大标志,养成良好的注释习惯也是十分重要的,比如:
/*
* @author djt
* @date 2024-11-29
*/
在顶部注释作者和时间,能在提交后方便你的老板能第一时间看到(用你的代码惊艳老板,涨薪不是分分钟的事?)