Выпадающий список HTML select уходит с экрана
Учитывая следующий код:
<div style="float: left;">
<select style="width: 160px;">
<option>asd flkjh asdfkljha sdlkfjhasldjkfh aslkjdfh asjdhf alksjdhl k</option>
<option>1</option>
<option>2</option>
</select>
</div>
<div style="float: right;">
<select style="width: 160px;">
<option>asd flkjh asdfkljha sdlkfjhasldjkfh aslkjdfh asjdhf alksjdhl k</option>
<option>1</option>
<option>2</option>
</select>
</div>При открытии правого окна выбора содержимое выпадающего списка исчезает с экрана. Кроме того, когда список будет длиннее, вы не сможете прокручивать список (только с помощью колесика мыши и клавиатуры, но полоса прокрутки невидима)
Есть ли исправление для этого? Конечно, вы можете установить ширину / max-width для опций, но это будет отрезать содержимое элемента option. Есть предложения?
3 ответов:
Я думаю, вы имеете в виду, что правая сторона окна выбора не видна, поэтому пользователь не может использовать полосу прокрутки.
У вас есть 2 потенциальных варианта, которые я вижу за пределами перехода на решение JavaScript, первый-это репостирование элементов, чтобы обеспечить более длительный контент.
Во-вторых, необходимо указать ширину элемента в процентах, как показано ниже, недостатком является то, что ширина выбранного элемента будет динамически изменяться, и вы потеряете некоторый контроль над дизайном.
<div style="float: right;"> <select style="width:100%"> <option width="">asd flkjh asdfkljha sdlkfjhasldjkfh aslkjdfh asjdhf alksjdhl k</option> <option>1</option> <option>2</option> </select> </div>Я сделал быстрый тест в Chrome и Firefox, вы можете использовать любое процентное значение, которое вы хотите, я протестировал на 100% и 50%, на 50% - в зависимости от характера контента или любых значений держателя места, таких как "--SELECT--", элемент будет показывать только половину длины самого длинного элемента.
Я бы посмотрел, скорее всего, заглянул в плагины jQuery или другие JavaScripts для лучшего решения в зависимости от моих потребностей в то время.
Я столкнулся с этой проблемой недавно (с Firefox) - меню open select будет выходить за пределы экрана рабочего стола.
Моим решением было скопировать содержимое опции в атрибут title. А также обновить заголовок select при изменении, так что при наведении курсора мыши на опцию или select появится всплывающая подсказка в окне браузера - demo .
var $select = $('select'); $select .on('change', function () { var $this = $(this), // use replace to remove extra white (if desired) txt = $this.find('option:selected').text().replace(/\s+/g, ' '); // add title to select $this.attr('title', txt); }) .change() .find('option').each(function () { var $this = $(this); // add title to each option, so it works on hover $this.attr('title', $this.text()); });
Проверьте этот ответ
Возможны ли многострочные опции в тегах HTML Select?
С помощью чистого HTML и select невозможно автоматически обернуть содержимое опции в несколько строк (чтобы она не исчезла с экрана)
Comments