Раскрывающийся список HTML (select) с переносом текста и границей после каждого значения (опция)
Я пытаюсь достичь двух вещей с выпадающим списком.
- сначала я хочу обернуть текст в списке опций в раскрывающемся списке.
- во-вторых, я хочу поставить границу после каждого варианта
и я хочу поддерживать IE (и другие браузеры тоже).
это потому, что у меня был бы длинный текст в раскрывающемся списке, и я не хочу их вырезать. По этой причине я хочу сделать вышеупомянутые вещи.
что-то вроде это:-
http://jsfiddle.net/fnagel/GXtpC/embedded/result/
выберите один с " То же самое с форматированием текста опции, выберите Адрес." Обратите внимание, как параметры форматирования и границы-дно с каждым из них.
вот что я пробовал (текст):-
<select name="d" class="myselect">
<option value="sdf" class="test1"> line text How to wrap the big line text </option>
<option value="sdf2" class="test1"> line text How to wrap the big line text </option>
<option value="sdf3" class="test1"> line text How to wrap the big line text </option>
<option value="sdf4" class="test1"> line text How to wrap the big line text </option>
</select>
в CSS
.myselect {
width: 150px;
overflow: hidden;
text-overflow: ellipsis;
}
.myselect option {
white-space: nowrap;
width: 100%
border-bottom: 1px #ccc solid; /* This doesn't work. */
}
2 ответов
select {
width:100px;
overflow:hidden;
white-space:pre;
text-overflow:ellipsis;
-webkit-appearance: none;
}
option {
border: solid 1px #DDDDDD;
}
принятый в настоящее время ответ только усекает текст с многоточием и добавляет границу, которая не полностью решает проблему.
Я чувствую, что это более полный, более кросс-браузер совместимый ответ:сделать текст в select element wrap, когда слишком долго?
в двух словах, вы можете сделать это правильно, используя javascript, или сделать это легко... не очень совместимый способ с помощью свойства css white-space: pre-wrap
на ваш выбор элементы.
Примечание: Если вы идете с помощью white-space: pre-wrap
, обязательно добавьте -moz-
и -o-
браузерные префиксы.
вот что я придумал как быстрое, простое решение CSS (хотя jQuery, о котором я упомянул, более надежный и лучший):
select {
width: 200px;
max-width: 100%; /* So it doesn't overflow from it's parent */
}
option {
/* wrap text in compatible browsers */
-moz-white-space:pre-wrap;
-o-white-space:pre-wrap;
white-space:pre-wrap;
/* hide text that can't wrap with an ellipsis */
overflow: hidden;
text-overflow:ellipsis;
/* add border after every option */
border-bottom: 1px solid #DDD;
}