推荐使用:链接式
1.行内式 行内式是在标记的style属性中设定CSS样式。这种方式没有体现出CSS的优势,不推荐使用。 2.嵌入式 嵌入式是将CSS样式集中写在网页的<head></head>标签对的<style></style>标签对中。格式如下: <head> <style type="text/css"> ...此处写CSS样式 </style> </head> 3.导入式 将一个独立的.css文件引入HTML文件中,导入式使用CSS规则引入外部CSS文件,<style>标记也是写在<head>标记中,使用的语法如下: <style type="text/css"> @import"mystyle.css"; 此处要注意.css文件的路径 </style> 4.链接式 也是将一个.css文件引入到HTML文件中 <link href="mystyle.css" rel="stylesheet" type="text/css"/>
注意:
导入式会在整个网页装载完后再装载CSS文件,因此这就导致了一个问题,如果网页比较大则会儿出现先显示无样式的页面,闪烁一下之后,再出现网页的样式。这是导入式固有的一个缺陷。使用链接式时与导入式不同的是它会以网页文件主体装载前装载CSS文件,因此显示出来的网页从一开始就是带样式的效果的,它不会象导入式那样先显示无样式的网页,然后再显示有样式的网页,这是链接式的优点。
二、 css的选择器(Selector)
1 、基础选择器:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> <!--1)标签选择器--> a{ background-color: red; color: aliceblue; } 2)id选择器 #hgb{ background-color: red; color: aliceblue; } 3)class选择器 a、class的命名可以重复;id不可以 b、class="aa bb" 代表着class="aa"和class="bb" c、当css对两个class(aa、bb)都有操作时,谁的操作最后解析,就改成最后一种样式 .ab{ font-size: 30px; } 4)"*"号选择器(代表所有类型标签) *{ background-color: antiquewhite; } 5)id和class重名,带标签不一致时 注:如果前面有大类(标签已经有定义了),产生的结果不一致 a.ab{ font-size: 40px; } </style> </head> <body> <a>aaabbbccc</a> <a id="hgb">dddeeefff</a> <div class="ab">aaabbbccc</div> <div class="ab">dddeeefff</div> <a id="ab">gggggggg</a> </body> </html>
2、组合选择器:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> 1)、多元素选择器(可以选择多个元素,用,号分开) 1)会把选择的元素嵌套里的元素一起改变 .div1,.main2 { /*color: brown;*/ /*font-size: 40px;*/ } 2)、后代元素选择器 .div1 p{ color: antiquewhite; font-size: 40px; } 3)、子元素选择器(有疑问) 1)注意:元素嵌套的一点,p标签嵌套div时,相当于没有被嵌套 2)块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素 3)有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如h1,h2,h3,h4,h5,h6,p,dt 4)li内可以包含div 5)块级元素与块级元素并列、内联元素与内联元素并列。(错误的:<div><h2></h2><span></span></div>) .main2>div{ color: blueviolet; font-size: 50px; } 4)、兄弟元素选择器 注意:是相邻的元素 .div1 + { color: darkgreen; font-size: 60px; } </style> </head> <body> <div class="div1">hello1 <div class="div2">hello2 <div>hello4</div> <p>hello5</p> </div> <p>hello3</p> </div> <p>hello6</p> <hr> <div class="main2">1 <div>2 <div> 4 </div> </div> <div> 3 </div> </div> </body> </html>
注意嵌套规则:
- 块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素。
- 块级元素不能放在p里面。
- 有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如h1,h2,h3,h4,h5,h6,p,dt
- li内可以包含div
- 块级元素与块级元素并列、内联元素与内联元素并列。(错误的:<div><h2></h2><span></span></div>)
3 、属性选择器(比较少用)
E[att] 匹配所有具有att属性的E元素,不考虑它的值。 (注意:E在此处可以省略,比如“[cheacked]”。以下同。) p[title] { color:#f00; } E[att=val] 匹配所有att属性等于“val”的E元素 div[class=”error”] { color:#f00; } E[att~=val] 匹配所有att属性具有多个空格分隔的值、其中一个值等于“val”的E元素 td[class~=”name”] { color:#f00; } E[att|=val] 匹配所有att属性具有多个连字号分隔(hyphen-separated)的值、其中一个值以“val”开头的E元素,主要用于lang属性, 比如“en”、“en-us”、“en-gb”等等 p[lang|=en] { color:#f00; } E[attr^=val] 匹配属性值以指定值开头的每个元素 div[class^="test"]{background:#ffff00;} E[attr$=val] 匹配属性值以指定值结尾的每个元素 div[class$="test"]{background:#ffff00;} E[attr*=val] 匹配属性值中包含指定值的每个元素 div[class*="test"]{background:#ffff00;}
4、 伪类选择器:
p:before 在每个 <p> 元素的内容之前插入内容 p:before{content:"hello";color:red}
p:after 在每个 <p> 元素的内容之前插入内容 p:after{ content:"hello";color:red}
也用在处理一个div里不同布局之间是否对齐上的运用(clear:both)
伪类选择器: 专用于控制链接的显示效果,伪类选择器: a:link(没有接触过的链接),用于定义了链接的常规状态。 a:hover(鼠标放在链接上的状态),用于产生视觉效果。 a:visited(访问过的链接),用于阅读文章,能清楚的判断已经访问过的链接。 a:active(在链接上按下鼠标时的状态),用于表现鼠标按下时的链接状态。 伪类选择器 : 伪类指的是标签的不同状态: a ==> 点过状态 没有点过的状态 鼠标悬浮状态 激活状态 a:link {color: #FF0000} /* 未访问的链接 */ a:visited {color: #00FF00} /* 已访问的链接 */ a:hover {color: #FF00FF} /* 鼠标移动到链接上 */ a:active {color: #0000FF} /* 选定的链接 */ 格式: 标签:伪类名称{ css代码; }
三 、CSS的常用属性
1)颜色属性:
<div style="color:blueviolet">ppppp</div> <div style="color:#ffee33">ppppp</div> <div style="color:rgb(255,0,0)">ppppp</div> <div style="color:rgba(255,0,0,0.5)">ppppp</div>
2)字体属性:
font-size: 20px/50%/larger font-family:'Lucida Bright' font-weight: lighter/bold/border/ <h1 style="font-style: oblique">老男孩</h1>
3)背景属性:
background-color: cornflowerblue background-image: url('1.jpg'); background-repeat: no-repeat;(repeat:平铺满) background-position: right top(20px 20px);(横向:left center right)(纵向:top center bottom) 简写:<body style="background: 20px 20px no-repeat #ff4 url('1.jpg')"> <div style=" 300px;height: 300px;background: 20px 20px no-repeat #ff4 url('1.jpg')"> 注意:如果讲背景属性加在body上,要记得给body加上一个height,否则结果异常,这是因为body为空,无法撑起背景图片,另外,如果此时要设置一个 width=100px,你也看不出效果,除非你设置出html。
4 )文本属性:
font-size: 10px; text-align: center;横向排列(左右居中) line-height: 200px;文本行高 通俗的讲,文字高度加上文字上下的空白区域的高度 50%:基于字体大小的百分比(上下居中) p { 200px; height: 200px; text-align: center; background-color: aquamarine; line-height: 200px; } text-indent: 150px; 首行缩进,50%:基于父元素(weight)的百分比 letter-spacing: 10px;(缩进) word-spacing: 20px;(字间距) direction: rtl; text-transform: capitalize;
5)边框属性:
border-style: solid; border-color: chartreuse; border- 20px; 简写:border: 30px rebeccapurple solid;
6 ) 列表属性:
ul,ol{ list-style: decimal-leading-zero;(是否有数字标点) list-style: none; list-style: circle;(有无前面的原点) list-style: upper-alpha; list-style: disc; }
7)dispaly属性:
none(不显示)
block(块标签)
inline(内联标签
8 ) 盒子模型
padding:用于控制内容与边框之间的距离;
margin: 用于控制元素与元素之间的距离;margin的最基本用途就是控制元素周围空间的间隔,从视觉角度上达到相互隔开的目的。
内边距会影响盒子的大小,外边距不会影响盒子的大小,需要设置 练习: 300px*300px的盒子装着100px*100px的盒子,分别通过margin和padding设置将小盒 子 移到大盒子的中间
9 )float
1)浮动可以理解为让某个div元素脱离标准流,漂浮在标准流之上,和标准流不是一个层次。 2)float:left; 3)float:right; 4)重点:假如某个div元素A是浮动的,如果A元素上一个元素也是浮动的,那么A元素会跟随在上一个元素的后边(如果一行放不下这两个元素,那么A元素会被挤到下一行);如果A元素上一个元素是标准流中的元素,那么A的相对垂直位置不会改变,也就是说A的顶部总是和上一个元素的底部对齐。
清除浮动可以理解为打破横向排列。
清除浮动的关键字是clear,官方定义如下:
语法:(对于CSS的清除浮动(clear),一定要牢记:这个规则只能影响使用清除的元素本身,不能影响其他元素。)
clear : none | left | right | both
取值:
none : 默认值。允许两边都可以有浮动对象
left : 不允许左边有浮动对象
right : 不允许右边有浮动对象
both : 不允许有浮动对象
clear:both
原因:父类被float起来,才用both(最low的方法)
方法二:为类后面加标签:(这样可以创建一个伪类,把父类飘起来了
.test:after{ # 还有before的用法
contect:'111';
display:block;
clear:both;
visibility:hidden; (与display:none隐藏的区别,有无高度的区别)
height:0
}
10)position
position----位置 1、fixed:固定到屏幕的某个位置:top left ... (relative;absolute结合用才有意义) 2、relative:这个作为基准 3、absolute:用top;left;right;bottom;width;hight(决定在基准里所放的位置和大小)
常用的技能点
二、 hover:当鼠标移到目标的地方,会让边框变颜色 1、让边框变颜色 .ele:hover{ border:2px selid red; } 2、让边框里的字变颜色 .ele:hover .ele-item{ color:red; } 3、让隐藏的图片和文字,当鼠标移过去时显示出来 <div class="touch"> <div><img src="1.jpg"></div> <div class="content"> <div class="c1">Huanggb</div> <div class="c2">500-1000(日)</div> </div> </div> <style> .touch { height:200px; 200px; overflow:hidden; # 当撑满规定的范围时,多出的会隐藏 position:relative # 作为absolute被撑满的对象 } .touch .content{ position:absolute; # 找到position:relative,然后充满其大小 top:0; left:0 right:0 bottom:0 background-color:block; opacity:0.6 # 透明度 text-align:center visibility:hidden # 默认是隐藏的 } # hover的用法 .touch:hover .content{ visibility:visible; } </style>
实现三角形(尖角) .up { border-top:30px solid transparent; border-right:30px solid transparent; border-left:30px solid transparent; border-bottom:30px solid greent; display:inline-block; } <div class="up"></div>
五、块标签当margin-top为负值是,可以继续往上移;可是内联标签不行 六、 图标 方法:1、图片(自己ps);2、css(自己设计);3、自己画font(fontawsome) 七、important的用法(!important无法让其他重复的样式给覆盖) 八、布局 <style> .c1 { position:absolute; left:0; 180px backgrount-color:red; height:500px; } .c2 { position:absolute; left:182px; right:0; backgrount-color:greent; height:500px } </style> <div class="c1"></div> <div class="c2"></div>
九、布局局部不动,内容动(overflow=auto) .body-content{ position:absolute; top:48px # body-head 占的高度 left:182px right:0 bottom:0 # 与以下面的overflow一起用 overflow:auto; # 溢出的内容变成滑轮 }
实例讲解
1、后台页面布局 overflow:auto; position:absolute; 2、提示框 边缘标签:relative,absolute 3、TAB display:none 4、登录注册 position:relative;absolute padding-right:30px (用着Input里) .user { position:relative; } .user input{ height:30px; 40px; padding-right:30px } .user .rem { position:absolute; left:15px topas:8px } <div class="user"> <input type="text"> <span class="rem"><img></span> </div> 6.模态对话框(一共有三层) z-index(决定显示层的优先级) .model { position:fixed; top:0; bottom:0; left:0; right:0; background:rgbn(0,0,0,.5); z-index:2; } .content{ height:300px; 400px; background-color:white; top:50%; left:50%; z-index:3; margin-left:-200px; margin-top:-200px; } <div style="height: 2000px;background-color:red"> <h1>abc</h1><h1>abc</h1><h1>abc</h1><h1>abc</h1><h1>abc</h1><h1>abc</h1><h1>abc</h1> </div> <div class="modle1"></div> <div class="content"></div>