使用长选择内容进行自定义选择

时间:2016-09-06 08:39:47

标签: html css

您好我的自定义选择布局有点问题。我创建了一个自定义选择,适用于所有浏览器,甚至是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;
&#13;
&#13;

布局问题

如果您选择&#34; Volkswagon Polo&#34;选项,你看到文字在黑色箭头后面。哪个看起来不太好看。我尝试了几个选项,但我无法管理它使它看起来不错。我尝试使用text-overflow选项,但没有成功。有没有人知道一个不通过箭头图标显示文本的好方法,而不改变选择的宽度?

3 个答案:

答案 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%;修复:

&#13;
&#13;
.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;
&#13;
&#13;

<强> JSFiddle

通过浮动.select-style并移除宽度,您可以自动调整其内容。

答案 2 :(得分:0)

如果您不想更改宽度,可以使用

SRV*C:\SymCache*http://msdl.microsoft.com/download/symbols

这将删除下拉箭头