1. 程式人生 > >IE下css設定select的諸多問題

IE下css設定select的諸多問題

IE下設定select的無法實現的。先改變select的尺寸可以設定select的寬高

示例程式碼

<html>
<head>
  <style>
  select{ height:20px; width:80px;}
</style>
</head>
<body>
<select>
<option>test1</option>
</select>
</body>


我想嘗試使用css來模擬實現可改變高度,其實ie67下可以通過設定font-size來實現改變select的高度,但是這個是個不是很靠譜的方法,我說下我實現的原理:
第一步:就是在select外邊加上兩個div分別是 select-outer 和select-inner,然後給他們成inline-block,這樣主要為了模擬select是內聯元素,然後給select-inner設定一個寬度和高度,這個寬度和高度就是實現重點,為什麼呢?大家可以自己做個測試,看看一個不設定任何屬性的select高度是多少?這個我做了測試,但是我給select設定了font-size:12px;因為這個是基本的不然漢字都看不清楚別的就不需要在談了,然後我給select設定了border:1px solid #ccc;同理也是為了統一不同的瀏覽器對select邊框設定的不同,在這兩個前提下我做了測試:IE67:21px; IE8:19px;IE9:18px;FF:18px;chrome:19px;safari:18px;從結果上可以看出,這種情況下的select的高度最大是21最小是18,還有就是我們發現ie67是一樣的,並且只有ie67不能更改高度,那麼解決的方案來了,那就是把select的高度設定21,那麼這個時候所有的瀏覽器的select的高度相同了,第一步解決了。
第二步:截掉select預設的邊框,這個時候我們的select-inner就派上用場了,方法是給select設定position:relative;margin:-1px;然後給select-inner 設定高度,高度就是上面的21-2=19,我想這個大家應該明白用意了,然後設定overflow:hidden,以及display:inline-block(這裡就不再介紹它的相容設定了,相信大家都很熟悉了),這樣設定完在瀏覽器中看,除去ie67有瑕疵外其餘的良好邊框被截掉,但是ie67下的左右邊框擷取的不好,想想應該是沒有給select-inner設定寬度的原因,設定了寬度後ok都正常,現在的問題來了,寬度是多少取決於你給select設定了多度是多少?所以當select使用在諸多不同的位置的時候這個問題怎麼解決呢?這個也著實讓我很頭疼沒有辦法解決(如果你有好的方法可以告訴我),最後我使用了一個比較笨的方案,那就是給select-outer再加上一個class來控制寬度,這樣靈活性變得差了許多。
第三步:設定改變高度,我想你如果仔細看完上面的內容,那麼答案就很簡單了,那個是select-outer設定padding,這個padding-bottom=padding-top=(你要設定的高度-19)/2,當然padding的左右是多少你可以設定。然後給select-outer設定你想要的邊框和邊框顏色,到這裡就基本上完成了。其實我們可以把padding和邊框等等設定到上面說的另加的class上去,這樣只需要換這個class即可以不同的顯示效果了!

下面是程式碼示例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
<style type="text/css">
* { padding:0; margin:0; }
body { text-align:center; padding:50px;}
.select-outer { display:inline-block; *display:inline; zoom:1; border:1px solid #ccc; }
.select-inner { display:inline-block; *display:inline; zoom:1; height:19px; overflow:hidden; position:relative; }
.select-h { border:1px solid #ccc; height:21px; font-size:12px; position:relative; zoom:1; margin:-1px; }
.select-wh200 { padding:3px; }
.select-wh200 .select-inner { width:200px; }
.select-wh200 select { width:202px; }
</style>
</head>
<body>
<div class="select-outer select-wh200">
  <div class="select-inner">
    <select name="" class="select-h">
      <option value="">web標準學習aa</option>
      <option value="">jQuery學習</option>
    </select>
  </div>
</div>
<div class="select-outer select-wh200">
  <div class="select-inner">
    <select name="" class="select-h">
      <option value="">web標準學習</option>
      <option value="">jQuery學習</option>
    </select>
  </div>
</div>
<div class="select-outer select-wh200">
  <div class="select-inner">
    <select name="" class="select-h">
      <option value="">web標準學習</option>
      <option value="">jQuery學習</option>
    </select>
  </div>
</div>
</body>
</html>


相關推薦

IEcss設定select問題

IE下設定select的無法實現的。先改變select的尺寸可以設定select的寬高 示例程式碼 <html> <head> <style> select

css設定固定高度行超出變省略號,適用於手機端

基本設定:  display: -webkit-box;/** 物件作為伸縮盒子模型顯示 **/ word-break: break-all; text-overflow: ellipsis; -webkit-box-orient: vertical

IEcss常見問題總結及解決

解決方法:將行距增加到和整個DIV一樣高:複製程式碼程式碼如下:div{height: 100px;line-height: 100px;text-align: center; or vertical-align: middle (測試發現使用vertical-align時,水平方向無法居中,text-ali

解決IECSS背景圖片閃爍的Bug

要給一些按鈕或是img設定背景,而為了達到資料與表現樣式分離的效果,通常背景樣式都是在CSS裡設定的,但是這個行為在IE會有一個Bug,那就是因為IE預設情況下不快取背景圖片,所以當滑鼠在有CSS背景的按鈕或是圖片上移動

IE如何設定iframe背景透明

首先:在iframe標籤中加入 allowtransparency="true"屬性然後:在呼叫的頁面的<body>標籤里加入style="background:transparent;" 示例:<iframe allowtransparency="ture

解決Android系統中CSS設定select高度無效的BUG

在CSS中使用height和line-height設定select的高度,在有的Android版本系統中是無效的,可以通過新增"-webkit-appearance: listbox;"屬性解決這個BUG,完整例項程式碼如下(2.3.3,4.0,4.2系統已測試可行): s

關於在IESelect標籤設定innerHTML無效的問題

今天在做應用的時候有個級聯選單的功能,因為一般做開發的時候都是使用FireFox居多(原因不用多說,相信所有的前端開發人員都曾經嚐到了噁心的IE不遵守W3C標準的痛苦),因此想當然的時候對一個Select標籤進行了如下操作: selectObj.innerHTML = 

css實現select拉框並排顯示

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

ie常見的css兼容問題

-m blank href 消失 特性 元素 out 識別 play 1.border-radius 邊框圓角 IE8及以下瀏覽器不支持border-radius webkit引擎支持-webkit-borderradius 私有屬性 mozilla Gecko引擎支持

css修改拉列表select的默認樣式

png add OS 覆蓋 lec pad repeat 自定義 -c select的一些默認樣式我們很難修改,比如圖標的替換。接下來就說說如何修改這些默認樣式: html代碼: <div> <select name="">

用純css改變拉列表select框的默認樣式

隱藏 如何 pos share ack rop href static image 在這篇文章裏,我將介紹如何不依賴JavaScript用純css來改變下拉列表框的樣式。 事情是這樣的,您的設計師團隊向您發送一個新的PSD(Photoshop文檔),它是一個新的網站的最終設

html之行文本textarea 及拉框select(12)

class tar value sel image 青島 規範 input .post 1.多行文本 多行文本使用textarea標簽,默認值需要寫在中間,和input標簽不同,name屬性用於後臺獲取數據(request.POST.get(meno)) <b

css設定行超出變省略號,適用於手機端。

 width: 200px;     word-break: break-all;     text-overflow: ellipsis;     display: -webkit-box; /** 物件作為伸縮

python學習之網站的編寫(HTML,CSS,JS)(十)----------CSS中用的最的class選擇器,批量的為一些標籤設定相同的版式

選擇器有很多種,有id選擇器,div選擇器,層級選擇器,組合選擇器等等,然而,用的最多的就是class選擇器,它的作用是為下面所有符合class規則的標籤設定上相同的版式。 步驟: 1.在頭部編寫<style>標籤,點+class選擇器的名稱(也就是下面需要選擇的class),然

Linux/WindowsC++設定執行緒名字方便執行緒除錯

C++多執行緒程式設計,除錯是一個大問題,原因之一就是,執行緒名字繼承了父程序的名字,因此導致同一段程式碼的不同執行緒名字一樣;而且還會導致執行緒的名字怪怪的,不好看。 因此,如果在程式碼中可以設定執行緒的名字就好了,這樣在除錯中就可以看到期望的執行緒名字,這樣便於除錯。 由於編

IE複選框次快速點選複選框狀態出現紊亂情況

複選框點選事件: <input type="checkbox" id="chk_2109_0" name="SFWSJ" kfdm="2109" onclick="setBNRJFProcess(this,2109);" > 在IE下連續多次點選,setBNRJFProces

雲環境運維工作面對的新挑戰

隨著公有云(尤其是公有云IaaS)的普及,整個雲上運維和傳統IDC中的運維還是呈現出比較明顯的不同點,我們可以從下面幾個角度來理解這種不同點。 1.應用運維成為雲上使用者的運維重心。 一般來說,很多企業的運維部門主要工作包括基礎運維(針對企業IT基礎設施的運維)、應用運維(針對企業具體業務的運維),較大的

css設定列等高佈局

初始時,多個列內容大小不同,高度不同。現在需要設定不同的背景來顯示,而且各個列的高度需要保持一致。那麼這就需要利用到多列等高佈局。 最終需要的效果: 1. 真實等高佈局 flex 技術點:彈性盒子佈局flex,預設值就是自帶等高佈局的特點。 定義flex佈局的時候,有一些預設值。 flex-directi

如何設定select拉禁止選擇

如何設定select下拉禁止選擇   1、問題背景      設定select下拉框不能選擇,利用disabled="disabled",但是顏色且顯示白色,容易引起使用者誤解   2、問題實現 (1)只禁止 &nb

select2設定select選,select2取值和賦值

select2設定select多選,select2取值和賦值,作為篩選條件的時候,取值相對簡單,把選中的id值轉為字串傳給後端查詢,查詢之後會重新整理頁面,為了在下拉框中顯示剛剛選中的值,就需要給select賦值,可以將剛才傳給後端的字串再傳回前端,然後轉為一位陣列,再賦值給select2就會顯