布尔属性
布尔属性是一种特殊属性,只存在"有"或"无"两种状态,无需属性值。
布尔属性特点
- 无需值:属性存在即为true
- 省略格式:直接写属性名即可
- 生效规则:有属性则生效,无属性则不生效
HTML
<!-- 标准写法:只写属性名 -->
<input disabled>
<input required>
<!-- 也可写属性名=属性名 -->
<input disabled="disabled">
<input required="required">
常用布尔属性
表单相关
| 属性 | 适用元素 | 说明 |
|---|---|---|
disabled | 表单元素 | 禁用元素 |
required | 表单元素 | 必填验证 |
readonly | input/textarea | 只读 |
checked | radio/checkbox | 选中状态 |
selected | option | 下拉选中 |
multiple | select/input[file] | 多选 |
autofocus | 表单元素 | 自动聚焦 |
示例代码
HTML
<!-- disabled 禁用 -->
<input type="text" disabled>
<button disabled>禁用按钮</button>
<!-- required 必填 -->
<input type="text" name="username" required>
<!-- readonly 只读 -->
<input type="text" value="不可编辑" readonly>
<!-- checked 选中 -->
<input type="checkbox" checked>
<input type="radio" name="gender" value="male" checked>
<!-- selected 下拉选中 -->
<select name="city">
<option value="bj" selected>北京</option>
<option value="sh">上海</option>
</select>
<!-- multiple 多选 -->
<select name="tags" multiple>
<option value="html">HTML</option>
<option value="css">CSS</option>
</select>
<input type="file" multiple>
媒体布尔属性
video/audio属性
HTML
<video src="video.mp4" controls autoplay muted loop>
</video>
<audio src="music.mp3" controls autoplay loop>
</audio>
| 属性 | 说明 |
|---|---|
controls | 显示播放控制条 |
autoplay | 自动播放 |
muted | 静音 |
loop | 循环播放 |
playsinline | iOS内联播放 |
autoplay在大多数浏览器需要配合muted使用才能生效。
其他布尔属性
其他常用
HTML
<!-- hidden 隐藏元素 -->
<div hidden>隐藏的内容</div>
<!-- draggable 可拖拽 -->
<div draggable="true">可拖拽元素</div>
<!-- contenteditable 可编辑 -->
<div contenteditable="true">可编辑内容</div>
<!-- open 详情展开 -->
<details open>
<summary>标题</summary>
<p>展开的内容</p>
</details>
<!-- defer/async 脚本加载 -->
<script src="app.js" defer></script>
<script src="analytics.js" async></script>
布尔属性对比
| 属性 | disabled | readonly |
|---|---|---|
| 可聚焦 | 否 | 是 |
| 值提交 | 否 | 是 |
| 外观 | 灰色 | 正常 |
| 可编辑 | 否 | 否 |
JavaScript操作布尔属性
HTML
<input type="checkbox" id="check1">
<button onclick="toggle()">切换</button>
<script>
const checkbox = document.getElementById('check1');
// 设置布尔属性
checkbox.checked = true;
checkbox.disabled = true;
// 移除布尔属性
checkbox.disabled = false;
// 使用setAttribute/removeAttribute
checkbox.setAttribute('disabled', '');
checkbox.removeAttribute('disabled');
</script>
要点总结
- 无需值:布尔属性直接写属性名即可
- 存在即生效:属性存在表示true
- 禁用vs只读:disabled不提交值,readonly会提交
- JS操作:直接设置true/false或使用removeAttribute
📝 发现内容有误?点击此处直接编辑