:enabled
和:disabled
的使用
使用细节点:
- input的输入框中,设置
readonly
(只读)属性也是可以匹配到:enabled
的样式 <a href></a>
可以匹配:anabled
的属性,却不能匹配:disabled
的属性<select>
下拉框可以匹配:enabled
和:disabled
contenteditable='true'
与tabindex
属性的元素也不能匹配:enabled
伪类;- 设置了
visibility:hidden
和display:none
;依然可以匹配俩个伪类
为防止重复点击的请求,设置disabled=true
;一个简洁与语义性良好的按钮监听事件的代码如下:
<style>
.cs_btn:disabled {
background: gray;
}
</style>
<button id="csButton" class="cs_btn">按钮</button>
<script>
csButton.addEventListener('click', function() {
this.disabled = true;
console.log("已点击过的click");
})
</script>
:placeholder-show
占位符显示的伪类
与input
中placeholder
属性密切相关;input:placehplder-show {}
(1)实现Material Design风格
其主要的代码如下:
<style>
.input_box {
position: relative;
}
.input_value {
padding: 13px 16px 13px;
border: 1px solid #d0d0d5;
border-radius: 4px;
transition: border-color .25s;
}
.input_value:placeholder-shown::placeholder {
color: transparent;
}
.input_lab {
position: absolute;
left: 16px;
top: 14px;
transition: all .25s;
pointer-events: none; // 跳过点击的target的事件
}
.input_value:not(:placeholder-shown) ~ .input_lab,
.input_value:focus ~ .input_lab {
transform: scale(.75) translate(0, -32px);
}
</style>
<div class="input_box">
<input class="input_value" type="text" placeholder="youxiang">
<label for="" class="input_lab">邮箱</label>
</div>
呈现的效果如下列所示:
(2)用于空值逇判断
示例的代码如下:
<style>
input:placeholder-shown + small::before,
textarea:placeholder-shown + small::before {
content: '尚未输入内容';
color: red;
font-size: 14px;
}
</style>
<div>
<input placeholder=" "><small></small>
<textarea placeholder=" " ></textarea><small></small>
</div>
展示效果如下图所示:
:default
默认选项实例
:default
默认选项的匹配,selected或checked的值必须有一个为true,不写的情况是默认第一项,但不匹配:default
的伪类
伪类的实际应用,推荐标记,代码如下:
<style>
input:default + label::after {
content: "(推荐)";
}
</style>
<p><input type="radio" name="pay" id="pay0" value="0"> <label for="pay0">支付宝</label></p>
<p><input type="radio" name="pay" id="pay1" value="1" checked> <label for="pay1">微信</label></p>
<p><input type="radio" name="pay" id="pay2" value="2"> <label for="pay2">银行卡</label></p>
展示效果如下图所示:
:checked
选中选项的伪类
[checkout]
与:checked
的区别:
:checkout
只能匹配标准的表单控件元素,不能匹配其它的普通元素;
:checked { background: darkcyan;} // 只对表单生效
[checked] { border: 1px solid; } // 匹配属性
<canvas checkbox width="120" height="80"></canvas>
- [checkbox]并非实时的,都使用:checked不会出现这种情况;
- :checked是可以从父类中继承而来,但是[checked]属性不行
:indeterminate
不确定值的伪类;(相当于不全选的伪类)
1,与复选框的使用
2,与单选框的使用
输入值的验证
:valid
、:invalid
;默认情况下匹配:valid
,设置了require
(必填)时匹配:invalid
:in-range
,:out-of-range
;匹配输入框的值是否在此范围内:required
,:optional
匹配必填与可选