select 下拉框樣式

原生的select下拉框其實(shí)挺方便的,直接把選項(xiàng)寫(xiě)入option就能得到一個(gè)流暢的下拉框幔睬,但是原生的樣式也是讓人憂愁眯漩。
首先,在各大瀏覽器中渲染出來(lái)的樣式結(jié)果也是多樣化麻顶,ie下的樣式更是與眾不同赦抖,會(huì)根據(jù)選項(xiàng)位置進(jìn)行滑動(dòng)。


從左往右依次為:Firefox辅肾、ie队萤、Edge、chrome矫钓、Safari

一般這種情況下要尔,我們會(huì)選擇重置樣式。然后你會(huì)發(fā)現(xiàn)份汗,select超愛(ài)自己的盈电,有些樣式你根本無(wú)法變動(dòng)蝴簇。舉例子(運(yùn)行環(huán)境為chrome):

        <!--html-->
        <select >
            <option value="chrome">chrome</option>
            <option value="safari">safari</option>
            <option value="Edge">Edge</option>
            <option value="firefox">firefox</option>
            <option value="ie8">ie8</option>
        </select>

            /*css*/
            body{
                background: #FFBD1E;
            }
            select{
                font-family: "微軟雅黑";
                margin:100px;
                background: rgba(0,0,0,0);
                width: 249px;
                height: 40px;
                font-size: 18px;
                color: white;
                text-align: center;
                border: 1px #1a1a1a solid;
                border-radius: 5px;
            }
            option{
                color: black;
                background: #A6E1EC;
                line-height: 20px;
            }
            select:focus{
                border: 2px #ddd solid;
                box-shadow: 0 0 15px 1px #DDDDDD;
            }
            option:hover{
                background: #EBCCD1;
            }

出現(xiàn)的樣式如下

chrome渲染

經(jīng)過(guò)多次測(cè)試杯活,發(fā)現(xiàn)有幾部分的樣式是無(wú)法覆蓋的。

  • select的focus狀態(tài):雖然有呈現(xiàn)出來(lái)熬词,但是明顯被原生樣式壓在下面了
  • option的hover狀態(tài):同上
  • option的背景顏色:無(wú)法實(shí)行透明度旁钧,一旦透明度變?yōu)?,會(huì)自動(dòng)轉(zhuǎn)換成白色互拾。
  • 字體位置:text-align:center無(wú)法實(shí)現(xiàn)

如果需求變化不大歪今,倒是可以直接采用原生的select,但是我所做的頁(yè)面色彩比較豐富颜矿,select原生樣式很明顯無(wú)法滿足我寄猩。網(wǎng)上有一些說(shuō)法是將select透明度為0,或是appearance為none骑疆,但是都不是我要的田篇,最終決定用列表的方法,自己寫(xiě)一個(gè)下拉框箍铭。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            /*css*/
            /*通用樣式*/
            body{
                background: #FFBD1E;
            }
            ul,li{
                list-style: none;
                padding: 0;
                margin: 0;
            }
            /*下拉框樣式*/
            #select{
                margin:100px;
                background: rgba(0,0,0,0);
                width: 249px;
                height: 40px;
                font-family: "微軟雅黑";
                font-size: 18px;
                color: white;
                border: 1px #1a1a1a solid;
                border-radius: 5px;
            }
            .select-head{
                overflow: hidden;
                width: 249px;
                height: 40px;
                box-sizing: border-box;
                padding: 0 10px;
                line-height: 40px;
            }
            .select-head .select-head-cont{
                float: left;
            }
            .select-head .select-icon{
                float: right;
            }
            .option{
                text-indent: 10px;
                margin-top: 1px;
                width: 249px;
                color: black;
                background: rgba(236,111,111,0.1);
                line-height: 25px;
                border: 1px #cfcfcf solid;
                display: none;
            }
            .option-item:hover{
                background: rgba(204,106,67,0.3);
            }
        </style>
    </head>
    <body>
        <!--html-->
        <ul id="select">
            <li>
                <div class="select-head">
                    <span class="select-head-cont"></span>
                    <span class="select-icon">▼</span>
                </div>
                <ul class="option">
                    <li class="option-item">chrome</li>
                    <li class="option-item">safari</li>
                    <li class="option-item">Edge</li>
                    <li class="option-item">firefox</li>
                    <li class="option-item">ie8</li>
                </ul>
                
            </li>
        </ul>
        <script type="text/javascript">
            //int
            var selectHead = document.getElementsByClassName('select-head')[0];
            var selectHeadCont = document.getElementsByClassName('select-head-cont');
            var Option = document.getElementsByClassName('option')[0];
            var optionItem = document.getElementsByClassName('option-item');
            
            /*默認(rèn)是第一個(gè)選項(xiàng)*/
            selectHeadCont[0].innerHTML = optionItem[0].innerHTML;
            
            /*點(diǎn)擊后出現(xiàn)下拉框*/
            selectHead.addEventListener('click',function(){
                Option.style.display = 'block';
            },false);
            /*點(diǎn)擊選項(xiàng)后出現(xiàn)在下拉框*/
            var len = optionItem.length;
            for(var i=0;i<len;i++){
                optionItem[i].index = i;
                optionItem[i].addEventListener('click',function(){
                    selectHeadCont[0].innerHTML = optionItem[this.index].innerHTML;
                    Option.style.display = 'none';
                },false);
            }
            /*點(diǎn)擊其他地方時(shí)泊柬,select會(huì)收起來(lái)*/
            document.body.addEventListener('click',function(){
                Option.style.display = 'none';
            }.false);
        </script>
    </body>
</html>

貼出全部代碼后,展示的樣式如下

手寫(xiě)樣式
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末诈火,一起剝皮案震驚了整個(gè)濱河市兽赁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖刀崖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惊科,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡亮钦,警方通過(guò)查閱死者的電腦和手機(jī)译断,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)或悲,“玉大人孙咪,你說(shuō)我怎么就攤上這事⊙灿铮” “怎么了翎蹈?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)男公。 經(jīng)常有香客問(wèn)我荤堪,道長(zhǎng),這世上最難降的妖魔是什么枢赔? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任澄阳,我火速辦了婚禮,結(jié)果婚禮上踏拜,老公的妹妹穿的比我還像新娘碎赢。我一直安慰自己,他們只是感情好速梗,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布肮塞。 她就那樣靜靜地躺著,像睡著了一般姻锁。 火紅的嫁衣襯著肌膚如雪枕赵。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天位隶,我揣著相機(jī)與錄音拷窜,去河邊找鬼。 笑死涧黄,一個(gè)胖子當(dāng)著我的面吹牛篮昧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播弓熏,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼恋谭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了挽鞠?” 一聲冷哼從身側(cè)響起疚颊,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤狈孔,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后材义,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體均抽,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年其掂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了油挥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡款熬,死狀恐怖深寥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贤牛,我是刑警寧澤惋鹅,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站殉簸,受9級(jí)特大地震影響闰集,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜般卑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一武鲁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蝠检,春花似錦沐鼠、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至本慕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間侧漓,已是汗流浹背锅尘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留布蔗,地道東北人藤违。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像纵揍,于是被迫代替她去往敵國(guó)和親顿乒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容