您好我的自定义选择布局有点问题。我创建了一个自定义选择,适用于所有浏览器,甚至是IE。但我的自定义选择有问题。首先看看我的HTML代码:
.select-style {
padding: 0;
margin: 0;
border: 1px solid #ccc;
width: 120px;
border-radius: 3px;
overflow: hidden;
background-color: #fff;
background: #fff;
position: relative;
}
.select-style:after {
top: 50%;
left: 85%;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
border-color: rgba(0, 0, 0, 0);
border-top-color: #000000;
border-width: 5px;
margin-top: -2px;
z-index: 100;
}
.select-style select {
padding: 5px 8px;
width: 130%;
border: none;
box-shadow: none;
background-color: transparent;
background-image: none;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.select-style select:focus {
outline: none;
}

<div class="select-style">
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
<option value="Volkswagon Polo">Volkswagon Polo</option>
</select>
</div>
&#13;
布局问题
如果您选择&#34; Volkswagon Polo&#34;选项,你看到文字在黑色箭头后面。哪个看起来不太好看。我尝试了几个选项,但我无法管理它使它看起来不错。我尝试使用text-overflow
选项,但没有成功。有没有人知道一个不通过箭头图标显示文本的好方法,而不改变选择的宽度?
答案 0 :(得分:1)
试试这个:
.select-style {
padding: 0 20px 0 0;
margin: 0;
border: 1px solid #ccc;
width: auto;
border-radius: 3px;
overflow: hidden;
background-color: #fff;
background: #fff;
position: relative;
display: inline-block;}
这是因为你将.select-style width设置为固定值。 display:inline-block;防止元素扩展到全宽,填充在箭头附近设置一些空间。现在看起来很不错:)。
我也注意到,当我从.select-style中删除宽度时选择并添加text-align:center它看起来甚至更好:)。
答案 1 :(得分:1)
我做了一些改进。您的箭头希望被填充所尊重,并且选择能够比包装更大,并使用overflow: hidden; width: 100%;
修复:
.select-style {
padding: 0;
margin: 0;
border: 1px solid #ccc;
width: 130px;
border-radius: 3px;
overflow: hidden;
background-color: #fff;
background: #fff;
position: relative;
}
.select-style:after {
top: 50%;
right: 10px;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
border-color: rgba(0, 0, 0, 0);
border-top-color: #000000;
border-width: 5px;
margin-top: -2px;
z-index: 100;
}
.select-style select {
padding: 5px 28px 5px 8px;
border: none;
box-shadow: none;
background-color: transparent;
background-image: none;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
overflow: hidden;
width: 100%;
}
.select-style select:focus {
outline: none;
}
* {
box-sizing: border-box;
}
&#13;
<div class="select-style">
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
<option value="Volkswagon Polo">Volkswagon Polo</option>
</select>
</div>
&#13;
<强> JSFiddle 强>
通过浮动.select-style
并移除宽度,您可以自动调整其内容。
答案 2 :(得分:0)
如果您不想更改宽度,可以使用
SRV*C:\SymCache*http://msdl.microsoft.com/download/symbols
这将删除下拉箭头