css的写法
1.内联样式:样式直接写在标签里面。
2.内部样式:样式写在<style>中。
3.外部样式:样式写在另一个文件中,使用<link rel="stylesheeet" href="style.css">
当属性设置有冲突时,就近原则 ,内联>内部>外部,同样的内部样式,顺序是从上到下。
selector()选择器
1.标签选择器 权重值1
2.类选择器 权重值10
<style>
.cc{
color: red;
}
.dd{
color: blue;
}
</style>
<body>
<h1 class="cc dd">哈哈</h1>
</body>
哈哈是蓝色
<style>
.cc{
color: red;
}
.dd{
color: blue;
}
</style>
<body>
<h1 class="dd cc">哈哈</h1>
</body>
交换类选择器的顺序,哈哈还是蓝色
<style>
.dd{
color: blue;
}
.cc{
color: red;
}
</style>
<body>
<h1 class="dd cc">哈哈</h1>style>
</body>
交换类选择器定义的顺序,哈哈变成了红色
<style>
.dd{
color: blue;
}
.ee{
background: green;
}
</style>
<body>
<h1 class="dd">哈哈</h1>
<div class="dd ee">嘎嘎</div>
</body>
嘎嘎的样式会重叠,蓝色字体,绿色背景,这样实现多样化,没有多id选择器,尽量使用类选择器。
<style>
.ff{
color: aqua;
}
</style>
<body>
<h1 class="ff">h1</h1>
<p class="ff">p</p>
</body>
h1,p全是浅蓝色
<style>
h1.ff{
color: aqua;
}
</style>
<body>
<h1 class="ff">h1</h1>
<p class="ff">p</p>
</body>
h1是浅蓝色,选中了同时满足既是h1标签又是ff类的。
3.id选择器 权重值100
css选择器在选择的时候是从后往前选择的,不是从前往后。比如
<style>
div#div1{
background: blue;
</style>
<body>
<div id="div1">DIV</div>
</body>
他是先找id是div的,再看他是不是div标签,css中id是唯一的,这里多判断了一次,多此一举。
4.分组选择器(用,分隔 表示同时选中不同的选择器)
5.后代选择器(用空格表示 谁的后代)
6.子代选择器(用>表示 )
#div h1{
background: blue;
}
<div id="div1">
<h1>h1</h1>
<div>
<h1>h11</h1>
</div>
</div>
h1,h11全是蓝色。
只想让儿子h1是蓝色
#div1 > h1{
background: blue;
}
<div id="div1">
<h1>h1</h1>
<div>
<h1>h11</h1>
</div>
</div>
h1是蓝色。
7.伪类选择器
#div2:hover{
background: red;
}
<div id="div2">div2</div>
鼠标划到div2上背景变成红色,IE6只支持给<a>加hover
#ul1 li:first-child{
background: red;
}
<ul id="ul1">
<li>item1</li>
<li>item2</li>
</ul>
item1背景是红色。
#ul1 li:nth-child(2)
}
表示第二个列表项是红色
#ul1 li:nth-child(2n)
}
表示偶数项列表项是红色
#ul1 li:nth-child(2n+1)
}
表示奇数项列表项是红色
#div3 h1:nth-child(1){
color: red;
}
<div id="div3">
<h1>h1</h1>
<p>pppppp</p>
<h1>h1h1h1h1</h1>
</div>
h1是红色
#div3 p:nth-child(1){
color: red;
}
<div id="div3">
<h1>h1</h1>
<p>pppppp</p>
<h1>h1h1h1h1</h1>
</div>
都没有变化,nth-child(1)和前面什么标签没有关系,就表示第一个孩子。想要和标签类型与关要使用nth-of-type(1)
#div3 p:nth-of-type(1){
color: red;
}
<div id="div3">
<h1>h1</h1>
<p>pppppp</p>
<h1>h1h1h1h1</h1>
</div>
pppppp是红色
8.伪对象选择器
#p1{
height: 200px;
width: 100px;
background: #ccc;
}
#p1;first-line{
color: red;
}
<p id="p1">
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
</p>
显示出来的每一行不一点就是代码中写的字数,加了伪对象选择器,第一行哈哈哈。。。是红色。
伪类 伪对象区别?
伪类的对象是真实存在的,想给她设置样式的时候直接选中。
伪对象的对象是不存在的,相当于浏览器选中的一行哈哈哈,给它加了一个隐式的元素,对这个元素设置样式。
内联权重值 1000
常用的几个css样式
*表示通配符,所有标签都使用。
rgba( , , , )最后一个值是透明度 0-1 值越小越透明
opacity的值是会继承的,解决办法1:把两个div设置成兄弟,不是父子。
解决方法2:使用rgba()。
把background的属性写在一行 background: url("1.jpg") no-repeat rgba(80,80,80,0.5);
#div1{
width: 200px;
height: 200px;
background: #ccc;
text-align: center;
line-height: 200px;
}
<div id="div1">哈哈</div>
哈哈会水平垂直居中在灰色框中,但是line-height=height只能设置单行文本。
#div1{
height: 150px;
width: 150px;
background: #ccc;
display: table;
}
#div2{
display: table-cell;
vertical-align: middle;
}
<div id="div1">
<div id="div2">
哈哈哈哈哈哈哈哈哈
或或或或或或或或或或或或或或
或或或或或或或或或或或或或或或或或或或</div>
</div>
</div>
实现多行文本垂直居中
text-decoration: none;可以去掉<a>下划线。
text-indent :20px; 首行缩进20像素。
盒模型
网页中所有的元素都是框
行框:由内容大小撑起来的。
display: block转化成块级元素。
块框:垂直分布。
宽是自适应的,意思是占据父元素的剩余空间,高是内容的高度。
可以设置宽高。
display: inline转化成行级元素。
display: inline-block 元素水平排列并且可以设置宽高。
margin设置一个值:上 下 左 右
两个值:上下 左右
三个值:上 左右 下
四个值:上 右 下 左
外边距合并问题
#a, #b{
height: 100px;
width: 100px;
background: #f00;
}
#a{
margin-bottom: 50px;
}
#b{
margin-top: 30p取了较大值x;
}
<div id="a">a</div>
<div id="b">b</div>
兄弟关系,两个红框垂直分布,取了较大值,间距是50px。
#a, #b{
height: 100px;
width: 100px;
background: #f00;
}
#a{
width :200px;
height: 200px;
}
#b{
margin-top: 30px;
background: #0f0;
}
<div id="a">
<div id="b"></div>
</div>
父子关系,父子会一起向下移动30px。
解决方法: 1.给父元素加边框,设置边框透明也会有阴影。
2.给父元素加下内边距,但是父元素会变宽,设置狂傲是给内容设置。
3.给子元素加浮动 float: left;
4.给子元素加绝对定位:poosition: absolute;
5.给父元素加 overflow: hidden;
去掉<!DOCTYPE html>在IE6下会生成怪异盒模型,设置的宽高包括内容,padding,border.
box-sizing: content-box; 标准浏览器下
box-sizing: border-box; IE6浏览器下 宽高包括三部分。
定位
相对定位:相对于自己之前的位置
不释放空间,后面的元素不会挤上来。
绝对定位:相对于最近已定位的祖先元素,不一定是父元素
会释放空间,后面的元素会挤上来。
固定定位:相对于浏览器定位
释放空间
块级元素加了这个属性之后,宽度不再是自适应,而是由内容撑开。
浮动
#a,#b, #c{
width: 100px;
height: 100px;
}
#a{
background: red;
float: left:
}
#b{
background: green;
}
#
background: blue;
}
<div id="a"></div>
<div id="b"></div>
<div id="c"></div>
红色会把绿色盖住
如果全都向左浮动,三个快排列在左侧,从左向右 红 绿 蓝
如果全都向右浮动,三个快排列在右侧,从右向左 红 绿 蓝
float可以让块级元素横过来,display:block也可以让元素横过来,两者的区别?
display:block 块之间会有间隙,float是紧贴着的。这个间隙是代码中不同的div换行导致的。
inLine-block不会导致元素释放空间。浮动会导致元素空间释放,后面的挤上来。
不想让某个元素浮动: clear: both;
元素塌陷问题
浮动导致元素塌陷问题
list-style: decimal数字
#ul1{
background: #ccc;
list-style: none;
}
#ul1 li{
background: #f00;
float: left;
}
<ul id="ul1">
<li>item1</li>
<li>item2</li>
<li>item3</li>
</ul>
ul的高度变成0,因为子元素浮动,空间释放了,没有子元素撑着父元素,父元素没有高了。
解决方法1:已知父元素高度直接加高度。
2: 在列表项最后再加一个li,设置样式 float: none clear:both, 相当于新加一个空列表项,他不浮动,自己撑着空间。
3:父元素加 overflow: hidden
overflow:hidden是解决溢出问题的,这场来说不能解决其他问题,但是他在这就是好使,这叫做css hack ,用特殊手段解决浏览器兼容性问题。
雪碧图
#div1{
width: 136px;
height: 63px;
background: url("1.jpg") no-repeat -152px -402px #ccc; 数字是小块图片的左、上外边距
}
<div id="div1"></div>
性能优化的一种方式
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。