回顾历史,CSS1于1996.12.17发正式版,它是为辅助HTML的展现效果而生的。
1998.5.12,CSS2发正式版。随后发修订版CSS2.1,纠正了CSS2中的一些错误。注意从CSS2起,CSS的作用就不是辅助展现了,变为全全负责展现。
Cascading Style Sheets - 层叠(多层、叠加)、样式(包括什么)
.mod
{
margin-bottom:30px;
color:#666
}
h [0-9a-f] nonascii [\240-\377] unicode \\{h}{1,6}(\r\n|[ \t\r\n\f])? escape {unicode}|\\[^\r\n\f0-9a-f] nmstart [_a-z]|{nonascii}|{escape} nmchar [_a-z0-9-]|{nonascii}|{escape}
<div class="I❤Douban">content</div>
<div class="克军">content</div>
@media print
{
.mod {
margin-bottom:20pt;
}
}
@charset, @document, @font-face, @import, @keyframes, @media, @page, @supports
position: absolute;
content: "\0020";
width: 590px;
border: none;
background:red url(http://img3.douban.com/pics/blank.gif) no-repeat 0 0;
height:90%;
line-height: 1.62;
border-left:3px solid #eee;
Recommended | Occasional use | Not recommended | |
---|---|---|---|
Screen | em, px, % | ex | pt, cm, mm, in, pc |
em, cm, mm, in, pt, pc, % | px, ex |
绝对单位: em, cm, mm, in, pt, pc, px
相对单位: %, em, ex, (ch, rem, vw, vh, vmin, vmax)
unit | relative to |
---|---|
‘em’ | font size of the element |
‘ex’ | x-height of the element's font |
‘ch’ | width of the "0" (ZERO, U+0030) glyph in the element's font |
‘rem’ | font size of the root element |
‘vw’ | 1% of viewport's width |
‘vh’ | 1% viewport's height |
‘vmin’ | 1% of viewport's smaller dimension |
‘vmax’ | 1% of viewport's larger dimension |
算术题:
body { font-size:14px; }
h1 { font-size:1em;width:50em; }
h1 p { font-size:2em;width:50em; }
盒,简单理解为所有被标签标记的元素,标签之外的看作匿名box。
盒模型,box的尺寸规格
决定如何渲染,一是计算尺寸(宽/高),二是如何定位
4区域:内容区域、内边距(padding)、边框(border)、外边距(margin)
p { margin: 10px; }
p { margin: 10px 20px; }
p { margin: 10px 20px 5px; }
p {
width: 200px;
padding: 20px;
border: 1px solid #eee;
border-width: 1px 0;
border-style: solid none dashed;
margin: 10px 20px 5px 20px;
}
block box(块级元素): width/height属性有效,不指定宽自动充满父容器(父级block元素)
inline box(行内元素): width/height属性无效,宽度由实际内容绝定,遇到父容器边缘折行(连续字符例外,word-wrap:break-word)
block格式化:1. 垂直、顺序布局 2. 折叠边距特性
inline格式化:1. 水平方向、顺序布局 2. 垂直方向的padding/margin无效
inline-block box: 内部按block格式化,外部按inline格式化
static position - 包括block格式化/inline格式化,left/right/top/bottom/z-index属性无效
relative position - 包括block格式化/inline格式化,left/right/top/bottom/z-index属性有效
left/right/none。脱离当前文档流,定位到父容器的边缘,或另一个float box的边缘
不定宽情况下,实际宽度由内容决定
父容器水平方向空间不足时,向下移动直到可以放下
文档流中的inline box环绕float box
会和文档流中的block box重叠。用clear:both|left|right避免重叠
float会形成一个新的block formatting context(块格式化上下文,后面介绍)
float不会超出所在BFC的范围,也不会和其它BFC重叠
left/right/top/bottom/z-index属性无效
脱离当前文档流。浮在其它元素上,z-index决定z轴上的关系
不定宽情况下,实际宽度由内容决定
float会形成一个新的block formatting context
left/right/top/bottom/z-index属性有效
left/right/top/bottom是距最近的absolute/relative定位的父级元素的值
fixed position是相对viewport定位
z-index,对relative/absolute/fixed有效。默认值auto。同值后面高于前面。可正可负。
事件不能穿过覆盖层。(IE例外) 可用pointer-events:none改变
思考:用更多方案实现
多样性和灵活性是前端开发的魅力
MDC定义: A block formatting context is a part of a visual CSS rendering of a Web page. It is the region in which the layout of block boxes occurs and in which floats interact with each other.
一个BFC是CSS可视化渲染页面的一部分,它是把一组块级box和浮动元素放在一起布局的区域。
IE6/7没有BFC的概念。IE6/7的hasLayout与BFC类似。通常用zoom:1触发。
.list li {
margin: 10px 0 0 0;
font-size: 14px;
color: #666;
}
.list-member li {
font-size: 12px;
}
<div class="list list-member">
<ul>
<li>Member ID1
<li>Member ID2
<li>Member ID3
</ul>
</div>
根据CSS优先级将两条规则加在一起。实际为:
继承,子元素可以继承父级的属性:
优先级可以精确计算
div.conent p { color:#000; }
#db-site-note p { color:#999; }
<div style="color:red">
<p>正文</p>
</div>
p { color:#000 !important; }
同值,按规则定义的先后顺序。
.list-member li {
font-size: 12px;
}
.list li {
margin: 10px 0 0 0;
font-size: 14px;
color: #666;
}
<div class="list list-member">
<ul>
<li>Member ID1
<li>Member ID2
<li>Member ID3
</ul>
</div>
避免用!important和标签的style属性
http://dabblet.com/gist/5412926
http://dabblet.com/gist/5185295
展现效果:
HTML内容:
还缺什么?
HTML结构设计、CSS样式