CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离。
一 css的四种引入方式
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 基础选择器:
* : 通用元素选择器,匹配任何元素 * { margin:0; padding:0; }
E : 标签选择器,匹配所有使用E标签的元素p { color:green; }
.info和E.info: class选择器,匹配所有class属性中包含info的元素 .info { background:#ff0; } p.info { background:blue; }
#info和E#info id选择器,匹配所有id属性等于footer的元素 #info { background:#ff0; } p#info { background:#ff0; }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>css 选择器</title> <style> *{ /*通用元素选择器*/ /*color:red;*/ } p{ /*标签选择器*/ /*color:yellowgreen;*/ font-size: 50px; } .info{ /*类选择器*/ color: darkblue; } h3.info{ color:gold; } .x1{ color:hotpink; } </style> </head> <body> <p>段落</p> <a>超链接</a> <div class="x1"> <h4 class="info">标题4</h4> <h4 class="x1">标题4</h4> <div class="x1"> <p>标题3</p> </div> <h3 class="info">标题3</h3> </div> </body> </html> 练习代码
ID选择不可重复,class可以重复。例如:身份证号不可用重复,而名字可以重复
2 组合选择器
E,F 多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔 Div,p { color:#f00; }
E F 后代元素选择器,后代不管儿子还是孙子。都会有影响。匹配所有属于E元素后代的F元素,E和F之间用空格分隔 #nav li { display:inline; } li a { font-weight:bold; }
E > F 子元素选择器,匹配所有E元素的子元素F div > strong { color:#f00; }
E + F 毗邻元素选择器,匹配所有紧随E元素之后的同级元素F p + p { color:#f00; }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .div1>p{ background-color: aqua; color: deeppink; } .main2>div{ background-color: blueviolet; color: chartreuse; } </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>222222 <div> </div> </div> <div> </div> </div> </body> </html>
注意嵌套规则:
- 块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素。
- 块级元素不能放在p里面。
- 有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如h1,h2,h3,h4,h5,h6,p,dt
- li内可以包含div
- 块级元素与块级元素并列、内联元素与内联元素并列。(错误的:<div><h2></h2><span></span></div>)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> [suoning]{ color: blueviolet; } .he>div{ color: bisque; } </style> </head> <body> <div class="he">111 <p class="fr">222 <div>333</div> </p> <div>444</div> </div> *************************** <div suoning="sb">ddd <p>pppp</p> </div> <p suoning="sb2">ddd2 <p>pppp2</p> </p> </body> </html>
遇到情况:
h标签包含h标签是当做兄弟处理,而包含div则什么关系也没有,p标签包含div是当做兄弟处理
练习
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>属性选择器</title> <style> h2[htit]{ color:red; } p[duanl="duanluo1"]{ color:green; font-size: 55px; border: 6px; } p[duanl~="du"]{ color:sienna; } h2[x|=biao]{ color: fuchsia; font-size: 33px; } p[duanl^=bun]{ font-size: 44px; } p[duanl$=xx]{ font-size: 4px; } p[duanl*=unx]{ font-size: 99px; } p:before{ content: "段落开始:::"; } p:after{ content: ":段落结束"; } </style> </head> <body> <div div1="content"> <h2 htit="biaoti">标题2</h2> <h2 htit="biaoti1">标题2-1</h2> <h2 x="biao-ti1">标题2xx1</h2> <p duanl="du dluo1">段落</p> <p duanl="duanluo1">段落1123</p> <p duanl="duanluo2">段落1123</p> <p duanl="bunxx">段落1123</p> <h3 htit="pipei">标题3</h3> </div> </body> </html>
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;}
p:before 在每个 <p> 元素的内容之前插入内容 p:before{content:"hello";color:red}
p:after 在每个 <p> 元素的内容之前插入内容 p:after{ content:"hello";color:red}
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>属性选择器</title> <style> h2[htit]{ color:red; } p[duanl="duanluo1"]{ color:green; font-size: 55px; border: 6px; } p[duanl~="du"]{ color:sienna; } h2[x|=biao]{ color: fuchsia; font-size: 33px; } p[duanl^=bun]{ font-size: 44px; } p[duanl$=xx]{ font-size: 4px; } p[duanl*=unx]{ font-size: 99px; } p:before{ content: "段落开始:::"; } p:after{ content: ":段落结束"; } </style> </head> <body> <div div1="content"> <h2 htit="biaoti">标题2</h2> <h2 htit="biaoti1">标题2-1</h2> <h2 x="biao-ti1">标题2xx1</h2> <p duanl="du dluo1">段落</p> <p duanl="duanluo1">段落1123</p> <p duanl="duanluo2">段落1123</p> <p duanl="bunxx">段落1123</p> <h3 htit="pipei">标题3</h3> </div> </body> </html>
4 伪类选择器:
伪类选择器: 专用于控制链接的显示效果,伪类选择器:
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代码; }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>伪类选择器</title> <style> a:link{ color: blue; } h2{ color: blue; } a,h2:hover{ color: yellow; } a:visited{ color: firebrick; } a,h2:active{ color: fuchsia;; } </style> </head> <body> <a href="http://www.sohu.com/" target="_blank">ww.sohu.com</a> <h2>标题2</h2> </body> </html> 伪类选择器
<style type="text/css"> a:link{ color: red; } a:visited { color: blue; } a:hover { color: green; } a:active { color: yellow; } </style> </head> <body> <a href="01-hello-world.html">hello-world</a> </body> </html> code