前端学习笔记-CSS
CSS的引入方式:
1、内嵌式引入:在标签内直接使用style属性,每个样式使用分号隔开。
1 <div style="color: red;font-size:25px ; 2 font-family: 'Microsoft Yahei';line-height: 50px"> 3 窗前明月光,<br /> 4 疑是地上霜。<br /> 5 举头望明月,<br /> 6 低头思故乡。<br /> 7 </div>
2、外联式引入:使用link标签引入本地css样式文件。
1 <link rel="stylesheet" type="text/css" href="main.css">
CSS选择器:
1、标签选择器:当前html下的所有div样式都是被设置成这样。
div{ color: red; }
2、id选择器:只能选择一个标签的一个id,但权重要比类选择器大。
#div2{ color: green; }
<div id="div2">遥看瀑布挂前川。</div>
3、类选择器:可选择多个标签,拓展性高(主要使用)。
.gold{ color: gold; }
<div class="gold">飞流直下三千尺,</div>
4、层级选择器:即在class类选择器下空格加个标签,从而实现只修改某个类下的某个标签下的内容。
.list li{ height: 30px; }
<div class="list">遥看瀑布挂前川。</div>
CSS元素层级:
同层级哪个先写先显示哪个,使用z-index打破层级限制,数值越大,越优先显示。
1 body .box2{ 2 background-color: green; 3 left: 50px; 4 top: 50px; 5 z-index: 2 6 }
CSS元素特点:
1、块元素的特点:
独占一行,多个块元素各自另起一行,默认块元素会自动填充父级元素的宽度,
可设置宽高,但是还是会独占一行,
块元素可以设置margin和padding。
2、行内元素的特点:
不支持宽高、margin的上下、padding的上下(左右都支持);
宽高由文字;
代码换行,会产生间距(如下图第一个图,盒子中两个a标签换行书写时,产生间距)。
解决间距:将父级元素设置为font-size:0 行内元素自身再设置相应的font-size;
3、行内块元素的特点:
具有块元素的特点,可以设置宽高,也具有行内元素的特点,代码换行产生间距。
行内块元素不会独占一行,多个相邻的行内块元素排在一行内,排不下就换行。
1 .con1,.con2{ 2 width: 500px; 3 height: 80px; 4 border: 1px solid #333; 5 margin: 50px auto 0; 6 font-size: 0;//关键在这行 7 } 8 .con1 a{ 9 background: gold; 10 text-decoration: none; 11 width: 20px; 12 height: 40px; 13 padding:0px 20px; 14 font-size: 20px; 15 }
1 <body> 2 <div class="con2"> 3 <a href="#">锄禾日当午,</a> 4 <a href="#">汗滴禾下土。</a> 5 </div> 6 </body>
显然行内元素没有按照高40px,宽20px进行渲染。


块元素、行内元素、行内块元素的关系:
块元素宽、高均能设置,
行内元素无法设置其宽和高,宽高随标签里的内容变化,
行内块元素实际就是把块元素以行的形式展现出来,保留了块元素可以设置的对应的属性。
css常用文本样式:
1、font同时设置文字的几个属性,写的顺序有兼容性问题,建议按照如下顺序写:font:是否加粗 字号/行高 字体 如:font:normal 12px/36px '微软雅黑';
2、a标签设置的网页链接,如果是网络网页连接,必须加http://;
3、text-decoration去a标签的下划线,text-decoration: none;
4、p标签加hover,鼠标移至目标内容,目标变色。 p:hover{ } ;
5、除了字体的设置和文本的倾斜设置,值都不加引号;
6、针对中文版式,text-indent设置文字首行缩进;
7、text-align不能给em标签对齐,可以给h标签对齐。因为他们的宽度不同。详细看块元素和内联元素及内联块元素的区别。
背景设置:
1 .box{ 2 width: 500px; 3 height: 700px; 4 border:5px solid #000; 5 background-color: gold;/*背景设置颜色*/ 6 font-size: 50px;/*设置字号*/ 7 background-image: url(../H5/images/tu1.png);/*背景设置图片*/ 8 /*页面上放图片可以通过a标签和这种方式来实现。a上不能放内容*/ 9 background-repeat: repeat-x;/*仅仅横向平铺,y纵,no-repeat不平铺,默认全部平铺*/ 10 background-position: center top; 11 /*默认靠左靠上,配合上边的repeat使用,也可用具体像素值控制位置。了解一下attachment属性*/ 12 /*background: url(../H5/images/tu1.png) -20px -20px gold no-repeat;一句话实现*/ 13 }
CSS定位:
使用position属性进行定位。
1 .box{ 2 width: 450px; 3 height: 300px; 4 border: 1px solid #000; 5 margin: 100 auto 0; 6 position: relative;/*相对于body绝对定位*/ 7 } 8 .box div{/*相对于box相对定位*/ 9 width: 200px; 10 height: 100px; 11 margin: 20px; 12 background: blue; 13 line-height: 100px;/*文字操作*/ 14 text-align: center;/*文字操作*/ 15 font-size: 40;/*文字操作*/ 16 } 17 body .box1{ 18 position: absolute; 19 /*相对定位relative其他东西不变,盒子相对自身位置发生偏移*/ 20 /*绝对定位absolute根根据父级位置定位来定位,父级一般设置为相对定位, 21 若父级及祖父级..无定位,则根据body定位*/ 22 /*定位后转换成行内块元素,靠内容撑开宽度*/ 23 left: 50px; 24 top: 50px; 25 background-color: gold; 26 } 27 body .guding{ 28 position:fixed; 29 left: 0; 30 top:0; 31 background: pink; 32 } 33 .box2{ 34 background-color: pink; 35 position: absolute;/*定位后转换成行内块元素,靠内容撑开宽度*/ 36 left: 100px; 37 top: 100px; 38 }
1 <div class="box"> 2 <div class="box1">111</div> 3 <div>222</div> 4 <div>333</div> 5 <div class="guding">444</div> 6 </div>

CSS盒子模型:
1 .box{ 2 width: 400px; 3 height: 400px; 4 background: gold; 5 border: 100px solid #000; 6 /*省略-top、-left等。*/ 7 /*这条线是加给盒子外边的*/ 8 /*设置盒顶线型,solid实线、dashed虚线、dotted点线。*/ 9 padding: 20px; 10 /*这个padding其实是内容同盒子的内边距*/ 11 /*四个值时是上、右、下、左*/ 12 /*三个值时是上、左右、下*/ 13 /*三个值时是上下、左右*/ 14 /*盒子的真实尺寸是width/height+padding+border*/ 15 margin:100px auto; 16 /*auto是设置平分边距*/ 17 } 18 .sings{ 19 font-size:80px; 20 color: blue; 21 line-height: 80px; 22 }
1 <div class="box sings">关关雎鸠,<br /> 2 在河之洲。<br /> 3 窈窕淑女,<br /> 4 君子好逑。<br /> 5 </div>

黑色部分是盒子边框线border的宽度,内容同盒子的内边距是padding值,可容纳内容的宽高为weight和height。
盒子的真实占地尺寸大小为:
盒子的宽度:width+左右padding+左右的border值。
盒子的高度:height+上下的padding+上下的border值。
盒子模型的特点:
1、如果不设置盒子的高度,盒子会根据里边的内容,自动撑开成合适的高度。
2、固定盒子宽高后,内容太多,overflow可以清除浮动、隐藏溢出,产生滚动条等,auto自动产生溢出方向的滚动条。
3、margin最好不要同时设置top和buttom,否则会产生外边距被合并的现象,合并后的外边距高度等于被合并中的高度较大者。
解决方法:只设置margin-top或将元素浮动或定位。
4、margin-top塌陷:给嵌套的内盒子设置margin,外盒子会出现top效果。
解决办法:使用伪元素,引用代码如下。
1 .clearfix:before{ 2 content: ""; 3 display: table; 4 }
CSS浮动特点:
.box1,.box2,.box3{ width: 200px; height: 200px; font:30px/200px 'Microsoft Yahei'; background: green; margin: 20px; } .box1{ float: left; } .box2{ float: right; } .box3{ float: left; }
1 <div class="box1">1</div> 2 <div class="box1">1</div> 3 <div class="box1">1</div> 4 <div class="box1">1</div> 5 <div class="box1">1</div> 6 <a href="#" class="box1">这是一个a元素</a> 7 <div class="box2">2</div> 8 <div class="box3">3</div>

文档流盒布局:指盒子按照html标签编写的顺序依次从上到下,从左到右排列,
块元素占一行,行内元素在一行之内从左到右排列,先写的先排列,后写的排在后面,每个盒子占据自己的位置。
浮动特性:向左或向右,没有居中浮动那么二的想法哦。
1、浮动元素有左浮动(float:left)和右浮动(float:right)两种。
2、浮动的元素会向左或向右浮动,碰到父元素边界、浮动元素、未浮动的元素才停下来(浮动的顺序看代码的执行顺序)。
3、相邻浮动的块元素可以并在一行,超出父级宽度就换行。
4、浮动让行内元素或块元素自动转化为行内块元素(划重点)。
5、浮动元素后面没有浮动的元素会占据浮动元素的位置,没有浮动的元素内的文字会避开浮动的元素,形成文字饶图的效果。
6、父元素内整体浮动的元素无法撑开父元素,需要清除浮动。
7、浮动元素之间没有垂直margin的合并(margin-top塌陷)。
清除浮动:
1 .box2 a{ 2 width: 50px; 3 height: 50px; 4 background-color: green; 5 border: 1px solid #000; 6 font-size: 16px; 7 margin:20px; 8 text-align: center; 9 line-height: 50px; 10 text-decoration: none; 11 float: left;/*这个浮动的子元素无法撑开父级的特性,需要清除浮动。*/ 12 } 13 .clearfix:after{/*常用这种*/ 14 content: ""; 15 display: table; 16 clear: both; 17 } 18 .clearfix:before,.clearfix:after{/*合并margin-top的塌陷和清除浮动的共同操作*/ 19 content: ""; 20 display: table; 21 }
1 <div class="box2 clearfix"> 2 <a href="">1</a> 3 <a href="">2</a> 4 <a href="">3</a> 5 <a href="">4</a> 6 <a href="">5</a> 7 <a href="">6</a> 8 <a href="">7</a> 9 <a href="">8</a> 10 <a href="">9</a> 11 </div>


新闻列表案例:
1 .new_list_con{
2 width: 600px;
3 height: 290px;
4 border: 1px solid #ddd;
5 margin: 50px auto 0;
6 overflow: hidden;/*消除溢出的li面积*/
7 }
8 .new_list_con h3{
9 width: 560px;
10 height: 50px;
11 border-bottom: 1px solid #ddd;
12 margin: 0px auto;
13 }
14 .new_list_con h3 span{/*注意是H3下的span,s设置那条下划线。将其行内元素转化为行内块元素*/
15 display: inline-block;/*转为行内块元素*/
16 height: 50px; /*高与h3等高*/
17 border-bottom: 2px solid red;
18 font: 18px/50px 'Microsoft Yahei';/*行高50居中,18宽度,雅黑字体*/
19 color:#000;
20 padding: 0 15px;/*上下不设,左右设置15px*/
21 position: relative;/*保持原来的位置但它是跳出来的*/
22
23 }
24 .new_list_con ul{
25 list-style: none;/*去点*/
26 padding: 0;/*紧凑一点*/
27 width: 560px;
28 height: 238px;
29 margin: 6px auto 0;/*ul块元素相对父级设置剧中*/
30 }
31 .new_list_con ul li{
32 height: 38px;
33 border-bottom:1px solid #ddd;
34 }
35 .new_list_con ul a{
36 float: left;/*浮动后就变成行内块元素了*/
37 height: 38px;
38 /*line-height: 38px ul 38行高38,文字就上下居中了*/
39 font:14px/38px 'Microsoft Yahei';/*先宽后高再字体*/
40 text-decoration: none;/*取消下划线*/
41 color: #000;
42 }
43 .new_list_con ul a:before{
44 content: "· ";/*给每个列表前加个点点*/
45 }
46 .new_list_con ul a:hover{/*鼠标移至变色*/
47 color:red;
48
49 }
50 .new_list_con ul span{
51 float: right;/*浮动后就变成行内块元素了*/
52 height: 38px;
53 /*line-height: 38px ul 38行高38,文字就上下居中了*/
54 font:14px/38px 'Microsoft Yahei';/*先宽后高再字体*/
55 color: #000;
56 }
1 <div class="new_list_con"> 2 <h3><span>新闻列表</span></h3> 3 <ul> 4 <li><a href="">劲爆消息:宁理小红花一箭夺魁!</a><span>9012-10-1</span></li> 5 <li><a href="">劲爆消息:宁理小红花一箭夺魁!</a><span>9012-10-2</span></li> 6 <li><a href="">劲爆消息:宁理小红花一箭夺魁!</a><span>9012-10-3</span></li> 7 <li><a href="">劲爆消息:宁理小红花一箭夺魁!</a><span>9012-10-4</span></li> 8 <li><a href="">劲爆消息:宁理小红花一箭夺魁!</a><span>9012-10-5</span></li> 9 <li><a href="">劲爆消息:宁理小红花一箭夺魁!</a><span>9012-10-6</span></li> 10 </ul> 11 </div>

菜单栏布局实例:
1 .menu{ 2 list-style: none;/*取消黑点*/ 3 background-color: #55a8ea; 4 padding: 0;/*取消ul自带的padding样式*/ 5 height: 40px; 6 width: 960px; 7 margin: 50px auto 0; 8 position: relative; 9 } 10 .menu li{ 11 float: left; 12 width: 100px; 13 height: 40px;/*给每个li设置自己的宽高*/ 14 text-align: center;/*每个li垂直居中*/ 15 line-height: 40px;/*文字行高*/ 16 } 17 .menu li a{ 18 font:14px/40px 'Microsoft Yahei';/*字体格式不舍涉及颜色需要另外写*/ 19 color: #fff; 20 text-decoration: none;/*给列表去点*/ 21 } 22 .menu li:hover{ 23 background-color: #00619f; /*鼠标移至会变色*/ 24 } 25 .menu .active{ 26 background-color: #00619f;/* 当前页显示突出颜色*/ 27 } 28 .menu .new{ 29 width: 32px; 30 height: 21px; 31 background: url(../H5/images/new.png) no-repeat;/*no-repeat设置不平铺*/ 32 position: absolute;/*绝对定位*/ 33 left: 345px;/*这里用技巧定位距离*/ 34 top:-9px; 35 } 36 .menu .new:hover{ 37 background: url(../H5/images/new.png) no-repeat; 38 }
1 <ul class="menu"> 2 <li class="active"><a href="">首页</a></a></li> 3 <li><a href="">网站建设</a></li> 4 <li><a href="">招聘信息</a></li> 5 <li><a href="">培训方案</a></li> 6 <li><a href="">学习系统</a></li> 7 <li><a href="">公司简介</a></li> 8 <li><a href="">售后服务</a></li> 9 <li class="new"></li> 10 </ul>


浙公网安备 33010602011771号