负责用户人机交互的选择器,指定的样式只有在某种状态下才起作用
在Web表单中,有些表单元素(如输入框、密码框、复选框等)有“可用”和“不可用”这2种状态。默认情况下,这些表单元素都处在可用状态。
在CSS3中,我们可以使用:enabled选择器和:disabled选择器来分别设置表单元素的可用与不可用这两种状态的CSS样式。
设置表单元素的“可用”与“禁用”时的样式
<meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>可用与禁用</title> <style type="text/css"> /*设置表单元素的“可用”与“禁用”*/ :enabled{ outline: 1 px solid green; } :disabled{ background-color: gray; } </style> <form> <p> <label for="enabled">可用:</label> <input type="text" name="enabled"> </p> <p> <label for="disabled">禁用:</label> <input type="text" name="disabled" disabled=""> </p> <button>可用按钮</button> <button disabled="">禁用按钮</button> </form>
设置表单元素的选项被选中时的样式
<meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>设置选项被选中时的样式</title> <style type="text/css"> /*设置表单元素的选项被选中时的样式*/ :checked{ height:50px; width: 50px; } </style> <form> <input type="radio" name="gender" value="male"><span>男人</span> <br> <input type="radio" name="gender" value="female"><span>女人</span> </form>
在使用CSS3中的伪类挑选器时,假如想要设置输入框必填和非必填样式,能够使用required和optional伪类挑选器。
适用于可选和必选的元素
<meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>设置必选和可选的样式</title> <style type="text/css"> /*设置必选和可选的样式*/ :required{ outline: 3px; background-color: aquamarine; } :optional{ background-color: brown; } </style> <form> <p> <label for="required">必填:</label> <input type="text" name="required" required=""> </p> <p> <label for="potional">选填:</label> <input type="text" name="potional"> </p> <button type="submit">提交</button> </form>
他会选中默认的元素
<meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>设置默认元素的样式</title> <style type="text/css"> /*设置默认元素的样式*/ :default{ outline:3px solid red; } </style> <form> <p> <label for="required">必填:</label> <input type="text" name="required" required=""> </p> <p> <label for="potional">选填:</label> <input type="text" name="potional"> </p> <button type="submit">提交</button> </form>
设置输入合法与非法的这两种情况对应的CSS样式
<meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>设置输入合法与非法的样式</title> <style type="text/css"> /*设置输入合法与非法的这两种情况对应的CSS样式*/ input:valid{ border: 2px solid red; } input:invalid{ border: 2px solid gray; } </style> <form> <input type="email" placeholder="请输入邮箱"> <button type="submit">提交</button> </form>
用于设置用户输入的数值在范围内和不在范围内时的样式
<meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>用于设置用户输入的数值在范围内和不在范围内时的样式</title> <style type="text/css"> /*用于设置用户输入的数值在范围内和不在范围内时的样式*/ input:in-range{ border:3px solid green; } input:out-of-range{ border:4px solid red; } </style> <form> <input type="number" min="0" max="99" value="66"> <br> <input type="number" min="0" max="99" value="99"> <button type="submit">提交</button> </form>
设置输入在“只读”和“可读可写”属性对应的样式
<meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>设置输入在“只读”和“可读可写”属性对应的样式</title> <style type="text/css"> /*设置输入在“只读”和“可读可写”属性对应的样式*/ input:read-only{ background-color: red; } input:read-write{ background-color: green; } </style> <form> <p>普通的输入框<input type="text"></p> <br> <p>只读的输入框<input readonly="" type="text"></p> </form>
设置根元素样式,对于 HTML 来说,:root
表示 HTML
元素,理解为改变html页面样式
<meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>设置根元素样式</title> <style type="text/css"> /*设置根元素样式*/ :root{ background-color: red; } </style> <form> <p>test</p> </form>
定义没有定义内容的元素
<meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>设置根元素样式</title> <style type="text/css"> /*用于设置用户输入的数值在范围内和不在范围内时的样式*/ :empty{ border:3px solid red; } </style> <form> <p></p> <p>test</p> <p></p> </form>
指定你所感兴趣的元素的索引
<meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>设置body第三个元素的样式</title> <style type="text/css"> /*设置body第三个元素的样式*/ li:nth-child(3){ background: red; } </style> <section> <ul> <li>咖啡</li> <li>茶</li> <li>牛奶</li> </ul> </section>
起一个锚定的作用
# 锚的名称是在一个文件中链接到某个元素的URL。元素被链接到目标元素。
:target选择器可用于当前活动的target元素的样式。
<meta charset="utf-8"><title>CSS 目标伪类选择符 target选择器-CSS教程</title><meta name="author" content="Joy Du(飘零雾雨), dooyoe@gmail.com, www.doyoe.com"><style>.test .hd{padding:10px 0;}.test .nav{position:fixed;right:10px;left: 540px;}.test .nav a{display:block;margin: 10px 0;}.test .bd .panel{width:500px;margin-top:5px;border:1px solid #ddd;}.test .bd h2{border-bottom:1px solid #ddd;}.test .bd .panel:target{border-color:#f60;}.test .bd .panel:target h2{border-color:#f60;}h2,p{margin:0;padding:10px;font-size:16px;}</style><div class="test"> <div class="hd nav"> <a href="#panel1">前往区块1</a> <a href="#panel2">前往区块2</a> <a href="#panel3">前往区块3</a> <a href="#panel4">前往区块4</a> <a href="#panel5">前往区块5</a> </div> <div class="bd"> <div id="panel1" class="panel"> <h2>区块1</h2> <div><p>区块1内容</p><p>区块1内容</p><p>区块1内容</p></div> </div> <div id="panel2" class="panel"> <h2>区块2</h2> <div><p>区块2内容</p><p>区块2内容</p><p>区块2内容</p></div> </div> <div id="panel3" class="panel"> <h2>区块3</h2> <div><p>区块3内容</p><p>区块3内容</p><p>区块3内容</p></div> </div> <div id="panel4" class="panel"> <h2>区块4</h2> <div><p>区块4内容</p><p>区块4内容</p><p>区块4内容</p></div> </div> <div id="panel5" class="panel"> <h2>区块5</h2> <div><p>区块5内容</p><p>区块5内容</p><p>区块5内容</p></div> </div> </div></div>
:lang 向带有指定 lang 属性开始的元素添加样式。
:lang 是一个伪类,它适用于具有相关联的语言编码信息的任何元素。
:lang 基于其人类语言编码匹配元素。这种语言信息必须包含在文档中或以其他方式与文档相关联
例如,在HTML文档中,元素的语言由其lang属性确定。
每个
元素lang属性值等于”it(Italian)” 的选择的样式:
<style>p:lang(it) { background:yellow;}</style></p><p>I live in Italy.</p><p lang="it">Ciao bella!</p><p><b>注意:</b> :lang 作用于 IE8, DOCTYPE 必须已经声明.</p>
not()
用来匹配不符合一组选择器的元素。由于它的作用是防止特定的元素被选中,它也被称为反选伪类(negation pseudo-class)。
/* 选择所有不是段落(p)的元素 */:not(p) { color: blue;}
伪类选择器和伪元素选择器区分
在没有学过这两类的前提下,为某些元素增添样式,需要创建类,但是学完以后可以直接用这两类选择器
"如无必要,勿增实体"