- 获取元素
- 响应事件
事件
item |
desc |
change |
选择改变时 |
const school = document.getElementById("school")
school.addEventListener('change', ()=> {
console.log(school.value);
// ...
})
[] 定制样式2 - 额外增加1个容器、1个遮罩和1个标记
- 增加一个容器元素 wrap 包裹表单元素 <select>;wrap 为 相对定位,为 mask 和 marker 提供定位依据
- 增加一个遮罩元素 mask,用于显示选中的值;mask 为绝对定位,覆盖 <select>;取消事件响应
- 增加一个标记元素 marker,显示上下箭头,用于提示用户操作;marker 为绝对定位到容器右部;取消事件响应;可以是图片或字体图标
- 设置 <select> 字体颜色透明;会影响到 <option>,所以需要设置 <option> 颜色为黑色
- 增加 JavaScript;一开始获取 <select> 的值给遮罩元素 mask
- 为 <select> 增加 change 事件,每次改变时修改遮罩元素 mask 的内容
- 其它细节设计,如 高度、:hover、:focus等
- 更多设计细节,请参考天猫登录页面、淘宝高仿
<option value="#f40" data-bg="#f40">红色</option>
option[data-bg="#f40"] {
background-color: #f40;
color: #fff;
}
const body = document.body
const theme = document.getElementById('theme')
theme.addEventListener('change', () => {
body.style.background = theme.value
})