select箭头样式更改

我试图用我自己的照片replaceselect的箭头。 我包括在相同的大小的divselect,我把select的背景设置为透明,我在背景作为背景在div的右上angular包括一个图片(与箭头大小相同)。

它只适用于Chrome。

在这里输入图像描述

我怎样才能让它在Firefox和IE9中,我得到这个工作:

在这里输入图像描述

.styled-select { width: 100px; height: 17px; overflow: hidden; overflow: -moz-hidden-unscrollable; background: url(images/downarrow_blue.png) no-repeat right white; border: 2px double red; display: inline-block; position: relative; } .styled-select select { background: transparent; -webkit-appearance: none; width: 100px; font-size: 11px; border: 0; height: 17px; position: absolute; left: 0; top: 0; } body { background-color: #333333; color: #FFFFFF; } .block label { color: white; } 
 <HTML> <HEAD> </HEAD> <BODY> <p/> <form action="/prepareUpdateCategoryList.do?forwardto=search"> <fieldset class="block" id="searchBlock"> <p> <label style="width:80px">Class</label> <div class="styled-select"> <select property="voucherCategoryClass"> <option value="0">Select </option> <option value="7382">steam </option> </select> </div> </p> </fieldset> </form> </BODY> </HTML> 

你有没有尝试过这样的事情:

 .styled-select select { appearance:none; -moz-appearance:none; /* Firefox */ -webkit-appearance:none; /* Safari and Chrome */ } 

没有testing,但应该工作。

编辑 :它看起来像Firefox仍然不支持这个function( 阅读更多在这里 )

我在这里find了一个解决方法,看看这个post的jsfiddle

这是一个优雅的修复,使用跨度来显示值。

布局是这样的:

 <div class="selectDiv"> <span class="selectDefault"></span> <select name="txtCountry" class="selectBox"> <option class="defualt-text">-- Select Country --</option> <option value="1">Abkhazia</option> <option value="2">Afghanistan</option> </select> </div> 

的jsfiddle

只使用一个class级:

 select { width: 268px; padding: 5px; font-size: 16px; line-height: 1; border: 0; border-radius: 5px; height: 34px; background: url(data/icons/cc_mono_icon_set/blacks/16x16/br_down.png) no-repeat right #ddd; -webkit-appearance: none; background-position-x: 244px; } 

http://jsfiddle.net/qhCsJ/4120/

我已经设置了一个类似于Julio的答案的自定义箭头的select ,但它没有设置宽度,并使用svg作为背景图像。 (material-ui图标中的arrow_drop_down

 select { -webkit-appearance: none; -moz-appearance: none; background: transparent; background-image: url("data:image/svg+xml;utf8,<svg fill='black' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>"); background-repeat: no-repeat; background-position-x: 100%; background-position-y: 5px; border: 1px solid #dfdfdf; border-radius: 2px; margin-right: 2rem; padding: 1rem; padding-right: 2rem; } 

在这里输入图像描述

如果你需要它也在IE中工作更新svg箭头到base64,并添加以下内容:

 select::-ms-expand { display: none; } background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSdibGFjaycgaGVpZ2h0PScyNCcgdmlld0JveD0nMCAwIDI0IDI0JyB3aWR0aD0nMjQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PHBhdGggZD0nTTcgMTBsNSA1IDUtNXonLz48cGF0aCBkPSdNMCAwaDI0djI0SDB6JyBmaWxsPSdub25lJy8+PC9zdmc+); 

检查这一个这很简单:

  • -prefix-appearance设置为none以删除样式
  • 使用text-indent将内容“推”到右侧
  • 最后,将text-overflow设置为空string。 一切超出它的宽度将成为……没有什么! 那包括箭头。

现在你可以自由的风格任何你想要的方式:)

这是我的jsfiddle例子: http : //jsfiddle.net/AEt5k/1/

用CSSdevise标签并使用指针事件:

 <label> <select> <option value="0">Zero</option> <option value="1">One</option> </select> </label> 

和相关的CSS是

 label:after { content:'\25BC'; display:inline-block; color:#000; background-color:#fff; margin-left:-17px; /* remove the damn :after space */ pointer-events:none; /* let the click pass trough */ } 

我只是在这里使用了一个向下的箭头,但是你可以用一个背景图像来设置一个块。 这是一个丑恶的小提琴示例: https : //jsfiddle.net/1rofzz89/

对于那些使用Bootstrap的人来说,这样做会很好,在最新的浏览器版本中testing过:

 select { -webkit-appearance: none; -moz-appearance: none; appearance: none; /* Some browsers will not display the caret when using calc, so we put the fallback first */ background: url("data/icons/cc_mono_icon_set/blacks/16x16/br_down.png") white no-repeat 98.5% !important; /* !important used for overriding all other customisations */ background: url("data/icons/cc_mono_icon_set/blacks/16x16/br_down.png") white no-repeat calc(100% - 10px) !important; /* Better placement regardless of input width */ } 
 <link href="bootstrap@3.3.7/dist/css/bootstrap.css" rel="stylesheet"/> <div class="container"> <div class="row"> <div class="col-xs-6"> <select class="form-control"> <option>Option 1</option> <option>Option 2</option> <option>Option 3</option> </select> </div> </div> </div> 

它在所有的浏览器中工作:

 select { width: 268px; padding: 5px; font-size: 16px; line-height: 1; border: 0; border-radius: 5px; height: 34px; background: url(data/icons/cc_mono_icon_set/blacks/16x16/br_down.png) no-repeat right #ddd; appearance:none; -moz-appearance:none; /* Firefox */ -webkit-appearance:none; /* Safari and Chrome */ background-position-x: 244px; }