使用CSS自定义选择下拉列表

时间:2013-07-08 20:56:33

标签: javascript css

我必须以100px的尺寸显示<select>,但其中的<option>要长得多,我想显示整个内容,所以我用<select>包裹<div>并将大小设置为100px。我使用了背景图像作为下拉箭头。我的问题是,正如您在下面的链接中看到的那样,文本与图像重叠。如何使文字在图像上不重叠?

我不想使用任何插件。

http://jsfiddle.net/JavaKB/hf5CV/8/

3 个答案:

答案 0 :(得分:1)

为您的选择输入提供width: 100px

.styled-select select {
    width: 100px;
    -webkit-appearance: none;
    background: transparent;
}

答案 1 :(得分:1)

而不是将背景图像应用于div,您可以使用:after伪元素,将背景图像应用于该元素,并将其放置在选择的顶部。

它看起来像这样:

.styled-select {
    width: 100px;
    padding: 2px;
    overflow: hidden;
    position: relative;
}
.styled-select:after {
    content: '';
     background: url("http://i.stack.imgur.com/DNROu.jpg") no-repeat right;
    width: 20px;
    height: 18px;
    display: block;
    position: absolute;
    top: 0;
    right: 0;
    pointer-events: none;
}

请注意,我添加了pointer-events: none;以确保点击箭头图片时点击仍会触发选择。它可能不完全兼容浏览器,您可能需要对此进行一些研究......

我更新了你的小提琴:http://jsfiddle.net/hf5CV/24/

答案 2 :(得分:0)