1. 程式人生 > >純CSS調整select選擇框高度,相容IE/Firefox/Opera/Safair/Chrome

純CSS調整select選擇框高度,相容IE/Firefox/Opera/Safair/Chrome

在IE下直接用height、border定義select沒有效果,目前大部分情況都是用js進行模擬,其實css也是可以做得到的,原理很簡單,隱藏select選擇框的原生邊框,再用其他元素模擬內邊距及邊框就OK了。

首先看一下預設的select在各個瀏覽器的表現情況。

從上圖中我們可以看各個瀏覽器對select的渲染不對高度不一致,連長度也不盡相同,唯一相同的就是邊框寬度一致(廢話)。下面我們對select進度高寬度行高及字型樣式等進行定義,看看有什麼情況發生,CSS程式碼:

.city{width:200px;height:20px;font:normal 12px/20px Tahoma,Geneva,sans-serif;overflow:hidden;}

在瀏覽器下select寬度表現相同,高度大部分表現相同,除了Safair,Safair對select渲染的高度為其內部高度,即內部高度(20px)+上下邊框高度(4px)=24px,這個如果有需要,可單獨對safair設css hack。

@media screen and (-webkit-min-device-pixel-ratio:0){.city{line-height:16px;}}

言歸正傳,既然統一了select在各個瀏覽器下的高寬度(200px*20px),那麼接下來的事情就好辦了,除去select上下左右各2px的邊框,剩下的就是文字部分和下拉箭頭部分了,在select外部加一個標籤

,設定.select-wrap寬度為196px高度為16px的,多餘部分溢位隱藏,此時如果再給select設定margin:-2px 0 0 -2px;,那麼select中間部分正好與.city這個div重合,即正好隱藏掉了select的邊框。

CSS如下:

.select-wrap{width:196px;height:16px;line-height:16px;overflow:hidden;}
.city{margin:-2px 0 0 -2px;width:200px;height:20px;font:normal 12px/20px Tahoma,Geneva,sans-serif;overflow:hidden;}
@media screen and (-webkit-min-device-pixel-ratio:0){.city{line-height:16px;}} /*for safair*/

如上圖所示,在IE6\IE7下select還有1px的頂部邊框,再給select加上float:left;或者display:block;問題就解決了;

隱藏select邊框做好了,接下來就是在.select-wrap再加一個標籤用來模擬select邊框

.select-box{padding:10px;width:196px;border:1px solid #ccc;background:#fff;}
.select-wrap{width:196px;height:16px;line-height:16px;overflow:hidden;}
.city{margin:-2px 0 0 -2px;width:200px;height:20px;font:normal 12px/20px Tahoma,Geneva,sans-serif;overflow:hidden;display:block;}
@media screen and (-webkit-min-device-pixel-ratio:0){.city{line-height:16px;}} /*for safair*/

相關推薦

CSS調整select選擇高度相容IE/Firefox/Opera/Safair/Chrome

在IE下直接用height、border定義select沒有效果,目前大部分情況都是用js進行模擬,其實css也是可以做得到的,原理很簡單,隱藏select選擇框的原生邊框,再用其他元素模擬內邊距及邊框就OK了。 首先看一下預設的select在各個瀏覽器的表現情況。

JS日期選擇器(相容IE,Firefox,Opera等主流瀏覽器)

JS檔案下載: 程式截圖: 函式說明 : 主調函式     JTC.setday(args )   引數說明     args :      1. 可以為空;        2. 可以為字串. 輸出控制元件的ID      3. 結構體, 結構體中含

css實現select下拉並排顯示

code 同時 eight spl one 背景色 不起作用 表單 lang <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> &l

CSS自定義select選擇樣式(右側下拉箭頭)

如圖:自定義select的箭頭樣式  HTML以及CSS程式碼如下: <select class="form_select"> <option value="0">請選擇</option> <option value=

今天做項目用了CSS偽類選擇器“before”就來了解了解它怎麽使用又如何用?

偽類選擇器 line ref n) ima cnblogs hello 了解 nbsp 我不知道有沒有小夥伴以前跟我一樣,在一個元素內部想要添加一個小圖標或者小東西的時候, 直接在HTML文檔裏自己加上<span>標簽,或者其他的。亦或者用javascript在

【2048小遊戲】——CSS/原生js爬坑之CSS模態對話&遊戲結束

函數 一半 窗口 內容 href 標準 tex true 存儲空間 引言:2048小遊戲的結束界面,使用純CSS制作模態對話框,一般做模態對話框都會使用BootStrap自帶的模態對話框組件方便使用,但在制作要運行在移動端的小項目時,就不能使用BootStrap,因為文件太

css改變select默認樣式

lec head 邊框 right 隱藏 css 純c oct pre <!doctype html> <html lang="en"> <head> <meta charset="UTF-8" /> <

css改變input的游標顏色字型顏色不變(設定游標顏色與字型顏色不同)

使用input輸入框時,預設游標顏色是和字型顏色相同的,只需css設定color屬性就可以同時改變游標和字型顏色 但有時的需求是游標和字型顏色不一樣,網上的caret方法經測試chrome並不管用,所以,程式碼如下 <!DOCTYPE html> <htm

Bootstrap模態(modal)並新增帶複選的表格(table)還可做提示、檔案選擇很實用!

      Bootstrap中的模態框外掛以彈出對話方塊的形式出現,具有最小和最實用的功能集,主要的是使用起來很靈活!有以下幾個特性:(1)不支援同時開啟多個模態框;(2)務必將模態框的 HTML 程式碼放在文件的最高層級內(也就是說,儘量作為 body 標籤的直接子元素)

如何用 CSS 創作一個“女神來了快讓路”的動畫

效果預覽 線上演示 按下右側的“點選預覽”按鈕可以在當前頁面預覽,點選連結可以全屏預覽。 https://codepen.io/comehope/pen/RYZbmE 可互動視訊 此視訊是可以互動的,你可以隨時暫停視訊,編輯視訊中的程式碼。 請用 chrome,

js原生程式碼給select選擇實現onchange事件

<select name="limit" onchange="selectStages()"> //繫結onchange事件 <option>請選擇期限</option> {loop $limi

js原生代碼給select選擇實現onchange事件

選擇框 nodes func item index element node .get 當前 <select name="limit" onchange="selectStages()"> //綁定onchange事件 &

CSS中id選擇器失效程式碼看起來沒問題

最近在學習CSS3的時候,無意間發現這段程式碼竟然沒有顯示出對應的樣式效果 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>&l

jquery 獲取 select 選擇的所有 內容

獲取的所有的內容存放到 js 陣列中function newOptionValue(selectName){ var ret = new Array(); $("#"+selectName+" option").each(function(){ //遍

css實現三角原理相容IE

css實現三角形的原理是:當元素的寬高為0,邊框(border)不為0時,四個角邊框交界重疊處分45度角平分。 如果4種顏色只保留一種顏色,餘下3種顏色設定為透明(或者設定為和背景色相同的顏色),就出現一個小三角了。 只保留上面的顏色,如下圖: disp

android webview無法彈出select選擇

問題描述: h5頁面裡面有個select標籤,安卓app裡的webview裡面點選的時候預設會拉起一個原生的框,但是在筆者的app上,怎麼點都沒反應,控制檯也沒日誌,也不報錯,經過一段時間的的排查,

javascript實現兩個select選擇內容動態繫結

1. 有時候需要實現當用戶選擇一個選項之後,網頁上另一部分的內容就隨之變化,達到動態更新的目的,這時候我們就會想到ajax來實現區域性重新整理,接下來用一個簡單的例子演示:總共有兩個select選擇框,第一個是省份的選擇,第二個是對應省份的城市的選擇,目標是實現當用戶切換省

select選擇、單選、複選的使用

1、 <input text="checkbox" class="targetItem">, js操作CheckBox的選中和不選:$(".targetItem").checked=true;/$(".targetItem").checked=false; 全選

CSS製作冒泡提示

在此基礎上,今天分享一篇文章給大家,如果利用CSS製作冒泡提示框。 先看2張效果圖: CSS: /* 對話氣泡 用法:使用.speech-bubble和.speech-bubb

css美化select

效果圖如下: <h2>Cars Select</h2> <div class="select"> <select name="cars">