2015-02-10 75 views
0

我試圖擺脫在下拉菜單中的選項後面的白色背景的大背景下,到目前爲止,這是我的代碼:樣式下拉

CSS: 

select { 
    margin: 50px; 
    border: 1px solid white; 
    background: transparent; 
    width: 50%; 
    padding: 5%; 
    height: 50%; 
    -webkit-appearance: none; 
    -moz-appearance: none; 
    appearance: none; 
} 
select > option 
{ 
color:transparent; 
} 
    .blueLabel 
{ 
background: linear-gradient(to right bottom, #2D3C43 0%,#2D3C43 50%,#243137 50%,#243137 100%); 
} 

HTML:

<div class = "blueLabel"> 
<select> 
    <option>option 1</option> 
    <option >Kuku</option> 
    <option>Yeah, why not</option> 
    <option>I think is = 7</option> 
</select> 
<div> 

Fiddle

我希望它是透明的。問題是,無論我做什麼它仍然是白色的,我無法擺脫它

+0

你的意思是白色背景或白色邊框?背景對我來說是藍色的 – 2015-02-10 02:21:20

+0

當你打開下拉菜單時,它的背景是白色的,因此你看不到文字。我可以把它放在幾種顏色,但不透明 – NicolasZ 2015-02-10 02:22:59

+0

這不適用於iOS – ForceBru 2015-02-10 13:32:55

回答

1

如果設置了選擇元素的size物業(連同background: transparent),你會得到這樣的:

enter image description here

您可以添加事件偵聽器,以便size屬性更改只有當選擇框有重點。你必須要小心傳播的事件,你需要模糊上點擊選擇框,但不是重點:

var sel= document.querySelector('select'), 
    inSelect= false, 
    timer; 

sel.addEventListener('focus', function() { 
    this.size= this.options.length; 
    clearTimeout(timer); 
    timer= setTimeout(function() { 
    inSelect= true; 
    },500); 
}); 

sel.addEventListener('blur', function() { 
    clearTimeout(timer); 
    inSelect= false; 
    this.size= 1; 
}); 

sel.addEventListener('change', function() { 
    this.blur(); 
}); 

sel.addEventListener('click', function(event) { 
    if(inSelect) { 
    this.blur(); 
    } 
    else { 
    event.preventDefault(); 
    event.stopPropagation(); 
    return false; 
    } 
}); 

Working Fiddle

1

您可以僞造它非常接近通過background-color

select > option { 
    background-color: blue; 
} 

更新小提琴:http://jsfiddle.net/0s1moa4a/2/

如果您確實需要透明選項背景,請參閱this answer,這表明使用第三方控件作爲真正透明背景對於純CSS是不可能的。

+0

好吧,是的,但我實際上我需要它是透明的,因爲它具有線條漸變背後。讓我更新小提琴 – NicolasZ 2015-02-10 02:25:46

+0

Gotcha。更新我的答案 - 你應該看看自定義的下拉控件。這是不可能的純CSS。 – 2015-02-10 02:26:53

+0

好的,我想我自己的名單。乾杯內特! PS。我很困惑,我是否應該將您的答案標記爲已接受? – NicolasZ 2015-02-10 02:29:16

0

我沒有測試這一點,但大多數元素似乎去透明帶這種方法:

background-color:rgba(0,0,0,0);

其實,這是行不通的。看來只有不透明的背景可以在CSS中的選擇器選項下拉窗格上呈現。那太蹩腳了。

+0

在這種情況下,實際上不起作用。瀏覽器/操作系統在此元素上施加特定的樣式;我不知道爲什麼。 – 2015-02-10 02:41:42

+0

是的,我看着你的小提琴,它適用於選擇器本身,但不是下拉選項... – Frank 2015-02-10 02:48:25

+0

是的。這很奇怪,但顯然是CSS的限制。 – 2015-02-10 02:49:59