CSS中.card:hover加空格后为何触发子元素缩放效果?
CSS选择器空格导致hover效果差异的原因
先看你写的两段核心选择器:
- 原代码选择器:
.card:hover - 修改后选择器:
.card :hover
两者的本质区别在于空格的作用:
.card:hover:没有空格时,:hover伪类直接绑定在.card元素本身。意思是当你把鼠标悬停在整个卡片(拥有card类的元素)上时,就会触发transform: scale(1.04),所以整个卡片会缩放。.card :hover:加了空格后,空格代表CSS的后代选择器。这个选择器的意思是:选中所有属于.card元素的后代元素,当这些后代元素被鼠标悬停时,给它们应用缩放样式。所以你看到的是卡片内的单个元素(比如文字、图片、按钮这些子元素)被放大,而不是整个卡片。
举个实际场景的例子:
如果你的卡片结构是这样的:
<div class="card"> <h3>卡片标题</h3> <p>卡片内容</p> <button>按钮</button> </div>
用.card :hover时,当你把鼠标移到<h3>上,只有标题会放大;移到按钮上,只有按钮会放大,完全和原代码的整体缩放效果不同。
内容的提问来源于stack exchange,提问作者Yogesh Aithani
相关产品推荐
相关产品推荐

