size属性使select变为固定高度多行列表控件,而非控制下拉弹出层高度;值为1或省略时为单行下拉,≥2时显示对应行数选项并支持滚动;需配合multiple属性才能实现多选。

size属性让select变成多行下拉列表
size属性不控制下拉菜单展开后的高度,而是让
关键判断:如果你希望用户**同时看到多个选项且无需展开操作**,用size;如果只是想限制下拉弹出层的高度,请改用CSS(max-height + overflow-y),因为size对下拉弹出态无效。
size值为1时的行为容易被误解
当size="1"时,
-
size="0"或省略该属性 → 单行下拉(默认) -
size="1"→ 视觉和交互上仍为单行下拉(等价于未设置) -
size="2"及以上 → 固定显示对应行数的选项,出现垂直滚动条(如超出)
与multiple属性共用时的交互变化
单独用size时,用户只能选中一个选项(即使显示多行);加上multiple后,才支持按Ctrl(Windows)或Cmd(macOS)多选,且size决定可见行数。
立即学习“前端免费学习笔记(深入)”;
常见错误:只加size却期望能多选——必须显式写multiple,否则即使显示5行,点击仍只会切换当前选中项。
- 仅
<select size="4">→ 单选,显示4行 -
<select size="4" multiple>→ 多选,显示4行,支持Ctrl+Click - 若未设
size但写了multiple→ 浏览器通常按默认高度(如2–3行)渲染,不可靠,应始终配size
实际使用时要注意的兼容性细节
size是HTML原生属性,所有浏览器都支持,但渲染细节有差异:
- Chrome/Firefox/Safari:严格按
size值显示行数,每行高度由字体大小和line-height决定 - 某些旧版IE:可能忽略
size或在multiple未启用时表现异常 - 移动端(iOS Safari):
size > 1+multiple可能触发原生多选界面,而非滚动列表 - 无障碍访问:屏幕阅读器会正确识别
size值并播报“列表,共N项,显示M行”,但需确保<option>有清晰文本
最易被忽略的一点:改变size不会影响表单提交逻辑——无论size是多少,提交的仍是value值;但若用了multiple,后端需按数组接收(如name="city[]"或解析逗号分隔)。



















