兩天征服CSS3選擇器(下)

  • :enabled與 :disabled選擇器

在Web的表單中,有些表單元素有可用(“:enabled”)和不可用(“:disabled”)狀態(tài),比如輸入框,密碼框,復(fù)選框等。在默認(rèn)情況之下,這些表單元素都處在可用狀態(tài)。要使用“:disabled”選擇器,需要在表單元素的HTML中設(shè)置“disabled”屬性。
例如為所有 type="text" 的被禁用的 input 元素設(shè)置背景色:
html代碼

First name: <input type="text" value="Mickey" /><br>
Last name: <input type="text" value="Mouse" /><br>
Country: <input type="text" disabled="disabled" 
value="Disneyland" /><br>
</form>

CSS代碼

input[type="text"]:enabled
{
background:#ffff00;
}
input[type="text"]:disabled
{
background:#dddddd;
}

運(yùn)行結(jié)果:

Paste_Image.png
  • checked選擇器

在表單元素中,單選按鈕和復(fù)選按鈕都具有選中和未選中狀態(tài)。:checked 選擇器匹配每個(gè)已被選中的 input 元素(只用于單選按鈕和復(fù)選框)。在CSS3中,我們可以通過(guò)狀態(tài)選擇器“:checked”配合其他標(biāo)簽實(shí)現(xiàn)自定義樣式。
例如通過(guò)“:checked”狀態(tài)來(lái)自定義復(fù)選框效果。
html代碼

<div class="wrapper">
    <div class="box">
      <input type="checkbox" checked="checked" id="usename" /><span>√</span>
    </div>
    <lable for="usename">我是選中狀態(tài)</lable>
  </div>
  
  <div class="wrapper">
    <div class="box">
      <input type="checkbox"  id="usepwd" /><span>√</span>
    </div>
    <label for="usepwd">我是未選中狀態(tài)</label>
  </div>

CSS代碼

form {
  border: 1px solid #ccc;
  padding: 20px;
  width: 300px;
  margin: 30px auto;
}

.wrapper {
  margin-bottom: 10px;
}

.box {
  display: inline-block;
  width: 20px;
  height: 20px;
  margin-right: 10px;
  position: relative;
  border: 2px solid orange;
  vertical-align: middle;
}
.box input {
  opacity: 0;
  position: absolute;
  top:0;
  left:0;
}

.box span {
  position: absolute;
  top: -10px;
  right: 3px;
  font-size: 30px;
  font-weight: bold;
  font-family: Arial;
  -webkit-transform: rotate(30deg);
  transform: rotate(30deg);
  color: orange;
}

input[type="checkbox"] + span {
  opacity: 0;//沒(méi)有被選中的input將span設(shè)置為透明的
}

input[type="checkbox"]:checked + span {
  opacity: 1;//將選中的input的span設(shè)置為不透明的
}

運(yùn)行結(jié)果

Paste_Image.png
  • ** ::selection選擇器**

注意,“::selection選擇器”是雙冒號(hào)。其實(shí)雙冒號(hào)往往都是“偽元素”,而單冒號(hào)往往都是“偽類(lèi)”。
“::selection”偽元素是用來(lái)匹配突出顯示的文本(用鼠標(biāo)選擇文本時(shí)的文本)。瀏覽器默認(rèn)情況下,用鼠標(biāo)選擇網(wǎng)頁(yè)文本是以“深藍(lán)的背景,白色的字體”顯示的,效果如下圖所示:

QQ截圖20170413150046.png

用鼠標(biāo)選中“運(yùn)行結(jié)果”文本時(shí),默認(rèn)顯示樣式為:藍(lán)色背景、白色文本。
有的時(shí)候設(shè)計(jì)要求,不使用上圖那種瀏覽器默認(rèn)的突出文本效果,需要一個(gè)與眾不同的效果,此時(shí)“::selection”偽元素就非常的實(shí)用。不過(guò)在Firefox瀏覽器還需要添加前綴。
示例:將鼠標(biāo)選中的文本時(shí)的背景變成 orange,文本變成 white。
html代碼

<body>
<p>“::selection”偽元素是用來(lái)匹配突出顯示的文本。瀏覽器默認(rèn)情況下,選擇網(wǎng)站文本是深藍(lán)的背景,白色的字體,
有的設(shè)計(jì)要求不使用上圖那種瀏覽器默認(rèn)的突出文本效果,需要一個(gè)與眾不同的效果,此時(shí)“::selection”偽元素就非常的實(shí)用。不過(guò)在Firefox瀏覽器還需要添加前綴。</p>
</body>

css代碼

::selection{
  background: orange;
  color: white;
}
//火狐瀏覽器
::-moz-selection{
  background: orange;
  color: white;
}

運(yùn)行結(jié)果

QQ截圖20170413150738.png
  • ** :read-only選擇器**

“:read-only”偽類(lèi)選擇器用來(lái)指定處于只讀狀態(tài)元素的樣式。簡(jiǎn)單點(diǎn)理解就是,元素中設(shè)置了“readonly=’readonly’”
舉例設(shè)置textarea的只讀樣式
html代碼

<div>
    <label for="comment">評(píng)論:</label>
    <textarea name="comment" id="" cols="30" rows="10" readonly="readonly"></textarea>
  </div>

css代碼

form {
  width: 300px;
  padding: 10px;
  border: 1px solid #ccc;
  margin: 50px auto;
}
form > div {
  margin-bottom: 10px;
}
//火狐使用
textarea:-moz-read-only{
  border: 1px solid #ccc;
  height: 50px;
  resize: none;
  background: #eee;
}
//其它使用
textarea:read-only {
  border: 1px solid #ccc;
  height: 50px;
  resize: none;
  background: #eee;
}

運(yùn)行結(jié)果

QQ截圖20170413154021.png
  • :read-write選擇器

“:read-write”選擇器剛好與“:read-only”選擇器相反,主要用來(lái)指定當(dāng)元素處于非只讀狀態(tài)時(shí)的樣式。
示例演示
使用“:read-write”選擇器來(lái)設(shè)置不是只讀控件的文本框樣式。
html代碼

<div>
    <label for="name">姓名:</label>
    <input type="text" name="name" id="name" placeholder="大漠" />
  </div>
  <div>
    <label for="address">地址:</label>
    <input type="text" name="address" id="address" placeholder="中國(guó)上海" readonly="readonly" />
  </div>

css代碼

form {
  width: 300px;
  padding: 10px;
  border: 1px solid #ccc;
  margin: 50px auto;
}
form > div {
  margin-bottom: 10px;
}

input[type="text"]:-moz-read-only{
  border-color: orange;
}
input[type="text"]:read-only{
  border-color: orange;
}
input[type="text"]:-moz-read-write{
  border:2px solid red;
}
input[type="text"]:read-write{
  border:2px solid red;
}

運(yùn)行結(jié)果

Paste_Image.png
  • ** ::before和::after選擇器**

這兩個(gè)選擇器也是雙冒號(hào),這是CSS3為了區(qū)別偽元素和偽類(lèi)而使用的,單冒號(hào)(:)用于CSS3偽類(lèi),雙冒號(hào)(::)用于CSS3偽元素。具體的區(qū)別請(qǐng)參考這個(gè)網(wǎng)頁(yè)
before用雙冒號(hào)與單冒號(hào)的區(qū)別
::before和::after這兩個(gè)主要用來(lái)給元素的前面或后面插入內(nèi)容,這兩個(gè)常和"content"配合使用,使用的場(chǎng)景最多的就是清除浮動(dòng)。
示例插入內(nèi)容

<html>
<head>
<meta charset=utf-8 />
<title>before、after</title>
<style>
 div::before
        {
            content:"CSS3教程";
        }
</style>
</head>
<body>
 <div>選擇器</div>
</body>
</html>

運(yùn)行結(jié)果

QQ截圖20170413160352.png

清除浮動(dòng)
清除浮動(dòng)是一個(gè)時(shí)常會(huì)遇到的問(wèn)題,不少人的解決辦法是添加一個(gè)空的 div 應(yīng)用 clear:both; 屬性?,F(xiàn)在,無(wú)需增加沒(méi)有意義的元素,僅需要以下樣式即可在元素尾部自動(dòng)清除浮動(dòng):簡(jiǎn)單又不會(huì)增加元素。

.clear-fix { *overflow: hidden; *zoom: 1; }
.clear-fix:after { display: block; content: ""; height: 0; clear: both; visibility:hidden;}

關(guān)于clearfix清除浮動(dòng)也有其他版本的寫(xiě)法,具體了解可以看下clearfix清除浮動(dòng)進(jìn)化史
clearfix清除浮動(dòng)進(jìn)化史
想一想

選擇器 作用
:enabled與 :disabled選擇器
checked選擇器
::selection選擇器
:read-only選擇器
:read-write選擇器
::before和::after選擇器

參考:慕課網(wǎng)


最近在忙畢業(yè)論文開(kāi)題,更文較慢,請(qǐng)見(jiàn)諒

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容