HTML 为select自定义出现滚动条的条数

       在一个网站开发的项目中,提供选项功能的select标签是必不可少的,但我们经常会遇到选项(option)太多以至于其呈现效果不那么友好。于是我们就想到了滚动条,但是怎么样才能自定义条数,当超过条数时出现滚动条这样的效果呢?

       网上的答案我不是太看得懂。

我相信也有很多人看不懂,或者说不太有效。那么接下来我说说自己的实现方法。


        首先,实现这个效果很重要的就是option标签的size属性,它可以定义展示出来的条数:

http://www.w3school.com.cn/tags/att_select_size.asp   这是w3c网站上的定义

        当时当我们按照它的方法,只在select标签里加上“size=‘5’”这样的属性时,我们会发现它确实出现了一次只显示5行并且有了滚动条的样式,但当你点击其中一个option时却不会再收回去了,而且当页面刷新出来以后它一直展开着。

       这就很尴尬了,我们要的效果应该是当点击select时出现只显示5行的列表并且有多于5条时会出现滚动条,而不是一个一直展开着显示5行并有滚动条但是不会再收起来的下拉列表。

       所以大家就要关注重点了,size属性只能时select显示5行并且一直显示。那我们就可以使用JS的removeAttribute和setAttribute两个方法来实现当点击select时才添加size属性,在选中了一个option时再删除size属性,这样就可以实现我们要的效果了。

以下是JS版本,将代码复制到.html文件就可以预览效果:

<span style="font-size:14px;"><!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
<select id="select" οnfοcus="selectFocus()">
	<option οnclick="selectClick()">1</option>
	<option οnclick="selectClick()">2</option>
	<option οnclick="selectClick()">3</option>
	<option οnclick="selectClick()">4</option>
	<option οnclick="selectClick()">5</option>
	<option οnclick="selectClick()">1</option>
	<option οnclick="selectClick()">2</option>
	<option οnclick="selectClick()">3</option>
	<option οnclick="selectClick()">4</option>
	<option οnclick="selectClick()">5</option>
</select>

<script type="text/javascript">
	function selectFocus(){
		document.getElementById("select").setAttribute("size","5");
	}
	function selectClick(){
		document.getElementById("select").removeAttribute("size");
		document.getElementById("select").blur();
		this.setAttribute("selected","");
	}
</script>
</body>
</html></span>

大家应该注意到每个option都添加了onclick方法,这是为了在点击option时能够知道点击了哪一个,不过看起来很累赘的样子。如果想要改善这个方式的话可以用jQuery的选择器。


jQuery版本:

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<script src="./jquery-3.1.0.js"></script>
</head>
<body>
<select id="select">
	<option>1</option>
	<option>2</option>
	<option>3</option>
	<option>4</option>
	<option>5</option>
	<option>1</option>
	<option>2</option>
	<option>3</option>
	<option>4</option>
	<option>5</option>
</select>

<script type="text/javascript">
	window.onload = function(){
		$("option").click(function(){
			$("#select").removeAttr("size");
			$("#select").blur();
			this.attr("selected","");
		});

		$("#select").focus(function(){
			$("#select").attr("size","5");
		})
	}
</script>
</body>
</html>


如果你有更简单的办法,可以在评论直接告诉我或者将相关博文的地址发给我


  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值