本笔记中,标签=元素
选择器
普通选择器
| 选择器 | 描述 |
|---|---|
标签名{} | 选取该标签名的一切元素 |
.className{} | 选取class属性值为className的一切元素 |
#idName{} | 选取id属性值为idName的唯一元素 |
选择器1,选择器2,选择器N{} | 选择器分组:同时选中多个选择器对应的元素 |
*{} | 通配选择器:选中网页所有的元素 |
选择器1选择器2选择器N{} | 交集(复合)选择器:选中满足多个选择器的元素 |
祖先元素 后代元素{} | 后代元素选择器:选中祖先元素的所有指定后代元素,含子孙 |
父元素>子元素{} | 子元素选择器:选中父元素的所有指定子元素,含子不含孙,IE6以下浏览器不支持 |
伪类选择器
选择器:hover{}- 鼠标悬浮在该元素上的样式
IE6不支持<a>标签以外的标签使用
选择器:active{}- 鼠标点击时该元素的样式
- IE6不支持
<a>标签以外的标签使用
选择器:link{}- 未被访问过时该元素的样式
- 一般只能用于
<a>超链接标签
选择器:visited{}- 访问过后该元素的样式(只能设置字体颜色)
- 一般只能用于
<a>超链接标签
选择器:focus{}- 获取焦点时该元素的样式
选择器:before{}- 指定元素前该元素的样式
选择器:after{}- 指定元素后该元素的样式
IE6不支持
选择器::selection{}- 注意双冒号
选择器::-moz-selection{}FireFox专用- 为被选中的内容设置样式
选择器:first-letter{}- 标签内容首字母的样式
- 注意:不是下划线
选择器:first-line{}- 标签内容首行的样式
选择器:before{}- 一般与
content属性一起使用,为该元素之前的位置设置内容,这些内容无法被选中
- 一般与
选择器:after{}- 一般与
content属性一起使用,为该元素之后的位置设置内容,这些内容无法被选中
- 一般与
属性选择器
标签名[属性名]{}- 选取拥有该属性名的所有元素
例:title属性:
title的值作为鼠标悬浮在元素上时显示的提示文字
p[title]:
选中所有有设置title属性的所有<p>元素
- 标签名[属性名=some]{}
- 选取拥有该属性名且属性值为some的所有元素
例:p[title='hello']
选中所有有设置title属性且属性值为'hello'的所有<p>元素
标签名[属性名^=some]{}- 选取拥有该属性名且属性值以
some为开头的所有元素
- 选取拥有该属性名且属性值以
标签名[属性名$=some]{}- 选取拥有该属性名且属性值以
some为结尾的所有元素
- 选取拥有该属性名且属性值以
标签名[属性名*=some]{}- 选取拥有该属性名且属性值包含
some的所有元素
- 选取拥有该属性名且属性值包含
子元素的伪类
IE8及IE6及以下不支持
-
(父元素>)子元素:first-child{} 预示着选择器可以结合使用
选中(指定)父元素的第一个(位置)子元素
-
(父元素>)子元素:last-child{} 选中(指定)父元素的最后一个(位置)子元素
-
子元素:nth-child(num){} 选中父元素的第
num个(位置)子元素
num参数一般为数字
num特殊值:
even:选取所有第偶数个(位置)子元素
odd:选取所有第奇数个(位置)子元素 -
子元素:first-of-type{} 选取父元素的所有该子元素类型的第一个子元素
-
子元素:last-of-type{} 选取父元素的所有该子元素类型的最后一个子元素
-
子元素:nth-of-type(num){} 选取父元素的所有该子元素类型的第
num个子元素 去前
X个元素num=-n+X -
子元素:nth-last-of-type(num){} 同上,只是从后往前算
兄弟元素选择器
-
元素1+元素2{}可以选取元素1后紧挨着的元素2
元素1和元素2互为兄弟元素
-
元素1~元素2{}可以选取元素1后所有的元素2
元素1和元素2互为兄弟元素
否定伪类
-
从已选中的元素中剔除某些元素
-
选择器1:not(选择器2){}
剔除选择器1中符合选择器2条件的元素
选择器优先级
当使用不同选择器,选择同一个元素并设置相同的样式时,由选择器的优先级决定显示效果。
优先级规则:
内联样式 优先级 1000
id选择器 优先级 100
类和伪类 优先级 10
元素选择器 优先级 1
通配选择器 优先级 0
继承的样式 优先级 没有优先级
可以在样式的最后添加一个 !important 这样该样式将会获得一个最高的优先级,高于以上所有优先级,但是在开发中尽量避免使用,不方便修改。
当选择器中包含多个选择器时,要把多个选择器的优先级相加在进行比较。
注意:选择器优先级计算不会超过它的最大数量级
比如选择器中最高的优先级10 则相加不会超过99
注意:如果选择器的优先级相同,则会显示相对靠后设置的样式
注意:并集选择器的优先级都是单独计算
伪类的优先级
-
:link -
:visited -
:hover -
:active
优先级相同
但是要按照以上顺序设置,不然会覆盖失效。
样式继承
<div style=''>
<p></p>
</div>
p标签会继承div的一些基本样式,不会被继承的样式有,背景、边框、定位等。
CSS属性
display
-
none- 不显示该元素,不占有位置
-
inline- 将元素变为内联元素
-
block- 将元素变为块元素
-
inline-block- 将元素变为行内块元素(既能设置宽高,又不会独占一行)
visibility
-
visible- 默认值可见
-
hidden- 隐藏但占有位置
overflow
文档流
默认所有元素都在文档流中。
- 块元素:
- 独占一行,自上向下排列,宽度等于父元素宽度,高度由内容高度撑开
- 内联元素
- 只占内容的宽度和长度,自左向右排列
处理子元素在父元素内的溢出情况
-
visible- 默认值不做处理,会溢出
-
hidden- 溢出的部分会被隐藏
-
scroll- 不论溢出与否都会添加滚动条
-
auto- 按照溢出的方向添加滚动条
float
-
none- 默认值,元素在文档流排列
-
left- 元素脱离文档流并向左浮动(左上)
-
right- 元素脱离文档流并向右浮动(右上)
浮动元素
- 浮动碰到父元素边框或浮动元素停止
- 浮动元素不会超过它上边的兄弟元素,最多一边齐
- 浮动元素不会盖住文档流中元素内的文字
- 块元素浮动后,宽度和高度都会被内容撑开
- 内联元素浮动后,宽度和高度可以被样式设置
clear
可以用来清楚其他浮动元素对当前元素的影响
-
none- 默认值
-
left- 清楚左侧浮动元素对当前元素的影响
-
right- 清楚右侧浮动元素对当前元素的影响
-
both- 清楚两侧元素对当前元素的影响(清除对当前元素影响最大的浮动元素)
position
通过定位可以任意的摆放元素的位置
-
static- 默认值,元素没有定位(未开启)
-
relative- 开启元素相对定位
-
absolute- 开启元素的绝对定位
-
fixed- 开启元素的固定定位(也是绝对定位的一种)
relative
-
若不设置偏移量,则元素不会发生任何变化,可使用left、right、top、bottom来设置偏移量
-
相对定位是在相对于元素在文档流中原来的位置进行偏移
-
相对定位不会脱离文档流,类似于灵魂出窍
-
相对定位会让元素提升一个层级,可以覆盖文档流元素
-
相对定位不会改变元素性质,块还是块,内联依旧是内联
absolute
-
绝对定位会脱离文档流
-
不设置偏移量,元素位置不会发生变化
-
相对于离它最近的开启了定位的祖先元素定位
-
绝对定位会让元素提升一个层级,可以覆盖文档流元素
-
绝对定位会改变元素性质,元素都变为块元素
fixed
同上1245
-
永远相对于浏览器定位,原点为页面左上角
-
不会随着滚动条移动而被隐藏(万恶的广告)
IE6不支持固定定位
若开启定位后元素层级相同,则结构在下面的元素覆盖上面的元素
z-index
一个正整数表示层级
没有开启定位的元素不能使用z-index
父元素层级再高也不能盖住子元素
层级越高越优先显示
opacity
设置元素的透明
0~1之间的值
0:全透明
1:不透明
IE8及以下不兼容,故使用
filter:alpha(opacity=百分比)
IE tester有bug导致IE6无法显示,实际上也可以
表格样式
-
border-spacing属性调整表格边框和单元格的距离
XXpx -
border-collapse属性可以调整表格边框和单元格边框合并
collapse设置边框合并后,
border-spacing属性自动失效
BFC
Block Formatting Context(IE6及以下不支持)
简称 BFC 该属性可以设置打开或关闭,默认为关闭。
当开启元素的BFC属性后,元素具有如下的特性:
-
父元素的垂直外边距不会和子元素重叠
-
开启BFC的元素不会被浮动元素所覆盖
-
开启BFC的元素可以包含浮动的子元素
开启BFC方法
-
设置元素浮动————可以撑开父元素,但是父元素宽度丢失,但会使下方元素上移
-
设置元素绝对定位————同上
-
设置元素为
line-block————会导致宽度丢失 -
设置元素的
overflow为非visible————副作用最小在IE6中不支持,但是可以开启
hasLayout隐藏属性
开启方式
1、zoom:1 数字为放大倍数
2、父元素设置宽度后自动打开
样式问题
高度塌陷问题
在文档流中,子元素会撑开父元素的高度,但是子元素设置浮动时,会导致子元素脱离文档流,父元素的高度塌陷,导致父元素下方各个元素上移,造成页面布局混乱。
-
开启BFC或
hasLayout -
设置
overflow为非visible -
使用
clear属性 -
通过
after伪类添加一个块元素再设置clear属性.clearfix:after{ content:""; display:block;A clear:both; }优点:不会添加多余的结构
父子元素外边距重叠问题
描述:子元素box2的上边框若与父元素box1的上边框重叠,则给子元素设置margin-top会直接传递给父元素,相当于给父元素设置margin-top
解决方法
.box1:before{
content:"";
display:table;
}
综上,可将代码整合为
.clearfix:before,.clearfix:after{
content:"";
display:table;
clear:both;
}
.clearfix{//兼容IE6
zoom:1;
}
Hack
有一些情况,有一些特殊的代码我们只需要在某些特殊的浏览器执行,而在别的浏览器中不需要执行,这是就可以使用CSS Hack来解决问题
CSS Hack实际上是一个特殊的代码,这段代码只在某些浏览器中可以识别,而在其他浏览器不能识别,通过这种方式来为一些浏览器设置特殊的代码
条件hack
只会对IE10以下浏览器有用,其他浏览器只会当成注释。
<!--[if IE 6]> //表示以下代码只会在IE6中执行
HTML代码块
<![endif]-->
<!--[if lte IE 6]> //表示以下代码只会在IE6及以下浏览器中被执行
HTML代码块
<![endif]-->
通用语法
<!--[if 关键字 IE 版本]>
HTML代码块
<![endif]-->
关键词
-
空
是否,相当于==
-
gtgreater than大于版本 -
gtegreater than or equal大于等于版本 -
ltless than小于版本 -
lteless than or equal小于等于版本 -
!非,相当于!=
属性hack
对某项CSS属性hack
语法
选择器{
_属性名:属性值; //表示改样式只有在IE6及以下的浏览器才可一识别
*属性名:属性值; //表示改样式只有在IE7及以下的浏览器才可一识别
属性名:属性值\0;//表示改样式只有在IE8及以上的浏览器才可一识别
}
选择符hack:
*HTML.选择器{
}
//该选择器只会被IE6识别
网页图标
- 首先把
favicon.ico这个图标放到根目录下。 - 再
html里面,head之间引入代码。
<link rel = "shortcut icon" href = "favicon.ico" type = "image/x-icon" />
在www.bitbug.net网站上将图片转化为ico图标格式
SEO(搜索引擎优化)
标签优化
-
title:百度28汉字以内,谷歌35汉字以内 -
description:120汉字以内<meta name = “description" content = "描述内容” /> -
keywords:<meta name = “keywords" content = "关键字内容” />
logo优化
logo里面首先放一个h1标签,目的是为了提权,告诉搜索引擎,这个地方很重要。
h1里面在放一个连接,可以返回首页的,给连接一个大小和logo的背景图片·连接里面要放文字(网站名称),为了搜索引擎收录我们。但是文字不要显示出来。
直接给font-size:0;就看不到文字了。
最后给链接一个title ,这样鼠标放到logo上,就可以看到提示文字了
字体图标
-
将fonts文件夹放入根目录
-
新建字体
@font-face -
demo.html中复制需要的结构 -
在需要添加字体图标的类中添加
追加字体图标
-
在下载网站中导入原下载包中的
selection.json -
挑选新增图标
-
下载