之前一直用windows做开发,最近换了个mac,在几经折腾之下,安装完了各种开发工具,IDE等,然后欣然打开自己正在开发的网站。突然发现mac上所有的下拉框都变了,都是默认样式,无论padding,height都不起作用了,

然后就去搜博客呀,果然,网上好多朋友都在说这个问题,苹果也是让人恼火。

附上一个连接

http://blog.csdn.net/liushuwei0224/article/details/8554995

后来经过搜集资料,修改,调试在测试,依然无果,macos上的select怎么都不能修改高度,

然后最后我要告诉大家的是,给select添加默认样式: border-radius: 0; select瞬间变高变漂亮了

虽然不知道原因,但是希望可以让大家知道这一小小的修改,能解决这一小问题,然后将就着用也挺好看的。

其实中途以为无解的时候,还写了个自定义下拉框样式,还是给大家分享一下吧

less 代码

  1. .custom-select {
  2. @lineHeight: 36px;
  3. @border: #119ae8;
  4. display: inline-block;
  5. *display: inline;
  6. *zoom:;
  7. height: @lineHeight;
  8. width: 100px;
  9. border: 1px solid #d2d2d2;
  10. position: relative;
  11. line-height: @lineHeight;
  12. text-align: center;
  13. vertical-align: bottom;
  14. margin-right: -4px;
  15. background: white;
  16. &.show {
  17. border: 1px solid @border;
  18. }
  19. .select-text {
  20. display: inline-block;
  21. *display: inline;
  22. *zoom:;
  23. position: absolute;
  24. top:;
  25. left:;
  26. width: 100%;
  27. height: @lineHeight;
  28. cursor: pointer;
  29. cursor: pointer;
  30. .text {
  31. display: inline-block;
  32. height: @lineHeight;
  33. width: 80px;
  34. margin-right: 20px;
  35. line-height: @lineHeight;
  36. overflow: hidden;
  37. }
  38. .arrow {
  39. position: absolute;
  40. right: 5px;
  41. top: 12px;
  42. height:;
  43. width:;
  44. display: inline-block;
  45. *display: inline;
  46. *zoom:;
  47. border: 10px solid transparent;
  48. border-top-color: #9e9e9e;
  49. }
  50. }
  51. .select-options {
  52. display: none;
  53. position: absolute;
  54. top: 37px;
  55. left: -1px;
  56. width: 100%;
  57. border: 1px solid @border;
  58. border-top:none;
  59. background: white;
  60. z-index:;
  61. max-height: 200px;
  62. overflow: auto;
  63. line-height: @lineHeight - 10;
  64. &.show {
  65. display: inline-block;
  66. *display: inline;
  67. *zoom:;
  68. }
  69. .select-option {
  70. display: inline-block;
  71. height: @lineHeight - 10;
  72. color: black;
  73. line-height: @lineHeight - 10;
  74. width: 100%;
  75. cursor: pointer;
  76. &:hover {
  77. background: #119ae8;
  78. color:white;
  79. }
  80. }
  81. }
  82. }

然后用js控制一下点击事件的逻辑

  1. var select = $('.custom-select');
  2. var optionsContainer = select.find('.select-options');
  3. var selectText = select.find('.select-text');
  4. selectText.find('.text').text('语言方向');
  5.  
  6. var optionsList = ['test']; // 列表信息从本地固定或者从网络抓取
  7.           optionsContainer.find('.select-option').remove();
  8.           $(optionsList).each(function(index, el){
  9.             optionsContainer.append($('<span class="select-option" lang="'+ el +'">'+langMap[el]+'</span>'));
  10.           }
  11.  
  12.           optionsContainer.find('.select-option').click(function(e){
  13.             selectText.find('.text').text($(this).text());
  14.             optionsContainer.removeClass('show');
  15.             select.removeClass('show');
  16.           });
  17.  
  18. var selectOptionTimer;
  19. optionsContainer.hover(function(){
  20. // 鼠标进入选择项区域,停止关闭定时器
  21. clearTimeout(selectOptionTimer);
  22. }, function(){
  23. // 鼠标离开选择区域,停止定时器,并关闭选择区域
  24. clearTimeout(selectOptionTimer);
  25. optionsContainer.removeClass('show');
  26. select.removeClass('show');
  27. });
  28.  
  29. selectText.click(function(){
  30. // 如果当前下拉框是打开状态,则关闭
  31. if(optionsContainer.hasClass('show')) {
  32. optionsContainer.removeClass('show');
  33. select.removeClass('show');
  34. } else {
  35. // 如果当前不是打开状态,先关闭其他所有下拉列表
  36. $('.custom-select .select-options').removeClass('show');
  37. clearTimeout(selectOptionTimer);
  38.  
  39. // 然后再现实当前下拉列表
  40. optionsContainer.addClass('show');
  41. select.addClass('show');
  42. // 如果显示,需要在一定时间之内关闭
  43. selectOptionTimer = setTimeout(function(){
  44. optionsContainer.removeClass('show');
  45. select.removeClass('show');
  46. }, 5*1000);
  47. }
  48. });

  

最后在页面添加对应的元素就OK了

  1. <span class="custom-select">
  2. <span class="select-text">
  3. <span class="text"></span>
  4. <span class="arrow"></span>
  5. </span>
  6. <span class="select-options">
  7. ## will rendered by js
  8. ## span.select-option
  9. </span>
  10. </span>

  

当然大伙也还是可以随便拿去随便改,毕竟这是空了闲着随便写

最后来一个效果图

关于safari上的select宽高问题小技,自定义下拉框的更多相关文章

  1. jquery美化select,自定义下拉框样式

    select默认的样式比较丑,有些应用需要美化select,在网上找到一个很好的美化样式效果,本人很喜欢,在这里分享一下. <!DOCTYPE html PUBLIC "-//W3C/ ...

  2. select标签设置只读的方法(下拉框不可选但可传值)

    1. <select id="s1" name="s1" onfocus="this.defaultIndex=this.selectedInd ...

  3. jquery Combo Select 下拉框可选可输入插件

    Combo Select 是一款友好的 jQuery 下拉框插件,在 PC 浏览器上它能模拟一个简单漂亮的下拉框,在 iPad 等移动设备上又能回退到原生样式.Combo Select 能够对选项进行 ...

  4. JS为Select下拉框添加输入功能

    JavaScript使用parentNode.nextSibling.value实现的本功能,实际上你会发现网页上有两个控件元素,一个是Select,一个是input,使用CSS将input覆盖于se ...

  5. 高仿QQ即时聊天软件开发系列之三登录窗口用户选择下拉框

    上一篇高仿QQ即时聊天软件开发系列之二登录窗口界面写了一个大概的布局和原理 这一篇详细说下拉框的实现原理 先上最终效果图 一开始其实只是想给下拉框加一个placeholder效果,让下拉框在未选择未输 ...

  6. 自定义样式的select下拉框深入探索

    第一个版本: 首先实现自定义select下拉框应该具有的功能,我是选择将原来的select隐藏掉,自己在jquery代码中动态写进去<dl><dd><dt>这样的结 ...

  7. Jquery对select下拉框的操作

    一.jQuery获取Select选择的Text和Value:语法解释: $("#select_id").change(function(){//code...});   //为Se ...

  8. 吾八哥学Selenium(四):操作下拉框select标签的方法

    我们在做web页面自动化测试的时候会经常遇到<select></select>标签的下拉框,那么在Python里如何实现去操作这种控件呢?今天就给大家分享一下这个玩法.为了让大 ...

  9. 解决select下拉框禁用(设置disabled属性),后台获取值为空

    如果下拉框设置disabled属性后,提交表单到后台,后台获取的下拉框的值为空,以下有三种解决获取不到下拉框选项值的方法. 有下拉框html如:<select name="select ...

随机推荐

  1. HTML 5 视频使用

    视频格式 当前,video 元素支持三种视频格式: 格式 IE Firefox Opera Chrome Safari Ogg No 3.5+ 10.5+ 5.0+ No MPEG 4 9.0+ No ...

  2. indexOf()忽略大小写方法

    indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置.如果没有出现,则输出-1. indexOf() 方法对大小写敏感!所以要检索字符串且忽略大小写的时候,可以先把字符串转换成全部 ...

  3. 解决 innerHTML 在 IE6-IE9中不能赋值的bug

    在MSDN可以了解跟多,关于innerHTML的介绍,但是在这里只要是解决表格部分问题 MSDN上有这样的记录: When using innerHTML to insert script, you ...

  4. Ajax:Cross-Origin Resource Sharing(转)

    实例:http://blog.csdn.net/hongweigg/article/details/39054403 通过XHR实现Ajax通信的一个主要限制,来源于跨域安全策略.默认情况下,XHR对 ...

  5. (转)sql中 in 、not in 、exists、not exists 用法和差别

    exists (sql 返回结果集为真)  not exists (sql 不返回结果集为真)  如下:  表A  ID NAME  1    A1  2    A2  3  A3 表B  ID AI ...

  6. (转)window.location.search的用法

    location.search是从当前URL的?号开始的字符串如:http://www.51js.com/viewthread.php?tid=22720它的search就是?tid=22720 通过 ...

  7. Markdown 学习笔记: Basics

    Markdown 学习笔记: Basics 原文:Basics. 了解Markdown格式化句法的要点 本页对如何使用Markdown提供了一个简单的概述.在"句法"页中对Mark ...

  8. 事件监听:诀别Android繁琐的事件注册机制——view.setOnXXXXListener

    本版本为1.0,支持较少,使用不够方便.相关封装逻辑结构已升级至2.0,详情可参见:更完善的安卓事件监听实现 先简单扯两句这几天学习下来对java事件监听机制的一点感触.客观地讲,java的事件监听机 ...

  9. 读取Webpage表中的内容

    nutch将从网页中抓取到的信息放入hbase数据库中,默认情况下表名为$crawlId_webpage,但表中的内容以16进制进行表示,直接scan或者通过Java API进行读取均只能读取到16进 ...

  10. JavaScript 语法陷阱

    没有一门编程语言是完美的,JavaScript 也不例外,它语法陷阱重重,防不胜防: 加号 "with" 分号自动插入 声明提升 "eval" 多行字符串 变量 ...