前端代码注释风格 - CSS篇

news2024/9/21 18:39:02

本文基于《阿里巴巴CSS编程规约》、stylelint rules进行编写,涉及预编译语言(Sass、Less)的编码风格和最佳实践。

1.1 编码风格

空格的使用

选择器和{之间保留一个空格。.selector-disabled {

在使用逗号分隔的属性中,逗号后保留一个空格。color: rgb(0, 0, 0);

属性名和冒号前无空格,冒号后空一格。margin-top: 15px;

> + ~ || 等组合器前后个保留一个空格。

换行的使用

使用多个选择器时,每个选择器应该单独成行

声明块的右侧大括号}应该单独成行,如果声明块内只有一条语句,也要进行换行。

属性声明应该单独成行

单行代码最多不要超过100字符

注释

和js篇一样,注释分为行注释和块注释,注释只要不是在块的顶部或上一行也是注释的情况下,都需要进行换行。

分号的使用

在css语法中,最后一条的分号是可选的,但为了代码的一致性和易用性,建议使用分号结尾。

1.2 选择器

id选择器

不优先使用id选择器,因为后续很难进行样式覆盖,继而引发!important的恶性循环。

属性选择器

属性选择器的值始终用双引号包裹

css选择器

使用css选择器时,应注意以下性能问题:

使用class而不是原生元素标签

减少在经常出现的组件中使用个别属性选择器如(.home[attr^="val"] {...})// 属性attr的值以val开头的元素

 控制选择器的长度,每个组合选择器内的个数不超过3个

从效率的角度看,css选择器从高到低的排序是:

1. id选择器 #header

2. class类选择器 .home

3. 标签(元素)选择器 div

4. 相邻兄弟选择器 .parent + .borther

5. 父子选择器 .parent > .children

6. 后代选择器 ul li

7. 通配符 *

属性和属性值

不推荐使用!important进行样式覆盖

十六进制统一使用小写字母(更易分辨)#efefef#FEFEFE

值为0时,省略单位 margin-top: 0

保留小数点前的0,同样出于增强代码可读性和一致性的原因。由于css压缩工具会在压缩时帮我们去掉0,所以不存在多占用一个字符的问题。

属性声明的顺序

相关联的属性声明最好写在一起,并按以下顺序排序:

定位:position、left、right、bottom、top、z-index

盒模型: display、float、width、height、margin、padding、border

文字排版:font、color、line-height、text-align

外观:如background

其他属性

定位盒模型放在最前,因为它们决定了元素的布局、位置和尺寸。定位盒模型之前,因为定位会让元素脱离正常文本流,从而使盒模型属性失效。

除定位和盒模型之外,其他属性只在元素内部起作用,不会对前两类属性的结果产生影响,因此放在后面。

其他

避免使用css的@import

与<link>相比,@import会在关键渲染路径上增加更多的往返,即渲染路径的深度变长,这样会导致浏览器处理css文件的速度变慢,因此我们应该避免使用@import

1.3 Sass和Less

Sass\Less作为历史遗留下的产物,虽然在一定程度上提高了开发者的效率,但不同的处理器语言也增加了项目维护成本(特别是多人协作,多团队协作的时候)。

 随着css一些新特性的出现,Sass、Less的优势也会慢慢消失。

建议使用postCSS处理器,PostCSS 是一个用 JavaScript 工具和插件转换 CSS 代码的工具,它提供了一种强大的方式来处理 CSS,例如自动添加前缀、优化代码、进行样式的转换等。通过使用 PostCSS 插件,可以根据具体需求对 CSS 进行各种自定义的处理和增强。

与Sass、Less不同的是,Sass、Less是预处理器,而postCSS是后处理器。CSS 预处理器是一种在编写 CSS 样式之前对其进行处理的工具。它允许我们使用更高级的语法和特性来编写 CSS,然后将其转换为普通的 CSS 代码,以便在浏览器中使用。PostCSS后处理器,它在 CSS 代码已经编写完成后进行处理。PostCSS 提供了一种强大的插件系统,可以让我们在不修改原始 CSS 文件的情况下,对其进行各种修改和优化。

此处参考PostCSS 从入门到精通,看着一篇就够了(1)-CSDN博客

功能 | Vite 官方中文文档 (vitejs.cn)

嵌套选择器

嵌套选择器深度不建议超过3层,否则可能带来一些副作用

  •  与HTML强耦合,不利于复用
  •  过高的选择器优先级

注释

在Sass和Less中可以使用//双斜杠注释,但是编译为css后,双斜杠注释会被删除,/* */不受影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2098986.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python检测和识别车牌-python经典练手项目

车牌检测与识别技术用途广泛&#xff0c;可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计算机视觉和人工智能。 本文将使用Python创建一个车牌检测和识别程序。该程序对输入图像进行处理&#xff0c;检测和识别车牌&#xff0c;最后显示车牌字符&#xff0c;作为…

专利复现_基于ngboost和SHAP值可解释预测方法

大家好&#xff0c;我是重庆未来之智的Toby老师&#xff0c;最近看到一篇专利&#xff0c;名称是《基于NGBoost和SHAP值的可解释地震动参数概率密度分布预测方法》。该专利申请工日是2021年3月2日。 专利复现 我看了这专利申请文案后&#xff0c;文章整体布局和文字内容结构不错…

c++修炼之路之C++11

目录 一&#xff1a;使用列表初始化 二&#xff1a;decltype和nullptr 三&#xff1a;右值引用和移动语义 四&#xff1a;新的类功能 五&#xff1a;可变参数模板 六&#xff1a;lambda表达式 七&#xff1a;包装器 1.function包装器 2.bind包装器 接下来的日子会顺…

《深度学习》OpenCV 图像轮廓检测、轮廓处理及代码演示

目录 一、图像轮廓检测 1、边缘检测和轮廓检测 2、常用的图像轮廓检测方法包括&#xff1a; 1&#xff09;基于梯度的方法 2&#xff09;基于边缘检测器的方法 3&#xff09;基于阈值的方法 3、查找轮廓的函数 4、轮廓的绘制 5、轮廓特征 1&#xff09;轮廓面积 2&a…

呵,老板不过如此,SQL还是得看我

2018年7月&#xff0c;大三暑假进行时&#xff0c;时间过得飞快&#xff0c;我到这边实习都已经一个月了。 我在没工作之前&#xff0c;我老是觉得生产项目的代码跟我平时自学练的会有很大的区别。 以为生产项目代码啥的都会规范很多&#xff0c;比如在接口上会做很多安全性的…

自己开发完整项目一、登录功能-05(动态权限控制)

一、上节回顾 在上一节中&#xff0c;我们介绍了如何通过数据库查询用户的权限&#xff0c;并对方法级别的接口使用注解的方式进行权限控制&#xff0c;之后通过用户携带的tocken进行解析权限&#xff0c;判断是否可以访问。 具体步骤&#xff1a; 1.在查询用户信息的时候将用户…

神经网络中激活函数介绍、优缺点分析

本文主要介绍神经网络中的常用的激活函数 激活函数是神经网络中用于引入非线性模型&#xff0c;提升模型泛化能力的函数 非线性激活函数至关重要&#xff0c;它可以让神经网络学习复杂特征、提供模型复杂度 1、激活函数定义 激活函数是神经网络模型中的一种非线性函数&#xf…

教学能力知识

第一章课程理论知识 一、课程理念 二、课程目标 1.核心素养 2.课程总目标 三、教学建议 四、教学环节 第二章教学实施 第一节导入新课类 二.导入方法 第二节教学方法类 教学方法的选择依据 第三节教法实施原则类 设计意图 第四节设计意图类 1.教学目标 2.教学重难点 3.教学…

【安当产品应用案例100集】014-使用安当TDE实现达梦数据库实例文件的透明加密存储

随着数据安全重要性的不断提升&#xff0c;数据库文件的落盘加密已成为数据保护的一项基本要求。达梦数据库作为一款高性能的国产数据库管理系统&#xff0c;为用户提供了一种高效、安全的数据存储解决方案。本文将详细介绍如何利用安当KSP密钥管理平台及TDE透明加密组件来实现…

[数据集][目标检测]灭火器检测数据集VOC+YOLO格式3255张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;3255 标注数量(xml文件个数)&#xff1a;3255 标注数量(txt文件个数)&#xff1a;3255 标注…

c++多线程下崩溃一例分析 ACTIONABLE_HEAP_CORRUPTION heap failure block not busy DOUBLE

之前的三个代码接口使用了同一把锁&#xff0c;共享资源的访问是有序执行的没有问题。最近改成各个接口使用单独的锁&#xff0c;结果漏掉了共享资源的保护&#xff0c;于是出现了崩溃。最近与这个崩溃做斗争并定位找到的原因&#xff0c;成功复现了。这里总结下&#xff0c;后…

[YM]课设-C#-WebApi-Vue-员工管理系统 (六)前后端交互

Http状态码&#xff1a; 终于也是到了前端 上文提到http状态码 这里详细说一下 1xx 表示临时响应并需要请求者继续执行操作 2xx 成功&#xff0c;操作被成功接收并处理 3xx 表示要完成请求&#xff0c;需要进一步操作。 通常&#xff0c;这些状态代码用来重定向 4…

LiveQing视频点播流媒体RTMP推流服务用户手册-分屏展示:单分屏、四分屏、九分屏、十六分屏、轮巡播放、分组管理、记录加载

LiveQing视频点播流媒体RTMP推流服务用户手册-分屏展示:单分屏、四分屏、九分屏、十六分屏、轮巡播放、分组管理、记录加载 1、分屏展示1.1、分组管理1.1.1、新建分组1.1.2、选择资源1.1.3、编辑分组1.1.4、删除资源 1.2、多分屏1.2.1、选择资源1.2.2、单分屏1.2.3、四分屏1.2.…

【多模态大模型】的正确打开方式——图片

早期痛点 识别图片中的物体&#xff0c;早期可以使用Yolo 但是缺点也很明显&#xff1a; 训练时间长成本高泛华性能差通用识别领域覆盖有限 优点&#xff1a; 特殊领域识别 大模型出现 大模型出现后&#xff0c;一些大模型对接了图片识别相关的模型&#xff0c;实现了图片…

利用衍射进行材料分析--Muad

软件介绍 MAUD是一款免费软件&#xff0c;使用组合 Rietveld 方法分析衍射数据。其功能不仅限于衍射&#xff0c;还包括荧光和反射率。 它可以分析来自 X 射线源以及中子、TOF 和 TEM 电子的数据。相含量和晶体结构、微观结构特征&#xff08;如尺寸和应变&#xff09;、晶体…

沉浸式体验亚马逊云科技上私有化部署零一万物AI大模型

小李哥将继续带大家沉浸式体验亚马逊云科技上的国产AI大模型。最近亚马逊云科技的机器学习模型管理平台Amazon SageMaker JumpStart 上线了由零一万物提供的基础模型 Yi-1.5 6B/9B/34B&#xff0c;这也是首批登陆中国区 Amazon SageMaker JumpStart 的中文基础模型&#xff0c;…

【多线程】并发编程wait和sleep的区别

notyfy、notifyAll、wait的使用&#xff1a;sleep/wait/notify/notifyAll分别有什么作用 背景&#xff1a;之前的博客讲解到了notify的使用&#xff0c;那并发编程的时候&#xff0c;到底该用 sleep还是notify呢&#xff1f;本篇我们来一起梳理一下区别 所属类与方法类型 wait…

vscode+django开发后端快速测试接口(轻量版,免postman安装)

目录 背景 步骤 安装插件 编写测试文件 示例一&#xff1a;get接口类型 示例二&#xff1a;post接口类型 示例三&#xff1a;delete接口类型 如何运行test.http测试文件 背景 在最近工作中涉及到使用Django框架开发后端&#xff0c;写完接口后&#xff0c;不可避免需要…

php法律事务综合管理系统Java律师事务所业务流程管理平台python法律服务与案件管理系统(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…

Java八股文总结一

Java基础 一、JDK、JRE、JVM之间的关系&#xff1f; 1、JDK(Java Development Kit):Java开发工具包&#xff0c;提供给Java程序员使用&#xff0c;包含了JRE&#xff0c;同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。 2、JRE(Java Runtime Environment):Ja…