button:hover 伪类需配合 background-color 等具体样式才生效,空规则无效;应设置合法颜色值、添加 transition 过渡、注意优先级和移动端兼容性。
button:hover 伪类必须配合 background-color 才生效
单独写 :hover 不会触发任何样式变化,它只是选择器,真正起作用的是你给它设置的属性,比如 background-color。很多初学者写了 button:hover 却没加具体样式,结果悬停毫无反应。
常见错误写法:
button:hover { }
——空规则等于没写。
正确做法是明确指定颜色值,且注意颜色格式一致性(如都用十六进制或都用 rgb):
-
background-color值必须合法,#007bff、rgb(0, 123, 255)、hsl(210, 100%, 50%)都可以,但background-color: blueish;会失效 - 如果按钮本身有
background-color: transparent或继承自父级的模糊值,悬停时也要显式覆盖 - 避免同时设置
background和background-color,后者会被前者覆盖(因为background是复合属性)
transition 让颜色变化更自然
没有 transition 的 background-color 变化是瞬时跳变,体验生硬。加上过渡动画才符合现代 UI 直觉。