搜索
首页web前端css教程CSS命名规范节约Debug时间解答

CSS命名规范节约Debug时间解答

Jan 27, 2018 am 10:05 AM
cssdebug

本文主要和大家分享CSS 命名规范可以节约 Debug 时间的相关知识,感兴趣的朋友一起看看吧,希望能帮助到大家。Debug CSS 是一种很耗时的操作,如果有良好的命名规范可以节约很多的 Debug 时间。

 

简评:Debug CSS 是一种很耗时的操作,如果有良好的命名规范可以节约很多的 Debug 时间。

使用连字符('-')分隔字符串

你可能习惯了在 Javascript 中使用小驼峰的命名方式:

var redBox = document.getElementById('...')

但是在 CSS 中不建议使用这种命名方式:

.redBox { 
  border:1px纯红色; 
}

而应该使用这种:

.red-box { 
   border:1px纯红色; 
}

这是一个标准的 CSS 命名规则,有更好的可读性。

此外,他和 CSS 属性名称一致。

//正确
.some-class { 
   font-weight:10em 
}
//错了
.some-class { 
   fontWeight:10em 
}

BEM 命名规范

团队有不同的方法来编写 CSS 选择器。一些团队使用连字符分隔符,而其他团队则倾向于使用更加结构化的称为 BEM 的命名规范。

一般来说,CSS 命名规范有三个问题要解决:

  1. 能够通过名字就能清楚选择器的功能。

  2. 能够看出选择器在哪里可以使用。

  3. 能够看出 class 之间的关系。

你有没有见过这样写的类名:

.nav--secondary {
  ...
}
.nav__header {
  ...
}

这就是 BEM 命名规则。

B 代表块(Block)

BEM 试图将整个用户界面分成可重用独立的块(Block,注意这里的 Block 并非指 inline-block),一个 header 是一个 block,header 里面嵌套的元素(logo、input、menu)也可以是 block 。

举个例子下面的图片:

 

这是一个火柴人(我们可以把它看做一个 Block),按照之前的说法,这个组件的命名我们可以设为 stick-man 。

主键的样式应该如下所示:

.stick-man { 
  
}

 

E 代表元素

Block 中一般会有多个元素,举个例子:火柴人有一个 head,两个 arms 和 feets

 

head、feet、和 arms 是该组件中的所有元素。使用 BEM 命名规则,通过双下划线连接块(Block)和元素(Elements)方式来命名。

.stick-man__head {
}
.stick-man__arms {
}
.stick-man__feet {
}

M 代表修饰符

BEM 中 M 代表修饰,可以对块(Block)或元素(Element)进行修饰(外观或行为的调整),我们可以调整我们的火柴人生成蓝色火柴人和红色火柴人(实际上我们可能需要一个蓝色按钮和一个红色按钮)。

 

使用 BEM 的命名规则我们使用双连接符来命名('--')

例如:

.stick-man--blue {
}
.stick-man--red {
}

修饰符也可用于元素(element),例如我们只想调整火柴人的头部大小。我们可以这样命名

 

.stick-man__head--small {
}
.stick-man__head--big {
}

以上就是 BEM 的命名方式,这种命名方式虽然有点啰嗦但是在复杂的工程中可以很好的理清各部分之间的关系,如果只是简单的工程直接使用分隔符命名就行了。

在 JavaScript 中用到的 CSS 类名应该如何命名

当你看到这个篇文章开始着手重构自己的项目。

你将原来的代码:

<p class="siteNavigation">
</p>

改成了:

<p class="site-navigation">
</p>

这看着很棒,但是你忘了你在某个地方(JavaScript)用到了这个类名:

//the Javasript code
const nav = document.querySelector('.siteNavigation')

这个时候 nav 将会得到 null。

为了防止这种情况,我们可以使用如下的命名来提醒我们。

使用 'js-*' 来命名

我们可以使用 js- 来命名我们的类:

<p class="site-navigation js-site-navigation">
</p>

在 JavaScript 代码我们使用 js-site-navigation 来获取该 DOM:

//the Javasript code
const nav = document.querySelector('.js-site-navigation')

现在我们只要一看到 js- site-navigation 就会想到,在某个 JavaScript 代码中使用该类名获取 DOM 对象。

相关推荐:

CSS命名规范及网站常用中英文对照表

div+css命名参考 与 CSS命名规范_html/css_WEB-ITnose

css命名规范_html/css_WEB-ITnose

以上是CSS命名规范节约Debug时间解答的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何为开源项目做出贡献如何为开源项目做出贡献Apr 17, 2025 am 10:10 AM

以下内容将变得有些有意义,并旨在指导某人进入开源的旅程。作为先决条件,您应该有基本的

@keyframers navbar nuding@keyframers navbar nudingApr 17, 2025 am 10:09 AM

前几天,我必须在钥匙范围内成为特色嘉宾。我们看了BjörgvinPéturSigurjónsson拍摄的运球,然后慢慢建造

CSS安全漏洞CSS安全漏洞Apr 17, 2025 am 10:02 AM

不要阅读该标题并担心。我不认为CSS是一个特别危险的安全问题,在大多数情况下,我不认为您需要

其他水疗中心的方法其他水疗中心的方法Apr 17, 2025 am 10:01 AM

那个押韵的霍尔兹。

无构建无构建Apr 17, 2025 am 10:00 AM

I&#039; m在长途关系中。这意味着我每隔几周就要飞往英格兰,每次我在那架飞机上时,我都会想到它会多么好

技术写作建议技术写作建议Apr 17, 2025 am 09:51 AM

在最近与令人难以置信的技术作家和粉碎杂志编辑雷切尔·安德鲁(Rachel Andrew)的播客之前,我收集了很多想法和

使用PostCSS函数来自动化您的响应式工作流程使用PostCSS函数来自动化您的响应式工作流程Apr 17, 2025 am 09:48 AM

不久前,您可能已经碰到了这篇CSS-Tricks文章,我描述了如何使用RFS使用Mixin来自动化响应式字体大小。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

禅工作室 13.0.1

禅工作室 13.0.1

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

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),