HTML 下拉菜单在图像下显示选定的文本

标签 html css

如果我选择的文本对于我为下拉菜单设置的宽度来说太长,我需要选择的文本不显示在下拉图像区域中。我认为 text-overflow: clip;overflow: hiddenspan.selectInner 中会起作用,但它不起作用。

enter image description here

span.selectInner 添加了数据。下面是添加该类的代码片段:

JS

$('.filterSelectWrap').append('<span class="selectInner">' + filter + '</span>');

HTML

<div class="selectWrapper">
    <label class="selectLabel">Filter:</label>
    <div class="innerSelectWrapper">
        <div class="filterSelectWrap">
            <select id="filterComboBox"></select>
        </div>
    </div>
</div>

CSS

.selectWrapper {
    float: left; 
    margin: 0; 
    padding: 5px;
}

.innerSelectWrapper {
    float: left; 
    width: 150px; 
    margin-left: 5px;
}

span.selectInner {
    position: absolute;
    display: block;
    margin: 0;
    padding: 0 0 0 5px;
    width: 100%;
    height: 22px; /* set same height */
    line-height: 22px; /* set same height */
    color: #333;
    white-space: nowrap;
    overflow: hidden;
    text-align: left;
    text-overflow: clip;
    font-weight: normal;
    font-size: 1em;
    z-index: 901;
    background: url('../images/arrow.png') no-repeat 100% -5px #fff; /* fallback bg image*/
    background: url('../images/arrow.png') no-repeat 100% -5px, -webkit-linear-gradient(top, #fff, #9c9c9c);
    background: url('../images/arrow.png') no-repeat 100% -5px, -moz-linear-gradient(top, #fff, #9c9c9c);
    background: url('../images/arrow.png') no-repeat 100% -5px, -ms-linear-gradient(top, #fff, #9c9c9c);
    background: url('../images/arrow.png') no-repeat 100% -5px, -o-linear-gradient(top, #fff, #9c9c9c);
    background: url('../images/arrow.png') no-repeat 100% -5px, linear-gradient(top, #fff, #9c9c9c);
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    -ms-border-radius: 4px;
    -o-border-radius: 4px;
    border-radius: 4px;
    -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.3);
    -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.3);
    -ms-box-shadow: 0 1px 3px rgba(0,0,0,0.3);
    -o-box-shadow: 0 1px 3px rgba(0,0,0,0.3);
    box-shadow: 0 1px 3px rgba(0,0,0,0.3);
}

select {
    width: 100%;
    height: 22px; /* set same height */
    position: absolute;
    left: 0;
    z-index: 902;
    padding: 0;
    margin: 0;
    border: 0 none;
    float: none;
    opacity: 0;
    cursor: pointer;
    -webkit-appearance: menulist-button;
}

最佳答案

您应该将内部文本 filter 附加到另一个子 div 中(在我的例子中命名为 .inner-text),例如:

$('.filterSelectWrap').append('<span class="selectInner"><span class="inner-text">' + filter + '</span></span>');

并将这些 CSS 规则提供给 .inner-text:

.inner-text {
  display: block;
  padding-right: 20px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

看看下面的工作片段:

var filter = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptates quaerat dolore iusto ducimus adipisci natus dicta, veritatis pariatur magni quos error explicabo provident iure velit dolorem odio! Sed, ratione sit.';

$('.filterSelectWrap').append('<span class="selectInner"><span class="inner-text">' + filter + '</span></span>');
.selectWrapper {
    display: flex;
    margin: 0; 
    padding: 5px;
}

.innerSelectWrapper {
    display: inline-block;
    width: 150px;
    margin-left: 5px;
    position: relative;
}

span.selectInner {
    position: absolute;
    display: block;
    margin: 0;
    padding: 0 0 0 5px;
    width: 100%;
    height: 22px; /* set same height */
    line-height: 22px; /* set same height */
    color: #333;
    font-size: 1em;
    z-index: 901;
    background: url('https://cdn4.iconfinder.com/data/icons/ionicons/512/icon-arrow-down-b-128.png') no-repeat 100%, -webkit-linear-gradient(top, #fff, #9c9c9c);
    background: url('https://cdn4.iconfinder.com/data/icons/ionicons/512/icon-arrow-down-b-128.png') no-repeat 100%, -moz-linear-gradient(top, #fff, #9c9c9c);
    background: url('https://cdn4.iconfinder.com/data/icons/ionicons/512/icon-arrow-down-b-128.png') no-repeat 100%, -ms-linear-gradient(top, #fff, #9c9c9c);
    background: url('https://cdn4.iconfinder.com/data/icons/ionicons/512/icon-arrow-down-b-128.png') no-repeat 100%, -o-linear-gradient(top, #fff, #9c9c9c);
    background: url('https://cdn4.iconfinder.com/data/icons/ionicons/512/icon-arrow-down-b-128.png') no-repeat 100%, linear-gradient(top, #fff, #9c9c9c);
    background-size: contain;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    -ms-border-radius: 4px;
    -o-border-radius: 4px;
    border-radius: 4px;
    -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.3);
    -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.3);
    -ms-box-shadow: 0 1px 3px rgba(0,0,0,0.3);
    -o-box-shadow: 0 1px 3px rgba(0,0,0,0.3);
    box-shadow: 0 1px 3px rgba(0,0,0,0.3);
}

select {
    width: 100%;
    height: 22px; /* set same height */
    position: absolute;
    left: 0;
    z-index: 902;
    padding: 0;
    margin: 0;
    border: 0 none;
    float: none;
    opacity: 0;
    cursor: pointer;
    -webkit-appearance: menulist-button;
}

.inner-text {
  display: block;
  padding-right: 20px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="selectWrapper">
    <label class="selectLabel">Filter:</label>
    <div class="innerSelectWrapper">
        <div class="filterSelectWrap">
            <select id="filterComboBox"></select>
        </div>
    </div>
</div>

希望这就是您要实现的目标并且对您有所帮助!

关于HTML 下拉菜单在图像下显示选定的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41088135/

相关文章:

javascript - HTML5 Canvas - 逐渐停止

HTML & CSS : My image is not appearing?

html - 将 div 拆分为 2 列

html - 有些按钮有 :focus style applied on click

javascript - 在列表中前后循环

javascript - 使用 css 和 javascript(不是 jQuery)在按钮标题上滑动文本,例如选框

javascript - 复选框未检查到正确的值

javascript - 打印我的 JS 函数的结果

javascript - getAttribute() 不适用于类名?

jquery 代码没有运行