Задать ширину раскрывающегося элемента в HTML выберите Параметры раскрывающегося списка
Я работаю над веб-сайтом, который автоматически заполняет поле выбора с помощью php-скрипта. Все это отлично работает, за исключением проблемы, что то, что я использую для заполнения текстового поля, имеет очень длинные заголовки (это статьи журнала и заголовки презентаций). Раскрывающийся список простирается до ширины самого длинного элемента, который простирается от края экрана, что делает полосу прокрутки недоступной. Я пробовал различные методы попытки вручную установить выпадающее окно с использованием CSS для определенной ширины, но до сих пор безрезультатно. Лучшее, что я сделал, чтобы установить поле выбора на определенную ширину, но само раскрывающееся меню намного шире.
любые советы по этому вопросу будут очень признательны.
EDIT:
оказывается, что следующая строка CSS работает во всех основных браузерах, кроме Google Chrome (в котором я тестировал страницу). Если известно решение для Chrome, было бы неплохо узнать об этом.
select, option { width: __; }
7 ответов
вы можете стилизовать (хотя и с некоторыми ограничениями) сами фактические элементы с помощью option
селектор:
select, option { width: __; }
таким образом, вы не только ограничиваете раскрывающийся список, но и все его элементы.
Я нахожу лучший способ обработки длинных раскрывающихся ящиков-поместить его в контейнер с фиксированной шириной div и использовать width:auto на теге select. Большинство браузеров будут содержать раскрывающийся список в div, но когда вы нажмете на него, он расширится, чтобы отобразить полное значение параметра. Он не работает с IE explorer, но есть исправление (например, всегда необходимо с IE). Ваш код будет выглядеть примерно так этот.
HTML-код
<div class="dropdown_container">
<select class="my_dropdown" id="my_dropdown">
<option value="1">LONG OPTION</option>
<option value="2">short</option>
</select>
</div>
в CSS
div.dropdown_container {
width:10px;
}
select.my_dropdown {
width:auto;
}
/*IE FIX */
select#my_dropdown {
width:100%;
}
select:focus#my_dropdown {
width:auto;
}
HTML:
<select class="shortenedSelect">
<option value="0" disabled>Please select an item</option>
<option value="1">Item text goes in here but it is way too long to fit inside a select option that has a fixed width adding more</option>
</select>
CSS:
.shortenedSelect {
max-width: 350px;
}
Javascript:
// Shorten select option text if it stretches beyond max-width of select element
$.each($('.shortenedSelect option'), function(key, optionElement) {
var curText = $(optionElement).text();
$(this).attr('title', curText);
// Tip: parseInt('350px', 10) removes the 'px' by forcing parseInt to use a base ten numbering system.
var lengthToShortenTo = Math.round(parseInt($(this).parent('select').css('max-width'), 10) / 7.3);
if (curText.length > lengthToShortenTo) {
$(this).text('... ' + curText.substring((curText.length - lengthToShortenTo), curText.length));
}
});
// Show full name in tooltip after choosing an option
$('.shortenedSelect').change(function() {
$(this).attr('title', ($(this).find('option:eq('+$(this).get(0).selectedIndex +')').attr('title')));
});
отлично работает. У меня была такая же проблема. Проверьте этот JSFiddle http://jsfiddle.net/jNWS6/426/
на стороне сервера:
- определите максимальную длину строки
- клип строка
- (необязательно) добавить горизонтальное многоточие
альтернативное решение: элемент select в вашем случае (только угадывание) является элементом управления формой с одним выбором, и вместо этого вы можете использовать группу переключателей. Эти вы могли бы затем стиль с лучшим контролем. Если у вас есть select[@multiple], вы можете сделать то же самое с группой вместо этого флажки, поскольку они могут рассматриваться как элемент управления с несколькими вариантами выбора.
u может просто использовать атрибут "ширина ""стиль", чтобы изменить длину раскрывающегося списка
<select class="my_dropdown" id="my_dropdown" style="width:APPROPRIATE WIDTH IN PIXLES">
<option value="1">LONG OPTION</option>
<option value="2">short</option>
</select>
например
style="width:200px"
Маленький И Лучший
var i = 0;
$("#container > option").each(function(){
if($(this).val().length > i) {
i = $(this).val().length;
console.log(i);
console.log($(this).val());
}
});