首发时间:2018-03-02 css
修改:html
css能够设置标签的样式,为了更好的设置样式以及为了方便给某些标签指定样式(批量的给某些标签增长样式),因此有了css选择器,css选择器能够筛选出指定的标签。筛选出来以后就能够给对应的标签设置样式。浏览器
css选择器的定义由两部分组成:一个是选择器,一个是样式定义,好比: 字体
标签选择器直接根据标签名来选择标签,好比想筛选出全部div标签,可使用spa
/* 选择出全部标签 */ *{ margin:0; padding:0; } /* 选择出h1标签 */ h1 {color:red; font-size:14px;} /* 选择出p标签 */ p { color: #ff0000; } /* 选择出body标签 */ body { margin: 0; padding: 0; }
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> .center{ /* 样式定义*/ text-align: center; } .normal{ font-weight:normal; } </style> </head> <body> <h1 class='center normal'>类选择器</h1> <div class="center"></div> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> #header{ /* 样式定义*/ background-color: orange; width: 960px; height: 100px; margin:0 auto; } </style> </head> <body> <div id="header"></div> </body> </html>
并集选择器(分组选择器)由多个选择器组成,是将指定的多个选择器都定义一样的样式。多个选择器的关系是并立的,至关于在本来单独定义的基础上合并定义。3d
使用,来分隔多个选择器,好比至关于
,因此明显的并集选择器能够节省很多代码。code
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> #header,#footer{ width: 960px; margin:0 auto; } #header{ background-color: orange; height: 100px; } #footer{ background-color: skyblue; height: 500px; } h1,h2,h3{ color: green; margin:0; } </style> </head> <body> <div id="header"></div> <div id="footer"> <h1>百度</h1> </div> </body> </html>
交集选择器由多个选择器组成,只有同时符合多个选择器的标签才会被选择出来。orm
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Document</title> <style > div.a{ /* 选择div标签中class='a'的 */ background-color: blue; } </style> </head> <body> <div class='a'>1</div> <!-- 选中这个 --> <div >2</div> <div> <p class='a'>123</p> <!-- 与后代选择器不一样,这个不会被选中 --> </div> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> #header h1{ /* 选择id为header的标签的后代中的h1标签 */ color: green; } div .blue{/* 选择div标签的后代中class为blue的标签 */ color:blue; } </style> </head> <body> <div id="header"> <h1>header的标签下的h1标签</h1> </div> <div class="blue"> 这是一个class=blue的div标签 <!-- 这个不会被div .blue选择到 --> </div> <div > <h1 class="blue">div下面的class=blue的标签</h1> </div> </body> </html>
一样由多个选择器组成,与后代选择器不一样的是它只会选择直接子代,不会选择出孙子标签之类的非子标签。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> #footer > .blue{ color:blue; } </style> </head> <body> <div id="footer" > <h1 class="blue">id="footer"下面的子标签</h1> <div> <span class="blue">id="footer"下面的非子标签</span><!-- 这一个不会被选择出来 --> </div> </div> </body> </html>
属性选择器使用[]来包裹属性
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> [type]{ /* 选中包含type 属性的标签 */ border:1px solid red; } [type="text"]{ /* 选中type属性="text"的标签 */ color:green; } [class~="t1"]{ /* 选中class属性包含t1的标签 */ color:blue; } [name^="user"]{ /* 选中name属性以user开头的标签 */ background-color: pink; } [name*="amy"]{ /* 选中name属性字符串包含amy的标签 */ background-color: purple; } </style> </head> <body> <div> <input type="text" > <input type="password" class="t1"> <input type="text" name="username"> <input type="text" name="AamyB"> </div> </body> </html>
若是须要选择紧接在某个标签后的一个标签,并且两者有相同的父标签,可使用相邻兄弟选择器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title></title> <style> h3+p{ /* 选择h3后面的第一个p兄弟标签 */ color:red; } </style> </head> <body> <h3>h3标签</h3> <p>h3后的第1个标签</p> <p>h3后的第2个标签</p> <p>h3后的第3个标签</p> <p>h3后的第4个标签</p> </body> </html>
伪类选择器原本是给某些标签添加某些特殊效果的(好比设置当鼠标移到的时候的样式)【后来增长了很多结构方面的选择器】
目标伪类选择器:
事件相关的伪类选择器:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Document</title> <style> a{ font-size:100px; } a:link{ /* 给全部未点击过的a标签增长上样式*/ color: red; text-decoration:none; } a:visited{ /* 给点击过的a标签增长上样式 */ color:purple; } a:hover{ /* 当鼠标移到a标签上时,增长上样式*/ color:green; } a:active{ /* 鼠标点击过程当中显示的样式*/ background-color: pink; } #header:hover{ /* 当鼠标移到#header选择出的标签时,增长上样式*/ background-color: blue; } </style> </head> <body> <a href="#1">1</a> <a href="#2">2</a> <a href="#3">3</a> <a href="#4">4</a> <div id="header"> div的内容 </div> </body> </html>
结构伪类选择器:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Document</title> <style> p{ font-size:20px; } p:first-child{/* 选择第1个*/ color:red; } p:last-child{ /* 选择最后一个*/ color:green; } p:nth-child(2){ /* 选择第二个*/ color:pink; } p:nth-child(2n){ /* 选择2,4,6,8.。。 */ background-color: gray; } p:nth-last-child(2n){/* 从后面开始数 选择2,4,6,8.。。 */ background-color: skyblue; } </style> </head> <body> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> </body> </html>
目标伪类选择器:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Document</title> <style> div:target{ /* 当元素活动是增长样式 */ background-color: blue; } </style> </head> <body> <a href="#id1">123</a> <div id="id1"> 123456 </div> </body> </html>
伪元素选择器能够选择非整个标签的内容好比第一个字符(first-letter)、第一行(first-line);也能够像插入一个标签同样在某个位置插入内容(before,after)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Document</title> <style> p:first-child::first-letter{ /* 给第一个字符设置样式 */ font-size:30px; } p:nth-child(2)::first-line{ /* 给第一行设置样式*/ background-color: skyblue; } p:nth-child(3)::selection{ background-color: orange; } p::before{ /* 在全部p标签以前加上《论语》 */ content:"《论语》"; font-size:30px; } p::after{ /* 在全部p标签以前加上 鲁迅表示很无辜 */ content:" 鲁迅表示说的对"; font-size:30px; } </style> </head> <body> <p>学而时习之,不亦说乎</p> <p>子曰:“学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?”</p> <p>曾子曰:“吾日三省吾身:为人谋而不忠乎?与朋友交而不信乎?传不习乎?”</p> </body> </html>