Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

HOW TO

HowTo 主页

菜单

图标栏 菜单图标 手风琴 标签 垂直标签 标签页标题 全页面标签 悬停标签 顶部导航 响应式顶部导航 分割导航 带有图标的导航栏 搜索菜单 搜索栏 固定侧边栏 侧边导航 响应式侧边栏 全屏导航 画布外菜单 悬停侧边栏按钮 带图标的侧边栏 水平滚动菜单 垂直菜单 底部导航 响应式底部导航 底部边框导航链接 右对齐菜单链接 居中菜单链接 等宽菜单链接 固定菜单 滚动时下拉栏 滚动时隐藏导航栏 滚动时缩小导航栏 粘性导航栏 图像上的导航栏 悬停下拉菜单 点击下拉菜单 级联下拉菜单 顶部导航中的下拉菜单 侧边导航中的下拉菜单 响应式导航栏下拉菜单 子导航菜单 上拉菜单 超级菜单 移动菜单 窗帘菜单 折叠侧边栏 折叠侧边面板 分页 面包屑 按钮组 垂直按钮组 粘性社交栏 药丸导航 响应式标题

图像

幻灯片 幻灯片库 模态图像 灯箱 响应式图像网格 图像网格 图像库 可滚动图像库 标签库 图像叠加淡入 图像叠加滑动 图像叠加缩放 图像叠加标题 图像叠加图标 图像效果 黑白图像 图像文字 图像文字块 透明图像文字 全页面图像 图像上的表单 英雄图像 模糊背景图像 滚动时更改背景 并排图像 圆角图像 头像图像 响应式图像 居中图像 缩略图 图像周围的边框 认识团队 粘性图像 翻转图像 摇晃图像 作品集库 带过滤功能的作品集 图像缩放 图像放大镜 图像对比滑块 网站图标

按钮

警告按钮 轮廓按钮 分割按钮 动画按钮 淡出按钮 图像上的按钮 社交媒体按钮 阅读更多 阅读更少 加载按钮 下载按钮 药丸按钮 通知按钮 图标按钮 下一项/上一项按钮 导航中的更多按钮 块按钮 文本按钮 圆形按钮 滚动到顶部按钮

表单

登录表单 注册表单 结账表单 联系表单 社交登录表单 注册表单 带图标的表单 时事通讯 堆叠表单 响应式表单 弹出式表单 内联表单 清除输入字段 隐藏数字箭头 复制文本到剪贴板 动画搜索 搜索按钮 全屏搜索 导航栏中的输入字段 导航栏中的登录表单 自定义复选框/单选按钮 自定义选择 切换开关 选中复选框 检测大写锁定 在 Enter 键上触发按钮 密码验证 切换密码可见性 多步骤表单 自动完成 关闭自动完成 关闭拼写检查 文件上传按钮 空输入验证

过滤器

过滤列表 过滤表格 过滤元素 过滤下拉菜单 排序列表 排序表格

表格

斑马纹表格 居中表格 全宽表格 嵌套表格 并排表格 响应式表格 对比表格

更多

全屏视频 模态框 删除模态框 时间轴 滚动指示器 进度条 技能条 范围滑块 颜色选择器 电子邮件字段 工具提示 显示元素悬停 弹出窗口 可折叠 日历 HTML 包含 待办事项列表 加载器 徽章 星级评定 用户评价 叠加效果 联系芯片 卡片 翻转卡片 个人资料卡片 产品卡片 警报 标注 笔记 标签 丝带 标签云 圆形 样式 HR 优惠券 列表组 带徽章的列表组 无项目符号的列表 响应式文本 镂空文本 发光文本 固定页脚 粘性元素 等高 清除浮动 响应式浮动 Snackbar 全屏窗口 滚动绘画 平滑滚动 渐变背景滚动 粘性头部 滚动时收缩头部 价格表 视差 纵横比 响应式内联框架 切换喜欢/不喜欢 切换隐藏/显示 切换黑暗模式 切换文本 切换类 添加类 删除类 更改类 活动类 树形视图 删除小数 删除属性 离线检测 查找隐藏元素 重定向网页 格式化数字 缩放悬停 翻转框 垂直居中 在 DIV 中居中按钮 居中列表 悬停过渡 箭头 形状 下载链接 全高元素 浏览器窗口 自定义滚动条 隐藏滚动条 显示/强制滚动条 设备外观 可编辑边框 占位符颜色 禁用文本区域调整大小 禁用文本选择 文本选择颜色 项目符号颜色 垂直线 分隔线 文本分隔线 动画图标 倒计时 打字机 即将推出页面 聊天消息 弹出聊天窗口 分屏 推荐 分区计数器 报价幻灯片 可关闭的列表项 典型设备断点 可拖动的 HTML 元素 JS 媒体查询 语法高亮 JS 动画 JS 字符串长度 JS 乘方 JS 默认参数 JS 随机数 JS 排序数字数组 JS 展开运算符 JS 滚动到视图 获取当前日期 获取当前 URL 获取当前屏幕大小 获取内联框架元素

网站

创建免费网站 制作网站 制作静态网站 托管静态网站 制作网站 (W3.CSS) 制作网站 (BS3) 制作网站 (BS4) 制作网站 (BS5) 创建和查看网站 创建链接树网站 创建作品集 创建简历 制作餐厅网站 制作商业网站 制作网页书 居中网站 联系部分 关于页面 大标题 示例网站

网格

2 列布局 3 列布局 4 列布局 扩展网格 列表网格视图 混合列布局 列卡片 之字形布局 博客布局

谷歌

谷歌图表 谷歌字体 谷歌字体搭配 谷歌设置分析

转换器

转换重量 转换温度 转换长度 转换速度

博客

获得开发人员工作 成为前端开发人员 雇用开发人员

如何 - 自定义选择框


学习如何使用 CSS 和 JavaScript 创建自定义下拉框。


自定义下拉框

默认

自定义

自己尝试 »


创建自定义下拉菜单

步骤 1) 添加 HTML

示例

<!-- 将下拉框包围在一个 "custom-select" DIV 元素内。 -->
记住设置 width: -->
<div class="custom-select" style="width:200px;">
  <select>
    <option value="0">选择汽车:</option>
    <option value="1">奥迪</option>
    <option value="2">宝马</option>
    <option value="3">雪铁龙</option>
    <option value="4">福特</option>
    <option value="5">本田</option>
    <option value="6">捷豹</option>
    <option value="7">路虎</option>
    <option value="8">梅赛德斯</option>
    <option value="9">MINI</option>
    <option value="10">日产</option>
    <option value="11">丰田</option>
    <option value="12">沃尔沃</option>
  </select>
</div>

步骤 2) 添加 CSS

示例

/* 容器必须设置相对定位: */
.custom-select {
  position: relative;
  font-family: Arial;
}

.custom-select select {
  display: none; /*隐藏原始 SELECT 元素: */
}

.select-selected {
  background-color: DodgerBlue;
}

/* 样式化选择元素中的箭头: */
.select-selected:after {
  position: absolute;
  content: "";
  top: 14px;
  right: 10px;
  width: 0;
  height: 0;
  border: 6px solid transparent;
  border-color: #fff transparent transparent transparent;
}

/* 当选择框打开(激活)时,将箭头指向上方: */
.select-selected.select-arrow-active:after {
  border-color: transparent transparent #fff transparent;
  top: 7px;
}

/* 样式化项目(选项),包括所选项目: */
.select-items div,.select-selected {
  color: #ffffff;
  padding: 8px 16px;
  border: 1px solid transparent;
  border-color: transparent transparent rgba(0, 0, 0, 0.1) transparent;
  cursor: pointer;
}

/* 样式化项目(选项): */
.select-items {
  position: absolute;
  background-color: DodgerBlue;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 99;
}

/* 当选择框关闭时隐藏项目: */
.select-hide {
  display: none;
}

.select-items div:hover, .same-as-selected {
  background-color: rgba(0, 0, 0, 0.1);
}


步骤 3) 添加 JavaScript

示例

var x, i, j, l, ll, selElmnt, a, b, c;
/* 查找所有具有 "custom-select" 类的元素: */
x = document.getElementsByClassName("custom-select");
l = x.length;
for (i = 0; i < l; i++) {
  selElmnt = x[i].getElementsByTagName("select")[0];
  ll = selElmnt.length;
  /* 对于每个元素,创建一个新的 DIV,它将充当所选项目: */
  a = document.createElement("DIV");
  a.setAttribute("class", "select-selected");
  a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;
  x[i].appendChild(a);
  /* 对于每个元素,创建一个新的 DIV,它将包含选项列表: */
  b = document.createElement("DIV");
  b.setAttribute("class", "select-items select-hide");
  for (j = 1; j < ll; j++) {
    /* 对于原始选择元素中的每个选项,*/
    创建一个新的 DIV,它将充当选项项目: */
    c = document.createElement("DIV");
    c.innerHTML = selElmnt.options[j].innerHTML;
    c.addEventListener("click", function(e) {
        /* 当点击项目时,更新原始选择框,*/
        以及所选项目: */
        var y, i, k, s, h, sl, yl;
        s = this.parentNode.parentNode.getElementsByTagName("select")[0];
        sl = s.length;
        h = this.parentNode.previousSibling;
        for (i = 0; i < sl; i++) {
          if (s.options[i].innerHTML == this.innerHTML) {
            s.selectedIndex = i;
            h.innerHTML = this.innerHTML;
            y = this.parentNode.getElementsByClassName("same-as-selected");
            yl = y.length;
            for (k = 0; k < yl; k++) {
              y[k].removeAttribute("class");
            }
            this.setAttribute("class", "same-as-selected");
            break;
          }
        }
        h.click();
    });
    b.appendChild(c);
  }
  x[i].appendChild(b);
  a.addEventListener("click", function(e) {
    /* 当点击选择框时,关闭其他所有选择框,*/
    以及打开/关闭当前选择框: */
    e.stopPropagation();
    closeAllSelect(this);
    this.nextSibling.classList.toggle("select-hide");
    this.classList.toggle("select-arrow-active");
  });
}

function closeAllSelect(elmnt) {
  /* 一个函数,将关闭文档中的所有选择框,*/
  除当前选择框: */
  var x, y, i, xl, yl, arrNo = [];
  x = document.getElementsByClassName("select-items");
  y = document.getElementsByClassName("select-selected");
  xl = x.length;
  yl = y.length;
  for (i = 0; i < yl; i++) {
    if (elmnt == y[i]) {
      arrNo.push(i)
    } else {
      y[i].classList.remove("select-arrow-active");
    }
  }
  for (i = 0; i < xl; i++) {
    if (arrNo.indexOf(i)) {
      x[i].classList.add("select-hide");
    }
  }
}

/* 如果用户点击选择框外部的任何位置,*/
则关闭所有选择框: */
document.addEventListener("click", closeAllSelect);
自己尝试 »

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.