【发布时间】:2009-02-20 18:02:12
【问题描述】:
有人可以确认它不可能更改单击选择框时显示的下拉列表的高度。
select 的 size 属性使它看起来像一个列表,CSS 中的 height 属性也没有多大作用。
【问题讨论】:
-
下拉菜单是应用级控件,不是客户端级控件。 (可悲)
标签: html html-select
有人可以确认它不可能更改单击选择框时显示的下拉列表的高度。
select 的 size 属性使它看起来像一个列表,CSS 中的 height 属性也没有多大作用。
【问题讨论】:
标签: html html-select
已确认。
下拉的部分设置为:
x 条目所需的高度(带有滚动条可查看剩余部分),其中x 是
对于上面的(3),你可以在这个JSFiddle看到结果
【讨论】:
否。无法更改选择下拉菜单的高度,因为该属性是特定于浏览器的。
但是,如果您想要该功能,那么有很多选择。您可以使用引导程序 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>
【讨论】:
我一直在研究一个下拉替换 jquery 插件来解决这个问题。在这篇文章中,它在外观和功能方面与原生下拉菜单几乎没有区别。
这是一个演示(也是下载链接): http://programmingdrunk.com/current-projects/dropdownReplacement/
这是插件的项目页面:
http://plugins.jquery.com/project/dropdownreplacement
(更新:) jquery 插件页面似乎不再起作用。当他们开始工作时,我可能不会将我的插件放在他们的新网站上,所以请随意使用programmingdrunk.com 链接进行演示/下载
【讨论】:
其实你可以!不要为 javascript 烦恼...我只是在我正在制作的网站上停留在同一件事上,如果您在 CSS 中为标签增加“font-size”属性,那么它也会自动增加高度。小事,但这是一件让我很困扰的事情哈哈
【讨论】:
我知道这不是更改select 高度的最佳做法,但有一个代码可能会帮助您更改高度。
使用select标签的size属性:
<select onfocus='this.size=6;' onblur='this.size=6;' onfocusout='this.size=null;' onchange='this.size=6; this.blur();'>
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
<option>Option 4</option>
<option>Option 5</option>
<option>Option 6</option>
<option>Option 7</option>
<option>Option 8</option>
<option>Option 9</option>
<option>Option 10</option>
<option>Option 11</option>
<option>Option 12</option>
<option>Option 13</option>
<option>Option 14</option>
<option>Option 15</option>
</select>
【讨论】:
这不是一个完美的解决方案,但它确实有效。
在选择标签中,包含以下属性,其中“n”是可见的下拉行数。
<select size="1" position="absolute" onclick="size=(size!=1)?n:1;" ...>
这个解决方案存在三个问题。 1) 在第一次鼠标单击期间显示的所有元素都会快速闪烁。 2) 位置设置为“绝对” 3) 即使少于“n”个项目,下拉框仍然是“n”个项目的大小。
【讨论】:
Chi Row 答案是解决问题的一个不错的选择,但我在 onclick 参数中发现了一个错误。相反,应该是:
<select size="1" position="absolute" onclick="size=(size!=1)?1:n;" ...>
(并提到您必须将“n”替换为您需要的行数)
【讨论】:
你可以改变一个的高度。
不要使用height="500"(只是一个示例编号)。使用风格。
你可以使用<style>tag 或者直接使用这个:
<!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 多年前问过这个问题,当时我几乎不可能设计这个小部件。我相信这不再是这种情况了。