CSS
css选择器
- 标签选择器
h2{}
- 类选择器/class选择器
.className{}
- id选择器 在一个页面中 只允许出现一次相同的id
#div1{}
- 嵌套选择器
div p span{}
- 群组选择器
div,p,.a1{}
- 通配符
*
css选择器优先级
行间>id>class>标签>通配符*
伪类
- 锚伪类
- a:link{ } //未访问
- a:visited{ } //访问过后
- a:hover{ } //鼠标移入
- a:active{ } //激活状态
在 CSS 定义中,a:hover 必须被置于 a:link 和 a:visited 之后,才是有效的。 在 CSS 定义中,a:active 必须被置于 a:hover 之后,才是有效的。
顺序为link > visited > hover > active (lvha)
其中hover 和 active 可以给其他标签加
伪类与 CSS 类
伪类可以与 CSS 类配合使用:
a.red:visited {color: #FF0000}
<a class="red" href="css_syntax.asp">CSS Syntax</a>
其他伪类选择器
input:checked {
/* 选择checked状态的选择框 */
}
input:disabled {
/* 选择被禁止的元素 */
}
input:enabled {
/* 选择可用的元素 */
}
div[value=ccc] {
/* 选择属性value为ccc的项 */
}
div[type] {
/* 选择有type属性的项 */
}
div[abc],[d]{
/* 选择带有abc或d属性的元素 */
}
div[title^='apple']{ /* 正则匹配属性 */
/* 选择属性为title中,属性以apple开头的元素 */
}
div[title*='apple']{ /* 同样是正则 */
/* 选择属性为title中,属性内容含有apple的元素 */
}
::selection {
/* 选择被选中的dom元素 */
}
p::selection {
/* 选择被选中的p元素 */
}
p:first-letter {
/* 选择第一个字 */
}
p:first-line {
/* 选择第一行 */
}
h1:not(.red) {
/* 选择不是.red类的h1 */
}
#box~p {
/* 选择#box之后所有同级的p */
}
div:target {
/* 选择被锚点跳转的div */
}
li:empty {
/* 选择内容为空的标签 */
}
body *:nth-of-type(1){
/* 选择body下所有第n次出现的元素 */
}
div:nth-child(2n) {
/* 选择偶数次序的div */
}
div:nth-child(even){
/* 同上 */
}
下划线
- 取消下划线
text-decoration:none;
- 下划线
text-decoration:underline;
- 中划线/贯穿线
text-decoration:line-through;
- 上划线
text-decoration:overline;
font
- size //大小
- style //倾斜
- normal
- italic
- weight //粗细
- normal
- bold
- family
- 英文
- 中文
- unicode(用的时候去掉u)
- font:style weight size/line-height family; //其中只有style和weight是可选项
background
background
-color
-image
-repeat
-no-repeat
-repeat-x
-repeat-y
-position: left right center top bottom
当给一个值的时候 第二个值默认为center 缩写: background:#000 url no-repeat center;
padding 内边距(内填充)
简单来说,padding是在盒子内部加填充物,且会撑大盒子。
- 块元素支持四个方向的padding
- 行内元素只支持左右的padding 不支持上下
- 简写顺序
- 四个值的时候 上 右 下 左 (从上开始顺时针)
- 三个值的时候 上 左右 下
- 两个值的时候 上下 左右
- 一个值的时候 上 右 下 左
margin 外边距
- 块元素支持四个方向的margin
- 行内元素只支持左右的margin 不支持上下
- 简写顺序
- 四个值的时候 上 右 下 左
- 三个值的时候 上 左右 下
- 两个值的时候 上下 左右
- 一个值的时候 上 右 下 左
margin拖拽(子级把父级拉下来了)
- 解决办法:
- 给父级加边框
- 给父级加overflow:hidden
- 给父级加一个padding-top(推荐)
margin合并(当两个垂直外边距相遇时,它们将形成一个外边距。)
- 上下取最大值
- 块元素margin上下合并 左右不合并
- 行内元素margin左右不合并
子元素溢出处理
white-space:nowrap; //强制不换行
overflow:hidden; //溢出隐藏
text-overflow:ellipsis; //省略号
**需要给宽度,如果要省略号有效,上面三个样式都得加**
//如果你想让小点跑到右下角 那你就加上一个font-family:'微软雅黑';
元素类型转换
display:inline //转化成行内
block //块
inline-block //行内块 **行内元素即使转化成块 也不能包块**
css继承
- 只有和文字相关的样式才能继承
- a不能继承颜色
- i em不能继承倾斜
- b strong h不能继承加粗
取消默认样式
- 清除默认间距
*{ margin:0; padding:0;} // *会遍历所有元素,较大型网站中尽量避免
- 清除小点
li{ list-style:none;}
- 取消焦点框
input,select,textarea{ outline:none;}
- 取消拖拉
textarea{ resize:none;}
- 取消链接默认样式
a{text-decoration:none; color:#xxxxxx}
浮动float
float:left
right
none
特性
- 合并到一行
- 脱离文档流
- 影响下面的元素 不影响上面
- 宽度不够,掉下来
- 块元素浮动后,宽度会尽可能的窄,窄到内容的宽度
- 行内元素浮动会变成块
- 文本环绕
- 尽可能的往上飘
清除浮动
- 给父级加overflow:hidden;
- 对父级设置适合的高度
- 给父级以class的方式加
.clearFix:after{content:''; display:block; clear:both;}
.clearFix{zoom:1;}
- 给一个空标签,然后加clear:both;
<style type="text/css">
.clear{clear:both}
</style>
<div class="box">
<div class="child1"></div>
<div class="child2"></div>
<div class="clear"></div>
</div>
用到浮动的时候
- 最好给宽
- 用到浮动清浮动
- 同级元素最好都浮动
定位position
position: | 定位参照 | 脱离文档流 | 行内变块 | 自由宽度的块元素变形 |
---|---|---|---|---|
relative; | 自身 | × | × | × |
absolute; | 有定位的父级/body | √ | √ | √ |
fixed; | 可视区域 | √ | √ | √ |
优先级:普通元素<浮动<定位,后写的标签层级比先写的高,positon可用于提升层级
z-index
- 只有定位的元素才能使用
- z-index:最大2^32
透明度
opacity:0-1; //webkit
filter:alpha(opacity:0-100) //ie
已知宽高容器居中
margin: 0 -width/2; left:50%; //水平
margin: -height/2 0; top:50%; //垂直
css hacks
_ //ie6
* //ie7
\9 //ie6 7 8
<!-- usage -->
selector{background-color:#000\9;}