设置下拉款的宽度

概述: 在实际应用中,很多时候都会用到select,但是由于下拉框的内容宽度不可控,就导致select宽度往往不是我们想要的。

需求

             1、给select设置最小值,在内容小于最小值时,要控制select的宽度是最小值,而不能让它太短,影响美观程度。

             2、对应的也需要设置最大值。

             3、当内容过长时,给出提示。

实现:

1、CSS:自适应宽度在[100,200]之间

       注意:这里使用的expression(),只有IE支持,如果不需要考虑浏览器兼容性,可以使用。

  <select id="s" style="width:expression((this.offsetWidth < 100) ? '100' : ((this.offsetWidth > 200)? '200' : this.offsetWidth))">   
   <option value="1" title="1">1</option>  
   <option value="2" title="2">2</option>  
   <option value="3" title="3">3</option>  
   <option value="4" title="4">4</option>  
   <option value="5" title="5">5</option>  
   <option value="6">6</option>  
   <option value="7">7</option>  
   <option value="8">8</option>  
   <option value="9" title="--9999999999999999999999999999999999--">--9999999999999999999999999999999999--</option>  
  </select>  

 2、javascript:这就不存在浏览器的问题了,只要浏览器没有禁用javascript的话,自适应宽度在[100,200]之间

   <select id="s">   
   <option value="1" title="1">1</option>  
   <option value="2" title="2">2</option>  
   <option value="3" title="3">3</option>  
   <option value="4" title="4">4</option>  
   <option value="5" title="5">5</option>  
   <option value="6">6</option>  
   <option value="7">7</option>  
   <option value="8">8</option>  
   <option value="9" title="--9999999999999999999999999999999999--">--9999999999999999999999999999999999--</option>  
  </select>  
  <script type="text/javascript">
   var sel =  document.getElementById("s");
   sel.style.width = ((sel.offsetWidth < 100) ? '100' : ((sel.offsetWidth > 200)? '200' : sel.offsetWidth));
  </script>

注意:如果使用javascript设置select宽度的话,那就必须保证select已经加载完毕了,最起码是宽度最大的option已经加载了。

3、水平滚动条:

   前面的select在内容超长时,都是通过title属性,在鼠标悬浮时,给出提示的,效果如图:

但是有的时候,我们需要对全部内容进行查看,也就是需要添加一个水平的滚动条,效果如下图:

 

代码:

<div id="test" style="height:200px;width:200px;overflow:auto;border:1 solid black;"> 
  <select id="s">  
   <option value="1" title="1">1</option>  
   <option value="2" title="2">2</option>  
   <option value="3" title="3">3</option>  
   <option value="4" title="4">4</option>  
   <option value="5" title="5">5</option>  
   <option value="6">6</option>  
   <option value="7">7</option>  
   <option value="8">8</option>  
   <option value="9">9</option>  
   <option value="10">10</option>  
   <option value="11">11</option>
   <option value="12">12</option>  
   <option value="13">13</option>  
   <option value="14">14</option>  
   <option value="15">15</option>  
   <option value="16">16</option>  
   <option value="17">17</option>
   <option value="18">18</option>  
   <option value="19">19</option>  
   <option value="20">20</option>  
   <option value="21">21</option>  
   <option value="22">22</option>  
   <option value="23">23</option>
   <option value="24">24</option>  
   <option value="25" title="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</option>  
  </select>  
  <script type="text/javascript">
   var sel = document.getElementById("s");
   sel.size = sel.options.length;
  </script>
 </div> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值