如何使用 CSS 設定複選框樣式
P粉252116587
2023-08-23 12:39:36
<p>我正在嘗試使用以下內容來設定複選框的樣式:</p>
<p><br /></p>
<pre class="brush:html;toolbar:false;"><input type="checkbox" style="border:2px dotted #00f;display:block;background:#ff0000;" />< /pre>
<p><br /></p>
<p>但該樣式未套用。此複選框仍顯示其預設樣式。如何給它指定的樣式? </p>
透過使用
:after
和:before
偽類別附帶的新功能,您可以實現非常酷的自訂複選框效果。這樣做的優點是:您不需要向 DOM 添加任何其他內容,只需添加標準複選框即可。請注意,這僅適用於相容的瀏覽器。我相信這與某些瀏覽器不允許您在輸入元素上設定
:after
和:before
有關。不幸的是,這意味著目前僅支援 WebKit 瀏覽器。 Firefox Internet Explorer 仍然允許複選框發揮作用,只是沒有樣式,這有望在未來發生變化(代碼不使用供應商前綴)。這只是一個 WebKit 瀏覽器解決方案(Chrome、Safari、行動瀏覽器)
查看範例 Fiddle
#額外的 Webkit 風格翻轉小提琴
更新:
下面的答案參考了 CSS 3 廣泛使用之前的情況。在現代瀏覽器(包括 Internet Explorer 9 及更高版本)中,使用您喜歡的樣式建立複選框替換更加簡單,無需使用 JavaScript。
以下是一些有用的連結:
值得注意的是,根本問題沒有改變。您仍然無法將樣式(邊框等)直接套用至複選框元素並使這些樣式影響 HTML 複選框的顯示。然而,發生的變化是,現在可以隱藏實際的複選框並將其替換為您自己的樣式元素,只使用 CSS 即可。特別是,由於 CSS 現在具有廣泛支援的
:checked
選擇器,因此您可以使替換正確反映框的選取狀態。舊答案
這是一篇關於樣式化複選框的有用文章。基本上,該作者發現它在不同瀏覽器之間存在巨大差異,並且無論您如何設計它,許多瀏覽器總是顯示預設複選框。所以確實沒有一個簡單的方法。
不難想像一種解決方法,您可以使用 JavaScript 在複選框上覆蓋圖像,然後單擊該圖像導致檢查真正的複選框。沒有 JavaScript 的用戶將看到預設複選框。
編輯新增:這裡是一個很好的腳本,可以為您完成此操作;它隱藏了真正的複選框元素,用樣式化的範圍替換它,並重定向點擊事件。