Висота поля вибору HTML (спадне меню)


86

Може хто - то підтвердити , що його НЕ можливо змінити висоту меню, що випадає, яке відображається при натисканні на поле вибору.

Атрибут розміру select робить його схожим на список, атрибут height у CSS теж не приносить багато користі.


Випадаюче меню є елементом керування на рівні програми, а не на рівні клієнта. (на жаль)
Діодей - Джеймс Макфарлейн

Відповіді:


91

Підтверджено.

Частина, яка випадає, встановлюється як:

  1. Висота, необхідна для показу всіх записів, або
  2. Висота, необхідна для відображення xзаписів (з смугами прокрутки, щоб побачити залишилися), де xє
    • 20 у Firefox та Chrome
    • 30 в IE 6, 7, 8
    • 16 для Opera 10
    • 14 для Opera 11
    • 22 для Safari 4
    • 18 для Safari 5
    • 11 у IE 5.0, 5.5
  3. Якщо в IE / Edge немає варіантів, дурно високий список із 11 пробілів.

Для (3) вище ви можете побачити результати у цьому JSFiddle


@scunliffe як встановити (1) в chrome

Якщо ви встановите size = "1" або нічого, оскільки це за замовчуванням, тоді ваш вибір буде випадаючим у порівнянні зі статичною вертикаллю у списку сторінок. Однак, як зазначалося, фактична висота випадаючого списку визначається браузером, і як розробники ми не контролюємо висоту списку.
scunliffe

4
@scunliffe Капелюх за підраховані рахунки :)
Шахіл М,

5

Я працював над випадаючим замінником плагіна jquery для боротьби з цією проблемою. Станом на цей пост, його майже не можна відрізнити від рідного випадаючого списку за зовнішнім виглядом та функціональністю .

ось демонстраційний файл (також посилання на завантаження): http://programmingdrunk.com/current-projects/dropdownReplacement/

ось сторінка проекту плагіна:

http://plugins.jquery.com/project/dropdownreplacement

(оновлення :) сторінка плагіна jquery більше не працює. Можливо, я не буду розміщувати свій плагін на їхньому новому сайті, коли вони почнуть працювати, тому сміливо використовуйте посилання programdrunk.com для демонстрації / завантаження


цікава ідея - мені, безумовно, подобається можливість "обробляти" підроблений список вибору (я знаходжу багато за замовчуванням з "рідної" теми ОС і, таким чином, виглядати "дивно"), і можливість контролювати вміст у списку, який мені здається зручним ( оскільки IE надає дуже мало варіантів стилів для додаткових елементів)
scunliffe

Останнє посилання з цієї відповіді мертве!
Стефан

Так, але демонстраційна сторінка є кращим ресурсом, ніж сайт плагінів. на ньому також є завантаження. погано оновити відповідь, дякую
mkoryak

Це виглядає приголомшливо: мені цікаво, чи встигнете ви протестувати це за допомогою пізнішої версії jquery. Дякую
Thang Pham

Я ні, але якщо ви це зробите, не соромтеся повідомляти про це :) - насправді я знаю, що це працює з 1.8.2
mkoryak

5

NO . Неможливо змінити висоту випадаючого списку, оскільки ця властивість залежить від браузера.

Однак якщо ви хочете цю функціональність, тоді є безліч варіантів. Ви можете використовувати bootstrap dropdown-menuі визначити його max-heightвластивість. Щось на зразок цього.

$('.dropdown-menu').on( 'click', 'a', function() {
    var text = $(this).html();
    var htmlText = text + ' <span class="caret"></span>';
    $(this).closest('.dropdown').find('.dropdown-toggle').html(htmlText);
});
.dropdown-menu {
    max-height: 146px;
    overflow: scroll;
    overflow-x: hidden;
    margin-top: 0px;
}

.caret {
	  float: right;
    margin-top: 5%;
}

#menu1 {
    width: 160px; 
    text-align: left;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
   
<div class="container" style="margin:10px">
  <div class="dropdown">
    <button class="btn btn-default dropdown-toggle" type="button" id="menu1" data-toggle="dropdown">Tutorials
    <span class="caret"></span></button>
    <ul class="dropdown-menu" role="menu" aria-labelledby="menu1">
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
    </ul>
  </div>
</div>


2

Насправді ти якось можеш! Не турбуйтеся з javascript ... Я просто затримався на тому ж, що стосується веб-сайту, який я роблю, і якщо ви збільшите атрибут 'font-size' у CSS для тегу, він автоматично збільшує і висоту. Дріб'язковий, але це щось, що мене дуже турбує, ха-ха


Що це означає ?
Анірудха Гупта,

1
Я вважаю, що метою було б показати більше варіантів у випадаючому вікні, а не просто зайняти більше місця, що і зробила б ця відповідь.
JReader

0

Це не ідеальне рішення, але воно начебто працює.

У тег вибору включіть такі атрибути, де 'n' - кількість рядків, що випадають, які будуть видимими.

<select size="1" position="absolute" onclick="size=(size!=1)?n:1;" ...>

З цим рішенням є три проблеми. 1) Швидко спалахують всі елементи, що відображаються під час першого клацання миші. 2) Позиція встановлена ​​як "абсолютна". 3) Навіть якщо елементів менше, ніж "n", випадаюче вікно все одно буде відповідати розміру "n" елементів.


Хороша спроба, але не везе, також спробував замінити її на onFocus.
Ісмаїл Ікбал

0

Відповідь Chi Row є хорошим варіантом вирішення проблеми, але я знайшов помилку та onclickаргументи. Натомість було б:

<select size="1" position="absolute" onclick="size=(size!=1)?1:n;" ...>

(І згадайте, що ви повинні замінити " n " на потрібну кількість рядків)


-2

Ви можете змінити висоту одного. Не використовувати height="500"(Тільки приклад номера). Використовуйте стиль. Ви можете використовувати <style>тег або просто використовувати це:

<!DOCTYPE html>
<html>
<body>
  <select id="option" style="height: 100px;">
    <option value="1">Option 1
    <option value="2">Option 2
  </select>
</body>
</html>

Я звертаю увагу на зміни:

  <select id="option" style="height: 100px;">

А ще краще ...

style="height: 100px;">

Ти бачиш це?

Будь ласка, проголосуйте, якщо це корисно!


Питання про стилістику висоти речі, яка відкривається при натисканні на <select>елемент, а не на сам елемент. Я поставив це питання більше 10 років тому, коли стиль цього віджету був практично неможливим. Я впевнений, що це вже не так.
мкоряк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.