多步骤表单的步骤指示器高亮样式失效怎么办?
我在做多步骤表单时,给步骤指示器加了.active类的高亮样式,但切换步骤时样式完全没反应…
代码结构是这样的,用ol做步骤导航:
.steps ol {
display: flex;
gap: 20px;
}
.steps li {
width: 40px;
height: 40px;
background: #eee;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: bold;
}
.steps li.active {
background: #1890ff !important;
color: white;
border-radius: 50% 0 0 50%;
}
我用JS动态切换active类的时候,数字能正常变化,就是背景色和圆角样式完全没生效。尝试过加!important也不行,检查DOM发现类名确实被加上去了,但样式就是覆盖不了其他规则…
之前用nth-child(1)写静态样式时没问题,改成动态类名就失效了,这到底是CSS优先级问题还是选择器写错了?
.steps li.active加了!important都没生效,应该是因为这个选择器权重不够。试试改成.steps li.active改成.steps .active,或者直接用.active。因为当你动态添加类的时候,CSS选择器权重不够会覆盖不掉之前的样式。这里有个简单的修复方案:
如果你用的是JavaScript来切换类名,可以这样写个函数:
调用的时候直接传步骤索引就行,比如
setActiveStep(0)。这样能确保只有当前步骤的li有active类,而且样式能正确应用。如果还是不行,检查一下你的CSS加载顺序,确保你的样式表在浏览器中正确加载,没有404错误。有时候样式表没加载成功也会导致类名加了但不生效。