花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 24|回复: 6

下拉菜单 select 第一个子项的处理技巧

[复制链接]
  • TA的每日心情
    奋斗
    2026-4-21 17:12
  • 签到天数: 1796 天

    [LV.Master]伴坛终老

    3192

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2026-4-21 17:13 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    在需要紧凑布局的应用场景,下拉菜单 select 控件的第一个子项可能需要扮演额外的角色——提示下拉菜单的功能。这通常有两种设置技巧:

    方法一:设置第一个子菜单为 disabled

    这是推荐的做法。我们直接上例子:

    <select>
        <option value="0" disabled selected>选择水果品类</option>
        <option value="1">梨子</option>
        <option value="2">苹果</option>
        <option value="3">木菠萝</option>
        <option value="4">酸杨桃</option>
        <option value="5">苦李</option>
    </select>
    

    效果演示:

    这里,select 的第一个 option 子项不是待选子菜单,它的作用是在页面初始化时提醒用户进行选择,相当于标题。该项使用了一个 disabled属性,表示它被禁用,另一个属性 selected 表示初始化页面时被选中。后续的项目仅使用 value 属性以标明子菜单索引留待JS处理时识别或做判断依据。

    这种处理技巧兼容性好,也符合业界规范。缺点是,下拉菜单展开时头一个子项虽然处于不可用状态,但它仍然可见,在视觉上有那么一点点“碍眼”的感觉。

    方法二:使用CSS设置第一个子菜单为不可见

    参考如下代码:

    <select>
        <option value="0" style="display: none;">选择水果品类</option>
        <option value="1">梨子</option>
        <option value="2">苹果</option>
        <option value="3">木菠萝</option>
        <option value="4">酸杨桃</option>
        <option value="5">苦李</option>
    </select>
    

    效果:

    这个方法被认为是“极客技巧”,下拉菜单展开后的效果清爽利落,不再出现待选子项集群中不该有的候选项目,视觉效果极佳。缺点是:可能不兼容老旧浏览器、屏幕阅读器可能无法正确处理隐藏的选项、(据说)隐藏选项可能导致用户困惑。

    上述两种方法,笔者更倾向于选择第二种——如果可以自主选择的话。

    JS简单操作下拉菜单实例

    最后我们以第二种技巧为例,简单演示一下JS如何操作下拉菜单。下面示例的要点:获取用户选择结果并复原下拉菜单为初始状态:

    <select id="mySelect" onchange="getSelected();">
        <option  value="0">选择水果品类</option>
        <option value="1">梨子</option>
        <option value="2">苹果</option>
        <option value="3">木菠萝</option>
        <option value="4">酸杨桃</option>
        <option value="5">苦李</option>
    </select>
    <output id="Result">选择结果</output>
    
    <script>
        const mySelect = document.getElementById('mySelect');
    
        function getSelected() {
            // 显示选择结果
            Result.innerText = '你选择了:' + mySelect.options[mySelect.value].text;
            // 复原下拉菜单为初始状态
            mySelect.value = '0';
        }
    </script>
    

    【结语】下拉菜单 select 是 Web 页与用户交互的一个重要标签组件,其下由子标签 option 组成待选菜单子项。待选子菜单的第一项如何处理是一门技巧,特别是当需要下拉菜单第一项充当类标题的时候。本文给出了两个解决方案,并演示了 JS 对 select 的简单操作。

    评分

    参与人数 2威望 +80 金钱 +160 经验 +80 收起 理由
    红影 + 50 + 100 + 50 匠心独运,细节精致入微!
    梦江南 + 30 + 60 + 30 匠心独运,细节精致入微!

    查看全部评分

  • TA的每日心情
    开心
    2026-4-21 10:34
  • 签到天数: 697 天

    [LV.9]以坛为家II

    482

    主题

    1万

    回帖

    5万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪缤纷心情心曲飞扬花好月圆飞龙在天音画大师天籁妙音共看流星风雨同行我心永远喜乐安康花潮贵宾

    发表于 2026-4-21 17:33 | 显示全部楼层
    黑黑老师傍晚嚎!谢谢老师详细讲解,学习了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1897

    主题

    33万

    回帖

    39万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2026-4-21 21:35 | 显示全部楼层
    下拉菜单里也这么多细节问题。感谢黑黑介绍和讲解,学习了
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1897

    主题

    33万

    回帖

    39万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2026-4-21 21:37 | 显示全部楼层
    第一个子项不出现的确很清爽
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2026-4-21 17:12
  • 签到天数: 1796 天

    [LV.Master]伴坛终老

    3192

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2026-4-21 23:10 | 显示全部楼层
    红影 发表于 2026-4-21 21:37
    第一个子项不出现的确很清爽

    原生 select 和其它 form 里的组件一样,有很多缺陷,所以,有人专门封装了 select2 之类的第三方库
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2026-4-21 17:12
  • 签到天数: 1796 天

    [LV.Master]伴坛终老

    3192

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2026-4-21 23:11 | 显示全部楼层
    红影 发表于 2026-4-21 21:35
    下拉菜单里也这么多细节问题。感谢黑黑介绍和讲解,学习了

    几乎所有的东东都会有自己的细节
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2026-4-21 17:12
  • 签到天数: 1796 天

    [LV.Master]伴坛终老

    3192

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2026-4-21 23:11 | 显示全部楼层
    梦江南 发表于 2026-4-21 17:33
    黑黑老师傍晚嚎!谢谢老师详细讲解,学习了。

    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2026-4-22 00:04 , Processed in 0.067905 second(s), 25 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表