虽然纯CSS无法真正改变DOM状态,树形菜单的实现树HTML结构设计
任何优秀的CSS实现都始于合理的HTML结构 。我们可以这样扩展:
css
/* 父节点选中时强制子节点样式 */
.tree-menu input[type="checkbox"]:checked ~ ul input[type="checkbox"] + label {
color: #4CAF50;
}/* 实际选中状态仍需JS辅助,实现树西西软件园官网建议:
使用CSS变量统一风格:css
:root {
--tree-indent: 20px;
--tree-color: #333;
}.tree-menu ul {
padding-left: var(--tree-indent);
}限制动画使用
:
css @media (prefers-reduced-motion: reduce) { .tree-menu li { animation: none !important; } }处理超深层级