修改radio、checkbox、select預設樣式的方法

来源:http://www.cnblogs.com/depsi/archive/2016/01/21/5147743.html
-Advertisement-
Play Games

修改radio、checkbox、select預設樣式,支持CSS3及js兩種方式,CSS3相容IE9以上,js方式支持IE8以上。select修改預設樣式僅支持IE10以上。


樣式 radio select checkbox 相容性

現在前端頁面效果日益豐富,預設的input組件樣式顯然已經不能滿足需求。趁著這次開發的頁面中有這方面的需求,在這裡整理一下修改radiocheckboxselect的方法。
首先上效果圖:

enter description here

radio and checkbox

修改radio的預設樣式有兩種常用的方法

純CSS

此方法需藉助CSS3,關鍵CSS代碼如下

.demo1 input[type='radio'],.demo1 input[type="checkbox"]{
    display:none; 
}
.demo1 label:before{
    content: "";
    display: inline-block;
    width: 17px;
    height: 16px;
    margin-right: 10px;
    position: absolute;
    left: 0;
    bottom: 0;
    background-color: #3797fc;
}
.demo1 input[type='radio'] + label:before{
     border-radius: 8px;
}
.demo1 input[type='checkbox'] + label:before{
     border-radius: 3px;
}
.demo1 input[type='radio']:checked+label:before{
    content: "\2022";
    color: #fff;
    font-size: 30px;
    text-align: center;
    line-height: 19px;
}
.demo1 input[type='checkbox']:checked+label:before{
    content: "\2713";
    font-size: 15px;
    color: #f3f3f3;
    text-align: center;
    line-height: 17px;
}
  • 優點:充分藉助了CSS3的優勢,無需使用js和圖片,僅用純CSS3就可搞定

  • 缺點:相容性較差,僅支持IE9+

js+圖片

  • js代碼:

$(function(){
    $(".demospan").bind("click",function(){
        $(this).addClass("on").siblings().removeClass("on");
    })

    $(".piaochecked").bind("click",function(){
        $(this).hasClass("on_check")?$(this).removeClass("on_check"):$(this).addClass("on_check");
        // $(this).toggleClass("on_check");
    })
})
  • css代碼

.demospan{
    display: inline-block;
    width: 24px;
    height: 18px;
    /*float: left;*/
    padding-top: 3px;
    cursor: pointer;
    text-align: center;
    margin-right: 10px;
    background-image: url(http://sandbox.runjs.cn/uploads/rs/161/i5pmsg7s/inputradio.gif);
    background-repeat: no-repeat;
    background-position: -24px 0;
}
.demo21{
    opacity: 0;
    cursor: pointer;
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
    filter:alpha(opacity=0);
}
.on{
    background-position: 0 0;
}
.piaochecked{
    display: inline-block;
    width: 20px;
    height: 20px;
    cursor: pointer;
    margin-left: 10px;
    text-align: center;
    background-image:  url(http://sandbox.runjs.cn/uploads/rs/161/i5pmsg7s/checkbox_01.gif);
    background-repeat: no-repeat;
    background-position: 0 0;
}
.on_check{
    background-position: 0 -21px;
}
.cbdemo2{
    opacity: 0;
    cursor: pointer;
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)";
    filter:alpha(opacity=0);
}
  • 優點:相容性高,支持IE6+

  • 缺點:使用js+圖片較為麻煩

select

/*select*/
 .select select{
    /*覆寫Chrome和Firefox裡面的邊框*/
    border:1px solid  green;
    /*清除預設樣式*/
    appearance:none;
    -moz-appearance:none;
    -webkit-appearance:none;
/*在選擇框的最右側中間顯示小箭頭圖片*/
    background: url("http://ourjs.github.io/static/2015/arrow.png") no-repeat scroll right center transparent;
    /*為下拉小箭頭留出一點位置,避免被文字覆蓋*/
  padding-right: 14px;
 }
 /*清除ie的預設選擇框樣式清除,隱藏下拉箭頭*/
select::-ms-expand { display: none; }

該方法關鍵在於清除預設樣式,使用css3的appearance屬性,但是相容性較差,僅支持IE9+。若要相容低版本瀏覽器,可以使用Div進行模擬。

Todo

  • 相容更低版本瀏覽器的select樣式修改

最後附上演示鏈接:修改radio、checkbox和select預設樣式


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一個java 知乎爬蟲程式,使用echart 做圖表展示
  • Swift中的閉包,就是Objective-C中的Block, 其實兩者是一個東西1.Closure變數的聲明 (1)Closure就是匿名函數,我們可以定義一個閉包變數,而這個閉包變數的類型就是我們上面介紹的“函數類型”。 定義一個閉包變數其實就是定義一個特定函數類型的變數,方式如下。 因為...
  • 歡迎關註我的社交賬號: 博客園地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html GitHub地址: https://github.com/jiangxincode 知乎地址: https://www.zhihu.com/people/jia....
  • 傳統的線程互斥和同步通信是通過synchronized關鍵字和wait()、notify()方法來實現的。首先介紹下synchronized關鍵字。synchronized 關鍵字,它包括兩種用法:synchronized 方法和 synchronized 塊。1. synchronized 方法:...
  • 總結:通過開發日報告提交系統,掌握了基本的phalcon框架原理和PHP語言。也瞭解了一些linux常用指令,收穫頗豐。下麵對項目中所遇到的問題進行總結:1.前臺數據傳往後臺所用的三種方法:(1)表單提交form,$this->request->getPost(‘name’);(2)超鏈接, $_G...
  • 作者:武沛齊出處:http://www.cnblogs.com/wupeiqi/本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。模塊,用一砣代碼實現了某個功能的代碼集合。類似於函數式編程和麵向過程編程,函數式編程則完成一個功能,其他代碼用來調用...
  • 前言公司同事做了一個報表系統,需要做集群部署,本來是一件挺容易的事,但是部署過程中卻遇到啦種種蛋疼問題。問題1、我們的報表使用的是微軟的水晶報表,需要上傳報表的配置文件,然後水晶報表提供的控制項來讀取文件,不支持直接圖片伺服器提供的http:www.xxxx.com/a.jpg。但是他支持\\192....
  • css3動畫border旋轉時的應用。 效果圖上面代碼中要註意的地方:border-radius: 70px;為70px時div才能顯示為圓形,因為上下左右的border多出...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...