.: 1. 清除浮动解决高度塌陷
1. 给父元素设置高度
2. 在结尾处添加新的div标签clear:both
3. 父级div定义伪类:after和zoom
4. 给父元素设置overflow:hidden;
5. 父级div定义overflow:auto
2. clearfix解决高度塌陷
主要解决:1、高度塌陷问题;2父子元素边界重合问题
.clearfix:after,
.clearfix:before
{
content: " ";
display:table;
}
.clearfix:after
{
clear:both;
}
IE6一下不支持,所以i在后面新建一个clearfix,定zoom: 1
3. ps
Adobe Photoshop是Adobe Systems开发和发行的图像处理软件,主要处理以像素所构成的数字图像。
可进行平面处理,广告摄影,设想创意,专业评测,网页制作,后期修饰,视觉创意,界面设计。
功能上看,该软件可分为图像编辑、图像合成、校色调色及功能色效制作部分等。
4. 相对定位
定位:
- 定位指的就是将指定的元素摆放到页面的任意位置
通过定位可以任意的摆放元素
- 通过position属性来设置元素的定位
- 可选值:
static:默认值,元素没有开启定位
relative:开启元素的相对定位
absolute:开启元素的绝对定位
fixed:开启元素的固定定位(也是绝对定位的一种)
当元素的position属性设置为relative时,则开启了元素的相对定位
1.当开启了元素的相对定位以后,而不设置偏移量时,元素不会发生任何变化
2.相对定位是相对于元素在文档流中原来的位置进行定位
3.相对定位的元素不会脱离文档流
4.相对定位会使元素提升一个层级
5.相对定位不会改变元素的性质,块还是块,内联还是内联
当开启了元素的定位(position属性值是一个非static的值)时,可以通过left right top bottom四个属性来设置元素的偏移量
left:元素相对于其定位位置的左侧偏移量
right:元素相对于其定位位置的右侧偏移量
top:元素相对于其定位位置的上边的偏移量
bottom:元素相对于其定位位置下边的偏移量
通常偏移量只需要使用两个就可以对一个元素进行定位,
一般选择水平方向的一个偏移量和垂直方向的偏移量来为一个元素进行定位
5. 绝对定位
当position属性值设置为absolute时,则开启了元素的绝对定位
绝对定位:
1.开启绝对定位,会使元素脱离文档流
2.开启绝对定位以后,如果不设置偏移量,则元素的位置不会发生变化
3.绝对定位是相对于离他最近的、开启了定位的祖先元素进行定位的(一般情况,开启了子元素的绝对定位,都会同时开启父元素的相对定位)
如果所有的祖先元素都没有开启定位,则会相对于浏览器窗口进行定位
4.绝对定位会使元素提升一个层级
5.绝对定位会改变元素的性质:
内联元素变成块元素,
块元素的宽度和高度默认都被内容撑开
6. 固定定位
当元素的position属性设置fixed时,则开启了元素的固定定位
固定定位也是一种绝对定位,它的大部分特点都和绝对定位一样
不同的是:
固定定位永远都会相对于浏览器窗口进行定位
固定定位会固定在浏览器窗口某个位置,不会随滚动条滚动
IE6不支持固定定位
7. 元素的顶级
如果定位元素的层级是一样,则下边的元素会盖住上边的
通过z-index属性可以用来设置元素的层级
可以为z-index指定一个正整数作为值,该值将会作为当前元素的层级,层级越高,越优先显示
对于没有开启定位的元素不能使用z-index
8. 透明度
设置元素的透明背景
opacity可以用来设置元素背景的透明,它需要一个0-1之间的值
0 表示完全透明
1 表示完全不透明
0.5 表示半透明
opacity属性在IE8及以下的浏览器中不支持
IE8及以下的浏览器需要使用如下属性代替
alpha(opacity=透明度)
透明度,需要一个0-100之间的值
0 表示完全透明
100 表示完全不透明
50 半透明
这种方式支持IE6,但是这种效果在IE Tester中无法测试
9. 背景
使用background-image来设置背景图片
语法:background-image:url(相对路径);
- 如果背景图片大于元素,默认会显示图片的左上角
- 如果背景图片和元素一样大,则会将背景图片全部显示
- 如果背景图片小于元素大小,则会默认将背景图片平铺以充满元素
可以同时为一个元素指定背景颜色和背景图片,这样背景颜色将会作为背景图片的底色
一般情况下设置背景图片时都会同时指定一个背景颜色
background-repeat用于设置背景图片的重复方式
可选值:
repeat,默认值,背景图片会双方向重复(平铺)
no-repeat,背景图片不会重复,有多大就显示多大
repeat-x, 背景图片沿水平方向重复
repeat-y,背景图片沿垂直方向重复
10. 电驴导航条
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>电驴导航</title>
<style type="text/css">
.box{
width: 990px;
height: 32px;
background: #000;
margin: 50px auto;
/* 设置背景图片 /
background-image: url(./img/BG.png);
/ 设置水平方式重复 */
background-repeat: repeat-x;
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
11. 背景偏移定位
背景图片默认是贴着元素的左上角显示
通过background-position可以调整背景图片在元素中的位置
可选值:
该属性可以使用 top right left bottom center中的两个值来指定一个背景图片的位置
top left 左上
bottom right 右下
如果只给出一个值,则第二个值默认是 center
也可以直接指定两个偏移量
第一个值是水平偏移量
- 如果指定的是一个正值,则图片会向右移动指定的像素
- 如果指定的是一个负值,则图片会向左 移动指定的像素
第二个是垂直偏移量
- 如果指定的是一个正值,则图片会向下移动指定的像素
- 如果指定的是一个负值,则图片会向上移动指定的像素
.:1. 动态图片按钮
做完功能以后,发现在第一次切换图片时,会发现图片有一个非常快的闪烁,这个闪烁会造成一次 不佳的用户体验
产生问题的原因:
背景图片是以外部资源的形式加载进网页的,浏览器每加载一个外部资源就需要单独的发送一次请求
但是我们的外部资源并不是同时加载,浏览器会在资源被使用时才去加载资源
我们这个练习,一上来浏览器只会加载link.png
由于hover和active的状态没有马上触发,所以hover.png和active.png并不是立即加载的
当hover被触发时,浏览器才去加载hover.png
当active被触发时,浏览器才去加载active.png
由于加载图片需要一定的时间,所以在加载和显示过程会有一段时间,背景图片无法显示,导致出现闪烁的情况
为了解决该问题,可以将三个图片整合为一张图片,这样可以同时将三张图片一起加载,就不会出现闪烁的问题了
然后再通过background-position来切换要显示的图片的位置,这种技术叫做图片整合技术(CSS-Sprite)
优点:
1 将多个图片整合为一张图片里,浏览器只需要发送一次请求,可以同时加载多个图片,提高访问效率,提高了用户体验。
2 将多个图片整合为一张图片,减小了图片的总大小,提高请求的速度,增加了用户体验
2. 简写背景属性
设置一个背景颜色
background-color: #bfa;
设置一个背景图片
background-image: url(img/3.png);
设置背景不重复
background-repeat: no-repeat;
设置背景图片的位置
ackground-position: center center;
设置背景图片不随滚动条滚动
background-attachment: fixed;
background
- 通过该属性可以同时设置所有背景相关的样式
- 没有顺序的要求,谁在前睡在后都行
- 也没有数量的要求,不写的样式就使用默认值
3. 表格
在HTML中,使用table标签来创建一个表格
在table标签中使用tr来表示表格中的一行,有几行就有几对tr
在tr中需要使用td来创建一个单元格,有几个单元格就有几个td
rowspan用来设置纵向的合并单元格
<td rowspan="2">B4</td>
colspan横向的合并单元格
<td colspan="2">D3</td>
table和td边框之间默认有一个距离,通过border-spacing属性可以设置这个距离
border-spacing: 10px;
border-collapse可以用来设置表格的边框合并
如果设置了边框合并,则border-spacing自动失效
border-collapse: collapse;
设置隔行变色
tbody > tr:nth-child(even){
background-color: #bfa;
}
4. 表格样式
<!DOCTYPE html >
< html xmlns = “ http://www.w3.org/1999/xhtml” >
< meta charset = “ utf-8” />
< title > 指定对象内表设置样式</ title >
< 样式>
.divcss5 {width:400px}
.divcss5表{背景:#CCC; 颜色:#F00}
.divcss5表td {背景:#FFF}
</ style >
</ head >
< 身体>
< div class = “ divcss5” >
< 表格宽度= “ 100%” 边框= “ 0”单元间距= “ 1”单元格填充= “ 0” >
< tr >
< td > 内容一</ td >
< td > 内容一</ td >
< td > 内容一</ td >
</ tr >
< tr >
< td > 内容二</ td >
< td > 内容</ td >
< td > 内容</ td >
</ tr >
</ 表格>
</ div >
</ body >
</ html >
5. 长表格
有一
.:
些情况下表格是非常的长的,这时就需要将表格分为三个部分,表头,表格的主体,表格底部
在HTML中为我们提供了三个标签:
thead 表头
tbody 表格主体
tfoot 表格底部
这三个标签的作用,就来区分表格的不同的部分,他们都是table的子标签,都需要直接写到table中,tr需要写在这些标签当中
thead中的内容,永远会显示在表格的头部
tfoot中的内容,永远都会显示表格的底部
tbody中的内容,永远都会显示表格的中间
如果表格中没有写tbody,浏览器会自动在表格中添加tbody
并且将所有的tr都放到tbody中,所以注意tr并不是table的子元素,而是tbody的子元素
通过table > tr 无法选中行 需要通过tbody > tr
6. 表格布局
以前表格更多的情况实际上是用来对页面进行布局的,但是这种方式早已被CSS所淘汰了
表格的列数由td最多的那行决定
表格是可以嵌套,可以在td中在放置一个表格
7. 完善
经过修改后的clearfix是一个多功能的样式,既可以解决高度塌陷,又可以确保父元素和子元素的垂直外边距不会重叠
.clearfix:before,
.clearfix:after{
content: "";
display: table;
clear: both;
}
.clearfix{
zoom: 1;
}