前端开发中需要注意的CSS命名规则以及书写顺序

这篇具有很好参考价值的文章主要介绍了前端开发中需要注意的CSS命名规则以及书写顺序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、CSS的命名——BEM规则:

CSS命名一般是用 BEM 规则命名的。它背后的想法是将用户界面划分为独立的块。
BEM的意思就是B模块(block)E元素(element)M修饰符(modifier)
即:[block]__[element]--[modifier]

模块和子元素之间用两个下划线分隔(如:order__security),子元素和修饰符之间用两个中划线分隔,(如:content__person–selected)。

● 块 Block:组件的最外层父元素定义为块。
● 元素 Elemnt:组件内部可以是一个或多个称为元素的子元素。
● 修饰符 Modifier:块或元素可能具有由修饰符表示的变体。

关于子元素E,有两种写法:

  • 第一种:按照层级嵌套来写,如 block__ele1-son-inner,但是这样写会导致命名过长;

  • 第二种:扁平化,一个模块下的所有子元素,无论相互层级如何,都直接连接这个模块,如
    block__inner,但是这样就无法表示层级关系,命名时也可能会出现冲突。

命名注意:

  1. 一律小写;
  2. 尽量用英文;
  3. 尽量不缩写,除非一看就明白的单词。

2、关于CSS属性的书写顺序建议:

一般来说,要先定义好布局,即先写位置、再写大小边距,再写文字样式、背景色,最后写其他属性。

  1. 位置属性:position, top, right, z-index, display, float 等
  2. 自身大小及边距:width, height, padding, margin 等
  3. 背景:background, border 等
  4. 文字样式:font-family font-size font-style font-weight font-varient color 等
  5. 文本属性:text-align vertical-align text-wrap text-transform text-indent text-decoration letter-spacing word-spacing white-space text-overflow 等
  6. 其他:border-radius, animation, transition等

如:

.wrapper{
    display: block;
    position: relative;
    width: 100px;
    height: 100px;
    margin: 0 10px;
    padding: 20px 0;
    font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
    color: #333;
    background: rgba(0,0,0,.5);
    border-radius: 10px;
}

目的:减少浏览器回流(reflow),提升浏览器渲染dom的性能

浏览器的渲染流程:

① 解析html构建 DOM 树,解析css构建 CSSOM 树:将html解析成树形的数据结构,将css解析成树形的数据结构。
② 构建 Render 树:DOM树和CSS树合并之后形成的render树。
③ 布局(Layout):有了render树,浏览器已经知道那些网页中有哪些节点,各个节点的css定义和以及它们的从属关系,从而计算出每个节点在屏幕中的位置和大小
④ 绘制(Painting):根据css样式规则将计算好的盒模型呈现出来。

布局阶段的主要任务是生成盒子,计算它们的位置和大小;绘制阶段则是根据css样式规则将计算好的盒模型呈现出来。

所以说,如果元素的 位置 和 大小 出现变动,就需要浏览器再次回到布局阶段重新计算,计算后再绘制,这就是 回流;而如果元素的颜色等样式属性出现变动,则无需计算,只需再次绘制,这就是 重绘

css样式解析到显示至浏览器屏幕上就发生在 ②③④ 步骤,浏览器并不是一获取到css样式就立马开始解析,而是根据css样式的书写顺序,将之按照 dom 树的结构完成构建,然后开始遍历每个树结点的 css 样式进行解析,此时 css 样式的遍历顺序完全是按照之前的书写顺序。

在解析过程中,一旦浏览器发现某个元素的定位变化影响布局,则需要倒回去重新渲染。正如按照这样的书写顺序:

.test{
	width: 100px;
	height: 100px;
	background-color: red ;
	position: absolute;
}

当浏览器解析到 position 的时候突然发现该元素是绝对定位元素需要脱离文档流,而之前却是按照普通元素进行解析的,所以不得不重新渲染,解除该元素在文档中所占位置,然而由于该元素的占位发生变化,其他元素也可能会受到它回流的影响而重新排位。最终导致③步骤(布局)花费的时间太久而影响到④步骤的显示,影响了用户体验。

另:一些可以缩写的属性建议缩写,如padding,在值不同的情况下,还是不要拆开的好。代码看起来会简略很多。
建议:

.test{
	padding: 8px 6px 4px 2px;
    margin:8px 6px;
}

不建议:

.test{
	padding-top: 8px;
    padding-right:6px;
    padding-bottom:4px;
	padding-left:2px;
}

我们维护的项目代码来自不同的开发者,风格比较多样化。尽量养成良好的代码习惯!文章来源地址https://www.toymoban.com/news/detail-790464.html

到了这里,关于前端开发中需要注意的CSS命名规则以及书写顺序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【笔记】Arrays.binarySearch()实践,以及需要注意的一些问题点

    【笔记】Arrays.binarySearch()实践,以及需要注意的一些问题点

    背景:我想校验一个指定的String字符串,是否存在于另一个String数组中,选择 Arrays.binarySearch() 方法实现,代码如下: 运行结果: 很直观的能看到item数组里面存在字符串 1591 ,为什么程序运行的结果却是找不到该元素呢? 首先来看一下源码: 注意,注释上提到了两个重点:

    2024年02月06日
    浏览(15)
  • 前端需要理解的CSS知识

    前端需要理解的CSS知识

    CSS(层叠样式表,Cascading Style Sheets)不是编程语言,而是用来描述 HTML 或 XML(包括如 SVG、MathML 或 XHTML 之类的 XML 分支语言)文档的表现与展示效果的样式表语言。CSS3是CSS的最新标准,是 向后兼容(指的是老版本的功能和数据在新版本能完美运行, 与 向前兼容 相反 )的

    2024年02月11日
    浏览(11)
  • [SQL挖掘机] - 基本书写规则

    SQL 的基本书写规则主要包括以下几个方面: 的使用:SQL 使用一些来表示特定的操作或语义,如 SELECT、FROM、WHERE、INSERT、UPDATE、DELETE 等。这些通常需要使用大写字母书写,尽管 SQL 语言对大小写不敏感,但为了代码的可读性,通常将全部大写。 语

    2024年02月16日
    浏览(11)
  • 使用低代码开发,需要注意哪些?

    使用低代码开发,需要注意哪些?

    低代码平台的历史相对较短,大约始于 2000 年初,源于快速应用程序开发工具。随着低代码平台和工具的日益普及和优势,它不断发展以满足各种领域和角色的需求。 本文将研究各种低代码和无代码应用程序开发方法、业务用例、挑战和未来预测等。 低代码是一种软件开发

    2024年02月15日
    浏览(13)
  • 【开篇】STM32F103C8T6 含义、命名规则、GPIO原理以及初始化(参考男神江科协,学习交流用)

    【开篇】STM32F103C8T6 含义、命名规则、GPIO原理以及初始化(参考男神江科协,学习交流用)

    目录 目录 一,STM系列命名规则 二.引脚功能 三.电路以及寄存器 1.产品系列:         STM32代表意法半导体的Cortex-Mx系列内核(ARM)32位的MCU 2.产品类型: F-通用型,S-简单型,L-低功耗,H-高性能,AL-汽车应用低功耗型,AF-汽车应用通用型。 3.产品子系列: 103:ARM Cortex-M3内核

    2024年01月17日
    浏览(42)
  • Java 8 Stream API 中的 peek() 方法详解,以及需要注意的坑。

    在Java 8中,Stream API引入了许多强大的函数式编程特性,极大地增强了我们对集合数据进行操作的能力。其中一个很有用的方法就是 peek() ,本文将详细介绍其功能及应用场景。 peek() 是Java 8 Stream API中的一个中间操作方法,它的主要功能是对流中的每个元素执行一个操作(可以

    2024年04月16日
    浏览(16)
  • 仿抖音开发需要注意的问题

    仿抖音开发需要注意的问题

    一、版权问题 仿抖音开发需要注意版权问题,包括内容的版权和软件的版权。在开发的过程中,不要直接抄袭他人的作品,应该注重保护知识产权。 二、安全性问题 仿抖音开发需要重视应用的安全性问题,避免应用在使用过程中发生安全漏洞,导致用户个人信息泄露等问题

    2024年02月04日
    浏览(9)
  • [HTML]Web前端开发技术25(HTML5、CSS3、JavaScript )JavaScript基础消息对话框告警框确认框提示框命名规范1标识符2关键字3保留字注释标识符和变量——喵喵画网页

    [HTML]Web前端开发技术25(HTML5、CSS3、JavaScript )JavaScript基础消息对话框告警框确认框提示框命名规范1标识符2关键字3保留字注释标识符和变量——喵喵画网页

    希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要! 目录 前言 JavaScript程序 代码 消息对话框 消息对话框-告警框 消息对话框-确认框 消息对话框-提示框 JavaScript注释

    2024年02月20日
    浏览(49)
  • 修复dinput8.dll文件的缺失,以及修复dinput8.dll文件时需要注意什么

    修复dinput8.dll文件的缺失,以及修复dinput8.dll文件时需要注意什么

    dinput8.dll文件通常在使用大型游戏时容易出现dinput8.dll文件丢失的情况,今天这篇文章将要教大家修复dinput8.dll文件的缺失,同时在修复dinput8.dll文件时需要注意些什么?防止文件在修复的过程中出现其他的错误。 dinput8.dll是DirectInput库中的一个重要组件,它提供了与输入设备(

    2024年02月06日
    浏览(7)
  • 前端开发规范(二)-Git分支管理及命名

    Git 是目前最流行的源代码管理工具。为规范开发,保持代码提交记录以及 git分支结构清晰,方便后续维护,总结了如下规范。 Git主分支(保留分支):master、dev 主要分支:Master和Dev。前者用于正式发布,后者用于日常开发。 Git辅助分支(临时分支):feature、release、fix 除

    2024年02月16日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包