CSS/LESS规范

简介: CSS/LESS规范

一、color变量的命名与使用

目前项目使用的颜色使用存在两个问题:

  • 绝大多数的颜色是直接使用十六进制的方式。不利于后期的维护,比如设计师需要升级样式,或者后期需要做暗黑模式功能。这样我们就必须要进行全项目的批量替换。
  • 变量命名不够语义化

样式变量一般分为两种:

// 第一种:设计师维护的色板,所有设计稿上的颜色都取自与这个色板
@blue100: #de6798;
@blue200: #de6768;
@blue300: #de6768;
@gray_1: #de6768;
@gray_2: #de6768;
...
// 第二种:语义化变量,色板里取值,用于常规业务的颜色
@ButtonBg:@blue20;
@primary:@blue20;
...
复制代码

对于前端开发者来说,应该是优先使用语义化变量,再使用色板变量,最后再使用具体的十六进制色值。

二、CSS选择器

由于CSS引擎查找样式表,对每条规则都按从右到左的顺序去匹配。

常见的高开销做法:

#myList li {}
// 针对这行代码,浏览器需要先遍历页面上每个li元素,并且每次都要去确认这个li元素的父元素id是不是myList
* {} 
// 对于通配符,它匹配所有元素,因此浏览器必须去遍历每一个元素
复制代码

结论:

  • 1.避免使用通配符
  • 2.少用标签选择器
  • 3.减少嵌套(后代选择器的开销是最高的,因此尽量把选择器的深度降到最低,最高不要超过三层)
  • 4.多用类

三、Font-weight属性值的使用

对于font-weight的取值,最终效果依赖于字体包的支持,如果是使用数值,如果字体包不支持会根据字重匹配规则得到最终渲染出来的字重,这样其实会跟预想值有些偏差。并且在日常开发中,其实使用bold和normal两种就能满足业务需求了。避免使用border和lighter,因为这两者是一个相对值。

更多介绍可看:为什么前端项目里font-weight值不推荐使用数字,而是字重描述符?

结论:

  • 尽量使用bold和normal,如果ui设计师有其他字重需要,再用数值
  • 避免使用border和lighter

四、word-break:break-all和word-wrap:break-word知多少

多行英文换行时,为了防止文字溢出,并保证单词不截断,使用以下两个属性结合:

word-break:normal;
word-wrap:break-word;
复制代码

详情看:word-break:break-all和word-wrap:break-word知多少

五、慎用存在兼容性的一些CSS属性

1. Overflow:overlay

overflow:overlayoverflow:auto相似,区别是overlay能够使滚动条出现在内容的顶部而不占用空间。但是这个属性存在兼容性问题,如果使用的话在一些浏览器中就会出现滚动条未出现的情况。

Overlay的使用背景

页面的某个元素,假定其内容超出了设置的宽高,此时需要滚动条。但是UI设计师觉得滚动条可以在鼠标hover时再出现,非hover时隐藏。在滚动条显示与隐藏之间切换时,如果滚动条占据了宽高,就会引起元素内的内容发生抖动,如果滚动条不占据宽高或不挤压内容,交互体验就能有很大优化。

兼容性

网络异常,图片无法展示
|

解决方案

  • 使用overflow:auto或overflow:scroll时,可以预留滚动条的位置。但是这个方案不是很好维护,特别是针对一些组件。
  • 可以采用一些第三方插件



相关文章
|
1月前
|
缓存 前端开发
前端代码整洁与规范之CSS篇
【4月更文挑战第2天】 前端代码整洁与规范之CSS篇
85 4
|
1月前
|
前端开发 JavaScript
webpack成长指北第7章---webpack的css\less\scss样式打包
webpack成长指北第7章---webpack的css\less\scss样式打包
54 0
|
1月前
|
敏捷开发 人工智能 前端开发
让你爽到飞起的【懒人插件AutoScssStruct4Vue】VSCode根据template的标签目录自动一键生成CSS/SCSS/LESS结构,敏捷开发必备插件!!!
让你爽到飞起的【懒人插件AutoScssStruct4Vue】VSCode根据template的标签目录自动一键生成CSS/SCSS/LESS结构,敏捷开发必备插件!!!
|
6月前
|
前端开发
解决VScode在保存less文件时,自动生成对应的css文件以及安装Easy less之后,计算式子不显示结果的问题
解决VScode在保存less文件时,自动生成对应的css文件以及安装Easy less之后,计算式子不显示结果的问题
|
1月前
|
前端开发 JavaScript
【实现js和css互通、共享常量参数值】js如何获取CSS/SCSS/LESS的常量、CSS/SCSS/LESS又是如何获取js的值(或者说js是如何主动推送参数给CSS使用的)?
【实现js和css互通、共享常量参数值】js如何获取CSS/SCSS/LESS的常量、CSS/SCSS/LESS又是如何获取js的值(或者说js是如何主动推送参数给CSS使用的)?
|
16天前
|
存储 前端开发 编译器
【CSS预处理语言】less快速入门
【CSS预处理语言】less快速入门
18 1
|
1月前
|
XML 前端开发 数据格式
探索CSS预处理器:Sass、Less与Stylus
探索CSS预处理器:Sass、Less与Stylus
|
1月前
|
前端开发
【Web前端】CSS基本语法规范和引入方式&&常见选择器用法&&常见元素属性
【Web前端】CSS基本语法规范和引入方式&&常见选择器用法&&常见元素属性
|
1月前
|
前端开发
【专栏:CSS进阶篇】CSS变量与预处理器(Sass/Less)
【4月更文挑战第30天】本文探讨了CSS变量和预处理器Sass的使用,以提升开发效率和代码可维护性。CSS变量通过--*语法定义,可在文档范围内重用,减少冗余,提高可维护性。Sass预处理器引入了变量、嵌套规则、混合和函数等特性,使CSS编写更简洁、可维护。Sass变量使用$符号定义,支持嵌套规则和混合,如定义border-radius混合以减少重复代码。Sass的高级功能使其成为强大工具。
|
1月前
|
前端开发
【专栏】在 create-react-app 中集成 less/sass 预处理器和 react-css-modules 的方法
【4月更文挑战第29天】本文介绍了在 create-react-app 中集成 less/sass 预处理器和 react-css-modules 的方法。首先,通过 `npm` 安装 less 或 sass 依赖,然后修改 `config-overrides.js` 配置文件以支持 less/sass 编译。接着,详细阐述如何使用 less/sass 编写样式。再者,安装 react-css-modules 并配置 webpack,使能样式模块化。最后,展示了如何结合使用 less/sass 和 react-css-modules,以提升前端开发的效率和代码质量。