[英]IE11 not applying CSS class to first Option element of Select dropdown
某個.aspx頁呈現具有各種OPTIONs
的簡單SELECT
列表。 這些OPTION
元素中的某些(但不是全部)將具有一個特殊的樣式類,該類將應用為以不同的顏色呈現它們以反映特定的不同狀態。
最終,只有一個令人沮喪的例外,它才能起作用。 如果SELECT
的第一個 OPTION
被指定為CLASS,則IE11將不會使用相應CSS規則中指定的顏色來呈現該選項。 當IE11開發工具中查看的頁面, 似乎該規則被應用,但是,在視覺上,它不是。 如果特定的OPTION
與SELECT
中的任何其他項目一樣出現,則該規則有效。
下面提供了一個摘要,此解決方案是根據此處顯示的一個看似非常相似的情況建模的: 如何更改首選選項的文本顏色
<style>
select {color: black;}
select option {color: black;}
select option.specialStatus{
color: red;
}
select option.specialStatus:first-child{
color: red;
}
</style>
..
<select>
<option class='specialStatus' value=1>Hi</option>
<option value=2>Bye</option>
</select>
實際上,其意圖是說“除非給它們賦予'specialStatus'類,否則通常以黑色將帶有OPTIONs的SELECT呈現。當存在'specialStatus'時,將OPTION呈現為紅色。'first-child'規則是努力克服可能存在的任何默認樣式。
奇怪的是,這種樣式在舊的,討厭的IE8中有100%的時間有效-只有在IE11中才能看到第一個OPTION
未被兌現的行為。 這就是上面鏈接的主題解決方案似乎是顯而易見的選擇的原因-它可以工作,但顯然與類名結合使用會引起問題。 在准確診斷出問題時將非常感謝您的幫助。
添加到我的評論中,問題是select
顏色使Hi
值在選擇時變成黑色。 要使其正常工作,您將需要JavaScript。 我更新了@YuriyGalanter的小提琴,以包含必要的JavaScript:
function changeSelectClass(e) {
this.classList.remove('specialStatus');
if (this.options[this.selectedIndex].className.indexOf('specialStatus') !== -1) {
this.classList.add('specialStatus');
}
}
document.getElementsByTagName('select')[0].onchange = changeSelectClass;
changeSelectClass.call(document.getElementsByTagName('select')[0]);
和CSS:
select { color: black; }
option { color: black; }
select.specialStatus, option.specialStatus { color: red; }
您可以通過對select
應用與對option
相同的類來使其更通用,但這可以回答所提出的特定問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.