页面外围控制整体布局宽度:wrapper
、页头:header
、页面主体:main
、内容:content
、页脚:footer
、导航:nav
、主导航:mainbav
、子导航:subnav
、顶导航:topnav
、边导航:sidebar
、左导航:leftsidebar
、右导航:rightsidebar
、菜单:menu
、子菜单:submenu
、搜索:search
、栏目:column
、侧栏:sidebar
、功能区(商品模块):shop
、左右中:left
right
center
、登录:login
、登录条:loginbar
、注册:regsiter
、标志:logo
、横幅广告:banner
、热点:hot
、新闻:news
、按钮:btn
、滚动:scroll
、标签页:tab
、文章列表:list
、 标题:title
、摘要:summary
、提示信息:msg
、小技巧:tips
、图标:icon
、下载:download
、加入我们:joinus
、注释:note
、指南:guild
、服务:service
、状态:status
、投票:vote
、合作伙伴:partner
、链接:link
、友情链接:friendlink
、版权:copyright
常见语法规范
两个空格来代替tab
– 这是唯一能保证在所有环境下获得一致展现的方法。:
后应该插入一个空格。box-shadow
)。rgb()
、rgba()
、hsl()
、hsla()
或 rect()
值的内部的逗号后面插入空格。这样利于从多个属性值(既加逗号也加空格)中区分多个颜色值(只加逗号,不加空格)。.5
代替 0.5
;-.5px
代替 -0.5px
)。#fff
。在扫描文档时,小写字符易于分辨,因为他们的形式更易于区分。#fff
代替 #ffffff
。input[type="text"]
。只有在某些情况下是可选的,但是,为了代码的一致性,建议都加上双引号。margin: 0;
代替 margin: 0px;
。直接上例子
/************************** 不好的CSS 写法 **********************************/
.selector, .selector-secondary, .selector[type=text] {
padding:15px;/* 避免为 0 值指定单位,例如,用 `margin: 0;` 代替 `margin: 0px;` */
margin:0px 0px 15px;
background-color:rgba(0, 0, 0, 0.5);
/* 十六进制值应该全部小写,同时尽量使用简写形式的十六进制值 */
box-shadow:0px 1px 2px #CCC,inset 0 1px 0 #FFFFFF
}/************************** 好的 CSS 写法 ***************************************/
.selector, -->为选择器分组时,将单独的选择器单独放在一行
.selector-secondary,
.selector[type="text"] { -->建议为选择器中的属性 `[type="text"]` 添加双引号
padding: 15px; -->每条声明语句的 `:` 后应该插入一个空格
margin-bottom: 15px;
/* 不要在 `rgb()`、`rgba()`、`hsl()`、`hsla()` 或 `rect()` 值的内部的逗号后面插入空格对于属性值或颜色参数,省略小于 1 的小数前面的 0*/
background-color: rgba(0,0,0,.5);
/* 所有声明语句都应当以分号结尾.后一条声明语句后面的分号是可选的,但略这个分号,你的代码可能更易出错对于以逗号分隔的属性值,每个逗号后面都应该插入一个空格*/
box-shadow: 0 1px 2px #ccc, inset 0 1px 0 #fff;
} -->声明块的右花括号应当单独成行
相关的属性声明应当归为一组,并按照下面的顺序排列:
- Positioning -->由于定位(positioning)可以从正常的文档流中移除元素,并且还能覆盖盒模型(box model)相关的样式,因此排在首位
- Box model -->盒模型排在第二位,因为它决定了组件的尺寸和位置。
- Typographic -->文字类
- Visual -->其他属性只是影响组件的*内部(inside)*或者是不影响前两组属性,因此排在后面。
.declaration-order {
/* Positioning 定位之类*/
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 100;/* Box-model 盒模型*/
display: block;
float: right;
width: 100px;
height: 100px;/* Typography 排版印刷类 */
font: normal 13px "Helvetica Neue", sans-serif;
line-height: 1.5;
color: #333;
text-align: center;/* Visual 视觉类 */
background-color: #f5f5f5;
border: 1px solid #e5e5e5;
border-radius: 3px;/* Misc 其他混杂类 */
opacity: 1;
}
@import
引入css文件与 标签相比,
@import
指令要慢很多,不光增加了额外的请求次数,还会导致不可预料的问题。替代办法有以下几种:
元素
将媒体查询放在尽可能相关规则的附近。不要将他们打包放在一个单一样式文件中或者放在文档底部。如果你把他们分开了,将来只会被大家遗忘(同时也会增大维护力度)
当使用特定厂商的带有前缀的属性时,通过缩进的方式,让每个属性的值在垂直方向对齐,这样便于多行编辑。
/* 带前缀的属性 */
.selector {
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.15);
box-shadow: 0 1px 2px rgba(0,0,0,.15);
}
对于只包含一条声明的样式,为了易读性和便于快速编辑,建议将语句放在同一行。对于带有多条声明的样式,还是应当将声明分为多行。
这样做的关键因素是为了错误检测 –-> 例如,CSS 校验器指出在 xxx 行有语法错误。如果是单行单条声明,你就不会忽略这个错误;如果是单行多条声明的话,你就要仔细分析避免漏掉错误了。
/* 一行上的单个声明,这种直接放在一行即可 */
.span1 { width: 60px; }
.span2 { width: 140px; }
.span3 { width: 220px; }
.icon { background-position: 0 0; }
.icon-home { background-position: 0 -20px; }
.icon-account { background-position: 0 -40px; }/* 多个声明,需要将样式分行 */
.sprite {
display: inline-block;
width: 16px;
height: 15px;
background-image: url(./hong.png);
}
在需要显示地设置所有值的情况下,应当尽量限制使用简写形式的属性声明。常见的滥用简写属性声明的情况如下
padding
margin
font
background
border
border-radius
大部分情况下,我们不需要为简写形式的属性声明指定所有值。例如,HTML 的 heading 元素只需要设置上、下边距(margin)的值,因此,在必要的时候,只需覆盖这两个值就可以。过度使用简写形式的属性声明会导致代码混乱,并且会对属性值带来不必要的覆盖从而引起意外的副作用。
/* 不好的例子 */
.element {
margin: 0 0 10px; --> 实际上只要 单独指定 `margin-bottom: 10px` 即可;这样可能会导致覆盖上、水平方向的样式被覆盖
background: red;
background: url("image.jpg");
border-radius: 3px 3px 0 0; --有时候简化实际上反而不易理解,像这种可以不简化
}/* 好的例子 */
.element {
margin-bottom: 10px;
background-color: red;
background-image: url("image.jpg");
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
**正好趁着这个机会补充梳理下简写属性的知识点 ** -->查阅资料 : MDN的CSS 的简写属性
;
background
属性就是一个简写属性,它可以定义background-color
background-image
background-repeat
background-position
font
的简写,margin
这个简写。虽然它们使用起来非常方便,但在使用时,仍需牢记一些边界情况:
没有指定的值会被设置为它的初始值。这听起来似乎本来就很合理的样子,但这确实意味着,它将会覆盖之前设置的值。因此:
background-color: red;
background: url(images/bg.gif) no-repeat top right;
以上样式是将 [ background-color ] 的默认值 transparent
,而不会将 background 的 color 值设置为 red
因为第二条规则优先。
border-style
、margin
或者 padding
,border-width: 1em
—> 这一个值表示所有的边框宽度,margin、padding同理border-width: 1em 2em
— 第一个值表示垂直方向的,即 top 和 bottom;第二个值表示水平方向的,即 left 和 rightborder-width: 1em 2em 3em
— 第一个值表示 top;第二个值表示水平方向的,即 left 和 right; 第三个值表示 bottomborder-width: 1em 2em 3em 4em
— 这四个值分别表示 top、right、bottom、left,总是按此顺序,即从 top 开始的顺时针顺序(Top-Right-Bottom-Left 首字母与英文单词 trouble 的顺序一致:TRBL)border-radius
border-radius: 1em
— 这一个值表示所有的表框角度的半径border-radius: 1em 2em
— 第一个值表示 top-left 和 bottom-right 方向的角;第二个值表示 top-right 和 bottom-left 方向的角border-radius: 1em 2em 3em
— 第一个值表示 top-left 方向的角 ,第二个值表示top-right 和 bottom-left 方向的角,第三个值表示 bottom-right 方向的角border-radius: 1em 2em 3em 4em
— 这四个值分别表示top-left、 top-right、 bottom-right 、bottom-left 方向的角。总是按此顺序,即从top-left开始的顺时针顺序background 有以下属性:
background-color: #000;
background-image: url(images/bg.gif);
background-repeat: no-repeat;
background-position: top right;
可以简写成一行声明:
background: #000 url(images/bg.gif) no-repeat top right;
简写的形式实际上等价于以上普通属性再加上 background-attachment: scroll
以及 CSS3 中的一些附加属性。
下面的声明:
font-style: italic;
font-weight: bold;
font-size: .8em;
line-height: 1.2;
font-family: Arial, sans-serif;
可以简写成下面的:
font: italic bold .8em/1.2 Arial, sans-serif;
这个简写声明实际上等价于以上普通属性再加上 font-variant: normal
和 font-size-adjust: none
(CSS2.0 / CSS3),font-stretch: normal
(CSS3)。
对于 border 来说,宽度、颜色和类型是可以被简写到一个声明里的。比如:
border-width: 1px;
border-style: solid;
border-color: #000;
可以简写成:
border: 1px solid #000;
margin 和 padding 值的简写版本类似。下面的 CSS 声明:
margin-top: 10px;
margin-right: 5px;
margin-bottom: 10px;
margin-left: 5px;
和下面的声明是一样的(注意,值是从 top 顺时针开始的:top、right、bottom、接着是 left)
margin: 10px 5px 10px 5px;
Margin 对于多个值有以下的简写规则:
重要
/* 不好的栗子 */
/* Modal header */
.modal-header {
...
}/* 好的栗子 */
/* 为.modal-title和.modal-close包装元素 */
.modal-header {
...
}
/* Header */
内容区
/* End Header */
.btn
和 .btn-danger
)。.btn
代表 button,但是 .s
不能表达任何意思。.js-*
class 来标识行为(与样式相对),并且不要将这些 class 包含到 CSS 文件中。/* 不好的🌰 */
.t { ... }
.red { ... }
.header { ... }/* 好的🌰 */
.tweet { ... }
.important { ... }
.tweet-header { ... }
[class^="..."]
)。浏览器的性能会受到这些因素的影响。/* 不好的🌰 */
span { ... }
.page-container #stream .stream-item .tweet .tweet-header .username { ... }
.avatar { ... }/* 好的🌰 */
.avatar { ... }
.tweet-header .username { ... }
.tweet .avatar { ... }
将你的编辑器按照下面的配置进行设置,以避免常见的代码不一致和差异:
1.长名称或词组可以使用中横线来为选择器命名。
2.不建议使用“_”下划线来命名CSS选择器,为什么呢?
这里有一篇破折号与下划线的详细讨论 中文篇:点击查看
有时候可以给选择器添加一个表示状态的前缀,让语义更明了,比如下面是添加了“.is-”前缀。
.widthView {}
/* 可以加个状态 */
.is-widthView {}
命名永远是程序员的痛啊!!! 面对如山海般的代码,每天命名那么多变量名,实在词穷,所以就有一些’不法分子’取了各种稀奇古怪的名字,实在是让代码阅读性一降再降
这里也只能罗列出一些常见命名规则,多少能在命名的时候有所参照,防止一个意思取出了十几种名字
导航:nav
主导航:mainnav
子导航:subnav
顶导航:topnav
边导航:sidebar
左导航:leftsidebar
右导航:rightsidebar
菜单:menu
子菜单:submenu
标题: title
摘要: summary
让浏览器执行效率更高
margin
border
padding
宽高背景颜色类名之间的链接符可以下划线 _
或者 中横线 -
有以下几种机制规定
使用属性选择器,语法规则如下:
Element[att |= "values"]{ sRules}
说明:选择具有
att
属性(也就是哪种选择器)且属性值为以values
开头并用连接符-
分隔的字符串的Element
元素,如果属性值仅为val,也将被选择。
HTML
css规范
- 列表项目
- 列表项目
- 列表项目
- 列表项目
- 列表项目
- 列表项目
- 列表项目
如此一来 第 2、3、4 个列表就是红色并且没有前面的 圆点
择具有att
属性(也就是哪种选择器)且属性值为以values
开头并用连接符-
分隔的字符串的Element
元素,如果属性值仅为val,也将被选择。
HTML
css规范
- 列表项目
- 列表项目
- 列表项目
- 列表项目
- 列表项目
- 列表项目
- 列表项目
如此一来 第 2、3、4 个列表就是红色并且没有前面的 圆点
[外链图片转存中…(img-KDT9easI-1671521439403)]
上一篇:buildroot 升级软件包
下一篇:CSDN第16期竞赛