盒模型:浏览器为页面中的每个HTML元素生成的矩形盒子,都要按照可见版式模型(visual formatting model)在页面上排布
可见页面版式的三个属性控制:position、display、float
元素盒子的属性
边框(border):设置边框的宽窄、样式、颜色
{border: 2px dashed red;} /* 全部3个属性,4条边 */
{border-style: dashed;} /* 1个属性,4条边 */
{border-left-style: dashed;} /* 1个属性,1条边 */
内边距(padding):设置盒子内容区与边框的间距
外边距(margin):设置盒子与相邻元素的间距
{margin-top: 5px; margin-right: 10px; margin-bottom: 12px; margin-left: 8px;}
{margin: 5px 10px 12px 8px;}
{margin: 12px 10px 6px;}
{margin: 12px 10px;}
{margin: 12px;}
边框(border)由有个相关属性
内边距是盒子内容区与盒子边框之间的距离
内边距设计计加在了声明的盒子宽度之上
垂直方向上的外边距会叠加(较宽的外边距决定两个元素最终离多远)
水平外边距不叠加(元素的水平间距是相邻外边距之和)
CSS3新增了box-sizing属性,可以将有宽度的盒子设定成具有默认的auto状态下的行为
float,clear
浮动
文本绕排图片
在标记中先写图片,再写环绕它的文本
<img ... />
<p>
... the paragraph text ...
p>
p {
margin: 0;
border: 1px solid red;
}
img {
float: left;
margin: 0 4px 4px 0;
}
浮动非图片元素时,必须给它设定宽度
创建分栏
p {
float: left;
margin: 0;
width: 200px;
border: 1px solid red;
}
img {
float: left;
margin: 0 4px 4px 0;
}
浮动元素脱离了文档流,其父元素也就不会包围它
为父元素添加overflow: hidden
同时浮动父元素
添加非浮动的清除元素
给父元素的最后添加一个非浮动的子元素,然后清除该子元素
由于包含元素一定会包围非浮动的子元素,且清除会让这个子元素位于(清除一侧)浮动元素的下方,因此包含元素一定会包含这个子元素——以及前面的浮动元素
第一种:在HTML标记中添加一个子元素并应用clear属性
第二种:用CSS添加清除元素
.clearfix:after {
/* 必须需要有内容 */
content: ".";
/* 确保这个伪元素没有高度且在页面上不可见 */
display: block;
height: 0;
visibility: hidden;
clear: both;
}
没有父元素时:clear: both
position属性:可以相对于在常规文档流中的位置重新定位
static(默认)、relative、absolute、fixed
在静态定位的情况下,每个元素处在常规文档流中
相对的是它在原来文档流中的位置,可以使用top、right、bottom、left属性来改变位置
这个元素原来占据的空间没有动,其他元素也没动
要考虑到元素原来的空间
会把元素彻底从文档流中拿出来,相对于定位上下文定位
完全移除文档流,定位上下文是视口(屏幕),不会随页面滚动而移动
绝对定位元素的任何祖先元素都可以成为它的定位上下文,只要position为relative
display属性:block,inline,none
display: none
背景支持为元素添加背景颜色和背景图片
元素的前景层包含内容和边框
元素的背景层可以用实色填充(background-color),也可以包含任意多个背景图片(background-image),背景图片叠加在背景颜色之上
background-color
设定元素的颜色,然后元素就会以此填充背景图层
background-image
比元素小的背景图片会以元素左上角为起点,在水平和垂直方向上重复出现,直至填满整个背景空间
改变起点位置:background-position
改变水平和垂直重复效果:background-repeat
background-repeat
repeat(默认):在水平和垂直方向上重复出现,直至填满整个背景空间
repeat-x:只在水平方向重复
repeat-y:只在垂直方向重复
no-repeat:不重复
round:为确保图片不被剪切,通过调整图片大小来适应背景区域
space:为确保图片不被剪切,通过在图片间添加空白来适应背景区域
background-position同时设定元素和图片的原点
background-size:控制背景图片的尺寸
background-attachment:控制滚动元素内的背景图片是否随元素滚动而移动
body {
/* image, position, color, repeat, size, attachment */
background: url("images/img.png") center #fff no-repeat contain fixed;
}
少写了哪个属性就会使用相应属性的默认值
background:
url("images/img1.png") 30px -10px no-repeat,
url("images/img2.png") 145px 0px no-repeat,
url("images/img3.png") 140px -3 0px no-repeat,
#ffbd75;
先列出的图片显示在上方,更接近前景
渐变:在一定长度内由两种或多种颜色之间自然的过渡
渐变方向上的点,可以在这些点上设定颜色和不透明度
可以添加任意多个渐变点
渐变点的位置一般用整个渐变宽度的百分比来表示
为同一个渐变点设定两种颜色可以得到突变效果
开始和结束位置如果没有声明则默认为0%和100%
如果没有声明,颜色会均匀分布于整个渐变
可以使用参数指定形状、位置、尺寸、颜色、不透明度
渐变形状