企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
>因在项目中使用的是 Vant 开源的移动端组件库,所以在 Css 编写中 我们更倾向于 less 语法。如果在管理平台例如使用 " element ui " 时 请遵循 api 规范使用 scss 这里不做强制要求,视情况而定。 >下面会针对页面样式编写的过程中进行规范展示。 <br /> ``` 保持代码的简洁,使用属性缩写,不必要的值不用写 /* 不推荐 */ div {   transition: all 1s;  top: 50%; margin-top: -10px;  padding-top: 5px;    padding-right: 10px;  padding-bottom: 20px;    padding-left: 10px; } /* 推荐使用 */ div {   transition: 1s;   top: calc(50% - 10px);   padding: 5px 10px 20px; } ``` ``` 当使用带有前缀的属性时,通过缩进的方式,让每个属性的值在垂直方向对齐,这样便于多行编辑 .selector {    -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.15);            box-shadow: 0 1px 2px rgba(0,0,0,.15); } ``` ``` 声明顺序 相关属性应为一组,推荐的样式编写顺序 .div { /* Positioning */ position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 100; /* Box model */ display: block; box-sizing: border-box; width: 100px; height: 100px; padding: 10px; border: 1px solid #e5e5e5; border-radius: 3px; margin: 10px; float: right; overflow: hidden; /* Typographic */ font: normal 13px "Helvetica Neue", sans-serif; line-height: 1.5; text-align: center; /* Visual */ background-color: #f5f5f5; color: #fff; opacity: .8; /* Other */ cursor: pointer; } ``` ``` 有多个声明块共享命名空间时必须使用嵌套书写,避免选择器的重复 /* 不推荐 */ .main .title { font-weight: 700; } .main .content { line-height: 1.5; } .main { .warning { font-weight: 700; } .comment-form { #comment:invalid { color: red; } } } /* 推荐使用 */ .main { .title { font-weight: 700; } .content { line-height: 1.5; } .warning { font-weight: 700; } } #comment:invalid { color: red; } ``` ``` Less 的变量值总是以同一作用域下最后一个同名变量为准,务必注意后面的设定会覆盖所有之前的设定。 变量命名采用 '@foo-bar' 形式,不使用 '@fooBar' 形式 /* 不推荐 */ @sidebarWidth: 200px; @width:800px; /* 推荐使用 */ @sidebar-width: 200px; @width: 800px; ``` ``` 使用less父选择器 & 伪类属性建议采用父选择器写法代替传统写法 /* 不推荐 */ a { color: #fff; } a:hover { color: #ddd; } /* 推荐使用 */ a { color: #fff; &:hover { color: #ddd; } } ``` ``` 在定义 mixin 时,如果 mixin 名称不是一个需要使用的 className,加上括号,否则即使不被调用也会输出到 CSS 中 /* 不推荐 */ big-text { font-size: 2em; } h3 { .big-text; } /* 推荐使用 */ .big-text() { font-size: 2em; } h3 { .big-text(); } ``` <br /> >01\. 不建议轻易改动核心样式库,公用样式库, 和通用 CSS 库,改动后,要经过全面测试。 02\. 每个 style 标签都应该具有scoped属性,要么使用 BEM 约定。减少穿透选择器的应用。 03\. 样式结尾不能漏写分号。 04\. 样式指明,尽可能不要出现重复代码,让选择器更精准,减少iD,避免使用 !important 进行样式覆盖,覆盖样式会使维护和调试更困难,所以要尽量避免。 05\. 单位尽可能减少固定值,固定宽高比。用内外边距以及百分比 em rem 等单位代替,时间单位用 s 比 ms 好。 06\. 层级 (z-index) 必须清晰明确,页面弹窗、气泡为最高级(最高级为999),不同弹窗气泡之间可在三位数之间调整;普通区块为10-90内10的倍数;禁止层级间盲目攀比。 07\. 对于 > + ~ 选择器的两边各保留一个空格,行缩进使用2个空格。 08\. 不随意使用 ID, ID 的优先级高于 CLASS,且 ID 是唯一,按照需求使用,不滥用。 09\.将嵌套深度限制在2级。对于超过3级的嵌套,给予重新评估。这可以避免出现过于详实的CSS选择器,避免大量的嵌套规则。当可读性受到影响时,将之打断。推荐避免出现多于20行的嵌套规则出现。 <br /> ## :-: 性能优化 ``` 慎重选择高消耗的样式 高消耗属性在绘制前需要浏览器进行大量计算 box-shadows border-radius transparency transforms CSS filters(慎用) ``` ``` 正确使用 Display 的属性 Display 属性会影响页面的渲染,请合理使用 display: inline后不应该再使用 width、height、margin、padding 以及 float display: inline-block 后不应该再使用 float display: block 后不应该再使用 vertical-align display: table-\* 后不应该再使用 margin 或者 float * 不滥用 Float Float在渲染时计算量比较大,尽量减少使用 ```