1. 程式人生 > >第7章 征服CSS3選擇器(下)

第7章 征服CSS3選擇器(下)

:enabled選擇器

在Web的表單中,有些表單元素有可用(“:enabled”)和不可用(“:disabled”)狀態,比如輸入框,密碼框,複選框等。在預設情況之下,這些表單元素都處在可用狀態。那麼我們可以通過偽選擇器“:enabled”對這些表單元素設定樣式。
示例演示
通過“:enabled”選擇器,修改文字輸入框的邊框為2畫素的紅色邊框,並設定它的背景為灰色。

:disabled選擇器

“:disabled”選擇器剛好與“:enabled”選擇器相反,用來選擇不可用表單元素。要正常使用“:disabled”選擇器,需要在表單元素的HTML中設定“disabled”屬性。

HTML程式碼:

<form action="#">
  <div>
    <label for="name">Text Input:</label>
    <input type="text" name="name" id="name" placeholder="可用輸入框"  />
  </div>
   <div>
    <label for="name">Text Input:</label>
    <input type="text" name="name" id="name" placeholder="禁用輸入框"  disabled="disabled" />
  </div>
</form>  

CSS程式碼:

div{
  margin: 20px;
}
input[type="text"]:enabled {
  background: #ccc;
  border: 2px solid red;
}

結果演示
在這裡插入圖片描述

:checked選擇器

在表單元素中,單選按鈕和複選按鈕都具有選中和未選中狀態。(大家都知道,要覆寫這兩個按鈕預設樣式比較困難)。在CSS3中,我們可以通過狀態選擇器“:checked”配合其他標籤實現自定義樣式。而“:checked”表示的是選中狀態。

::selection選擇器

“::selection”偽元素是用來匹配突出顯示的文字(用滑鼠選擇文字時的文字)。瀏覽器預設情況下,用滑鼠選擇網頁文字是以“深藍的背景,白色的字型”顯示的,效果如下圖所示:
在這裡插入圖片描述


從上圖中可以看出,用滑鼠選中“專注IT、網際網路技術”、“純乾貨、學以致用”、“沒錯、這是免費的”這三行文字中,預設顯示樣式為:藍色背景、白色文字。
有的時候設計要求,不使用上圖那種瀏覽器預設的突出文字效果,需要一個與眾不同的效果,此時“::selection”偽元素就非常的實用。不過在Firefox瀏覽器還需要新增字首。
示例演示:
通過“::selection”選擇器,將Web中選中的文字背景變成紅色,文字變成綠色。
HTML程式碼:

<p>“::selection”偽元素是用來匹配突出顯示的文字。瀏覽器預設情況下,選擇網站文字是深藍的背景,白色的字型,</p>

CSS程式碼:

::-moz-selection {
  background: red;
  color: green;
}
::selection {
  background: red;
  color: green;
}

結果演示:
在這裡插入圖片描述

注意: 1、IE9+、Opera、Google Chrome 以及 Safari 中支援 ::selection 選擇器。
2、Firefox 支援替代的 ::-moz-selection。 :read-only選擇器
“:read-only”偽類選擇器用來指定處於只讀狀態元素的樣式。簡單點理解就是,元素中設定了“readonly=’readonly’”
input[type="text"]:read-only{ border-color: #ccc; }

:read-write選擇器

“:read-write”選擇器剛好與“:read-only”選擇器相反,主要用來指定當元素處於非只讀狀態時的樣式。

input[type="text"]:read-write{
  border-color: #f36;
}

::before和::after

::before和::after這兩個主要用來給元素的前面或後面插入內容,這兩個常和"content"配合使用,使用的場景最多的就是清除浮動。

.clearfix::before,
.clearfix::after {
    content: ".";
    display: block;
    height: 0;
    visibility: hidden;
}
.clearfix:after {clear: both;}
.clearfix {zoom: 1;}

當然可以利用他們製作出其他更好的效果,比如右側中的陰影效果,也是通過這個來實現的。
關鍵程式碼分析:

.effect::before, .effect::after{
    content:"";
    position:absolute;
    z-index:-1;
    -webkit-box-shadow:0 0 20px rgba(0,0,0,0.8);
    -moz-box-shadow:0 0 20px rgba(0,0,0,0.8);
    box-shadow:0 0 20px rgba(0,0,0,0.8);
    top:50%;
    bottom:0;
    left:10px;
    right:10px;
    -moz-border-radius:100px / 10px;
    border-radius:100px / 10px;
}

上面程式碼作用在class名叫.effect上的div的前(before)後(after)都新增一個空元素,然後為這兩個空元素新增陰影特效。