css 样式尾部带感叹号是什么意思_CSS书写规范

推荐大家看看百度FEX前端团队和腾讯AlloyTeam前端团队的CSS代码规范。

fex-team/styleguide​github.com
32a238a44a4e3a3e6c8f261692e7b852.png
Code Guide by @AlloyTeam​alloyteam.github.io

1. 样式属性顺序

单个样式规则下的属性在书写时,应按功能进行分组,组之间需要有一个空行。
同时要以Positioning Model > Box Model > Typographic > Visual 的顺序书写,提高代码的可读性。

  1. Positioning Model 布局方式、位置,相关属性包括:position, top, z-index, display, float等
  2. Box Model 盒模型,相关属性包括:width, height, padding, margin,border,overflow
  3. Typographic 文本排版,相关属性包括:font, line-height, text-align
  4. Visual 视觉外观,相关属性包括:color, background, list-style, transform, animation

2. CSS选择器命名规则

  • 分类式命名法(在前端组件化下尤为重要)
  1. 布局(grid)(.g-):将页面分割为几个大块,通常有头部、主体、主栏、侧栏、尾部等!
  2. 模块(module)(.m-):通常是一个语义化的可以重复使用的较大的整体!比如导航、登录、注册等
  3. 元件(unit)(.u-):通常是一个不可再分的较为小巧的个体,通常被重复用于各种模块中!比如按钮、输 入框、loading等!
  4. 功能(function)(.f-):为方便一些常用样式的使用,我们将这些使用率较高的样式剥离出来,按需使用,通常这些选择器具有固定样式表现,比如清除浮动等!不可滥用!
  5. 状态(.z-):为状态类样式加入前缀,统一标识,方便识别,她只能组合使用或作为后代出现(.u-ipt.z-dis{},.m-list li.z-sel{})
  6. javascript(.j-):.j-将被专用于JS获取节点,请勿使用.j-定义样式
  • 不要使用 " _ " 下划线来命名css
    能良好的区分javascript变量名
    输入的时候少按一个shift键
    浏览器兼容性问题(比如使用_tips的选择器命名,在IE6是无效的)
  • id采用驼峰式命名(不要乱用id)
  • scss中的变量、函数、混合、placeholder采用驼峰式命名
  • 相同语义的不同类命名方法:
    直接加数字或字母区分即可(如:.m-list、.m-list2、.m-list3等,都是列表模块,但是是完全不一样的模块)。其他举例:.f-fw0、.f-fw1、.s-fc0、.s-fc1、.m-logo2、.m-logo3、u-btn、u-btn2等等。
  • 命名方式(BEM):类-体(例:g-head)、类-体-修饰符(例:u-btn-active)
  • 后代选择器:体-修饰符即可(例:.m-page .cut{})注:后代选择器不要在页面布局中使用,因为污染的可能性较大;

3. 最佳写法

/* 这是某个模块 */.m-nav{}/* 模块容器 */.m-nav li,.m-nav a{}/* 先共性  优化组合 */.m-nav li{}/* 后个性  语义化标签选择器 */.m-nav a{}/* 后个性中的共性 按结构顺序 */.m-nav a.a1{}/* 后个性中的个性 */.m-nav a.a2{}/* 后个性中的个性 */.m-nav .z-crt a{}/* 交互状态变化 */.m-nav .z-crt a.a1{}.m-nav .z-crt a.a2{}.m-nav .btn{}/* 典型后代选择器 */.m-nav .btn-1{}/* 典型后代选择器扩展 */.m-nav .btn-dis{}/* 典型后代选择器扩展(状态) */.m-nav .btn.z-dis{}/* 作用同上,请二选一(如果可以不兼容IE6时使用) */.m-nav .m-sch{}/* 控制内部其他模块位置 */.m-nav .u-sel{}/* 控制内部其他元件位置 */.m-nav-1{}/* 模块扩展 */.m-nav-1 li{}.m-nav-dis{}/* 模块扩展(状态) */.m-nav.z-dis{}/* 作用同上,请二选一(如果可以不兼容IE6时使用) */

4. 统一语义理解和命名

  • 布局(.g-)

fc76bdeec6825933017550b4aabf09d0.png
  • 模块(.m-)、元件(.u-)

a16d9ab503cbcd14b5babea95fb92d9a.png

9647ecde9a2aa20783742b36c0671521.png
  • 功能(.f-)

d1d5e536baf5ccf5fef55eca8f45accc.png
  • 皮肤(.s-)

abbc304b1c1a84b41da45f02adfee0cd.png
  • 状态(.z-)

f2293be232a20718056d025e3fac3762.png

5. 注意事项

  1. 一律小写,中划线
  2. 尽量不用缩写
  3. 不要随便使用id
  4. 去掉小数点前面的0: 0.9rem => .9rem
  5. 使用简写:margin: 0 1rem 3rem

CSS书写顺序
  1.位置属性(position, top, right, z-index, display, float等)
  2.大小(width, height, padding, margin)
  3.文字系列(font, line-height, letter-spacing, color- text-align等)
  4.背景(background, border等)
  5.其他(animation, transition等)

8043cc657a8635029dcd0ff317b3bea5.png

CSS书写规范使用CSS缩写属性
  CSS有些属性是可以缩写的,比如padding,margin,font等等,这样精简代码同时又能提高用户的阅读体验。

68484956039ee437a616fba9fff04887.png


  去掉小数点前的“0”

0aae9e51649062c16e23c33b3467c475.png


  简写命名
  很多用户都喜欢简写类名,但前提是要让人看懂你的命名才能简写哦!

c6b83cfc50df4ebb130a29d25cd44264.png


  16进制颜色代码缩写
  有些颜色代码是可以缩写的,我们就尽量缩写吧,提高用户体验为主。

edbc75ff3c70086fbad2eecde1ffeecf.png


  连字符CSS选择器命名规范
  1.长名称或词组可以使用中横线来为选择器命名。
  2.不建议使用“_”下划线来命名CSS选择器,为什么呢?
  输入的时候少按一个shift键;
  浏览器兼容问题 (比如使用_tips的选择器命名,在IE6是无效的)
  能良好区分JavaScript变量命名(JS变量命名是用“_”)

a3c45f3f5c3ba6d8478daf1df71770f7.png


  不要随意使用Id
  id在JS是唯一的,不能多次使用,而使用class类选择器却可以重复使用,另外id的优先级优先与class,所以id应该按需使用,而不能滥用。 

1c216b5e18fbb9c6c38876f8ffeaf8c2.png


  为选择器添加状态前缀
  有时候可以给选择器添加一个表示状态的前缀,让语义更明了,比如下图是添加了“.is-”前缀。

f5be8a73a0019154c441e3b64f57e953.png

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

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

相关文章

C语言精髓篇|函数的参数和返回值

如果把函数比喻成一台机器,那么参数就是原材料,返回值就是最终产品;从一定程度上讲,函数的作用就是根据不同的参数产生不同的返回值。函数的参数在函数定义中出现的参数可以看做是一个占位符,它没有数据,只…

oc引导win方法_[OC更新]机械革命X1/X6TIS标压测试版更新

加关注这种话银家怎么好意思说出口嘛更新机型机械革命X1 i5-7300hq机械革命X1 i7-7700hq机械革命X6tis i5-7300hq机械革命X6tis i7-7700hq更新内容基于OC0.6.2 MOD版本编译修复WIN下电脑被识别为MBP导致电竞中心打不开问题修复INTEL网卡在BIG SUR下不识别问题禁用secureboot mo…

java 打开gc日志_在运行时打开GC日志记录

java 打开gc日志总是有下一个JVM表现不佳。 而且,您内心深知,如果您只有少数启动选项可以公开一些有关正在发生的事情的信息,那么您可能就有机会真正修复该死的东西。 但是不,您需要的标志( -XX: HeapDumpO…

C 和C语言条件运算符的区别

条件运算符(conditional operator)有时候也称为三元运算符(ternary operator,或者trinary operator),因为它是唯一需要 3 个操作数的运算符:条件 ? 表达式1 : 表达式2条件运算操作会首先计算条…

C 运算符和语句总结

运算符: C 表达式中的左值和右值:当一个对象被用作左值时,用的是对象的身份(内存中的位置)。当作为右值时,用的是对象的值(内容)。或者说,lvalue:具有存贮性质的对象&…

# 遍历结构体_C#学习笔记05--枚举/结构体

一.枚举当变量的取值范围是固定的几个, 例如性别--男,女; 英雄类型 -- 法师, 刺客.战士, 射手等等. 这时就可以使用枚举类型, 会更加简洁方便.1.1.定义:访问修饰符 enum 枚举类型名 {成员1,成员2,成员3,... }public enum Days{Mon 1,Tue,Wed,Thu,Fri,Sat,Sun}enum: 是枚举的…

C语言中枚举enum的用法

本文举例说明C语言中enum枚举关键字的用法。用来同时定义多个常量利用enum定义月份的例子如下。#include enum week {Mon1,Tue,Wed,Thu,Fri,Sat,Sun}; int main() {printf("%d",Tue); return 0; }这样定义Mon的值为1之后,Tue的值就被默认定义为2&#…

苹果更新未知错误17_iOS 13 新功能,静音未知来电

果粉俱乐部让科技更好的服务生活点击上方「蓝字」加入我们iOS 13 正式版系统已经推出了快三周时间,苹果在新系统当中带来了诸多功能改进,包括大家盼望已久的深色模式,新的音量调节设置,自定义流量下载限制等等。除此之外&#xff…

C/C 语言中extern的用法

声明外部变量现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是互相透明的,也就是说,在编译时,全局变量的可见域限制在文件内部。下面举一个简单的例子。创建一个工程,里面含有…

设置公共请求参数_封装一个useFetch实现页面销毁取消请求

前端业务经常会出现这样一类问题,当用户网速过慢或是其他特殊情况下,该页面的请求还未完成,用户就已经点击其他页面跳出去了。理想状态下请求也是应该终止掉的,所以我们应该想办法将请求和页面卸载关联在一起。1 使用AbortControl…

C语言中return的各种用法

按初学的理解,return的任务就是返回对应的参数,在外层函数中对这个参数做进一步处理。实际上return的用法不只这些。为调用的函数返回参数值此类应用最为普遍,通常是在一个具有返回值的函数中,返回一个参数值,这个返回…

代码内查找函数引用_叮~~二级操作题 excel常考函数大梳理

1.AND函数格式:AND(logical1,logical2…)功能:and函数是一个逻辑函数,表示同时满足多个条件。通常配合if函数做条件判断,得值为true或者是false。2.OR函数格式:OR(logical1,logical2…)功能:or函数是一个逻…

总结C语言中的数组知识点

数组:只能存放一种数据类型,比如int类型的数组、float类型的数组,里面存放的数据称为“元素”。数组的定义:首先声明数组的类型,然后声明数组元素的个数,也就是定义需要多少存储空间。数组格式与初始化格式…

主要矛盾和次要矛盾_次要GC,主要GC与完整GC

主要矛盾和次要矛盾在使用Plumbr中的GC暂停检测功能时,我被迫通过大量有关该主题的文章,书籍和演示工作。 在整个旅程中,我多次对次要,主要和完全GC事件的使用(误用)感到困惑。 这导致了这篇博客文章&#…

action mutation 调用_Vuex源码学习(六)action和mutation如何被调用的(前置准备篇)...

module与moduleCollection你一定要会啊!Vuex源码学习(五)加工后的module在组件中使用vuex的dispatch和commit的时候,我们只要把action、mutation注册好,通过dispatch、commit调用一下方法名就可以做到。使用方式vue组件内//in vue componentt…

​嵌入式开发为什么选择C语言?

从语言特点来说C语言有出色的可移植性,能在多种不同体系结构的软/硬平台上运行。简洁紧凑,使用灵活的语法机制,并能直接访问硬件能够直接访问硬件的语言有:汇编和C语言汇编属于低级语言,难以完成一些复杂的功能&#x…

序列化与反序列化的单例模式_序列化代理模式

序列化与反序列化的单例模式在上一篇文章中 ,我谈到了一般的序列化。 这是更加集中的内容,并提供了一个细节: 序列化代理模式 。 这是处理序列化中许多问题的一种好方法,通常是最好的方法。 如果开发人员只想了解这一主题&#xf…

图解C语言的希尔排序

希尔排序是插入排序的一种,又称“缩小增量排序”,希尔排序是直接插入排序算法的一种更高效的改进版本。希尔排序的基本思想设等待排序等元素序列有n个元素,首先取一个整数increment(小于n)作为间隔将全部元素分为n/inc…

给oim_对OIM Web(UI)层进行压力测试

给oimOracle IDM中的默认配置保留20个专用于服务前端(UI)请求的线程 。 这基本上意味着应用程序服务器具有20个线程池,可用于为通过Web控制台(/ identity或/ sysadmin)访问OIM的用户提供服务。 对于Weblogic &#xf…

C语言打印输出红色字体

除了Linux,在VS下也可以实现变色这一效果,先看下面的一段代码:#include int main(int argc,char **argv){ printf("\033[44;37;5m hello world\033[0m\n");return 0;}编译后运行上述代码,结果如下:可见&…