【发布时间】:2021-08-10 20:07:42
【问题描述】:
为了在一个元素上使用鼠标,我们使用:hover CSS 属性。鼠标移出元素怎么办?
我在元素上添加了一个过渡效果来改变颜色。悬停效果很好,但是我应该使用什么 CSS 属性让鼠标移出来应用效果?我正在寻找 CSS 解决方案,而不是 JavaScript 或 JQuery 解决方案。
【问题讨论】:
为了在一个元素上使用鼠标,我们使用:hover CSS 属性。鼠标移出元素怎么办?
我在元素上添加了一个过渡效果来改变颜色。悬停效果很好,但是我应该使用什么 CSS 属性让鼠标移出来应用效果?我正在寻找 CSS 解决方案,而不是 JavaScript 或 JQuery 解决方案。
【问题讨论】:
我认为这是最好的解决方案。
CSS onomouseout:
div:not( :hover ){ ... }
CSS 鼠标悬停:
div:hover{ ... }
这样更好,因为如果您需要设置一些样式,只需要在鼠标输出上并尝试以这种方式执行此操作
div { ... }
你也可以设置你的样式和鼠标悬停。
【讨论】:
CSS 本身不支持 mousein 或 mouseout 选择器。
:hover 选择器将在鼠标悬停时应用于元素,在鼠标进入时添加样式,在鼠标离开时删除样式。
最接近的方法是在默认(非悬停)样式中定义您将放置在mouseout 中的样式。当您将鼠标悬停在元素上时,hover 中的样式将生效,模拟mousein,当您将鼠标移开元素时,默认样式将再次生效,模拟mouseout。
div {
background: #2e9ec7;
color: #fff;
margin: 0 auto;
padding: 100px 0;
-webkit-transition: -webkit-border-radius 0.5s ease-in;
-moz-transition: -moz-border-radius 0.5s ease-in;
-o-transition: border-radius 0.5s ease-in;
-ms-transition: border-radius 0.5s ease-in;
transition: border-radius 0.5s ease-in;
text-align: center;
width: 200px;
}
div:hover {
background: #2fa832;
-webkit-border-radius: 100px;
-moz-border-radius: 100px;
border-radius: 100px;
-webkit-transition: all 1s ease;
-moz-transition: all 1s ease;
-o-transition: all 1s ease;
-ms-transition: all 1s ease;
transition: all 1s ease;
-webkit-transform: rotate(720deg);
-moz-transform: rotate(720deg);
-o-transform: rotate(720deg);
-ms-transform: rotate(720deg);
transform: rotate(720deg);
}
为div:hover 样式定义的transitions 将在鼠标进入时生效(并应用hover)。 div 样式的 transitions 将在鼠标离开时生效(并且 hover 被移除)。这会导致 mousein 和 mouseout 转换不同。
【讨论】:
我认为我已经找到了解决方案。
.class :hover {
/*add your animation of mouse enter*/
}
.class {
/*
no need for not(hover) or something else.
Just write your animation here and it will work when mouse out
*/
}
试试吧……:)
【讨论】:
您只需要 :hover ,当您将鼠标移出元素时,它将返回到默认的非:悬停状态,如下所示:
.class { color: black; }
.class:hover { color: red; }
当您悬停时,颜色将为红色,当您“鼠标移出”时,颜色将恢复为黑色,因为它不再匹配 :hover 选择器。这是所有浏览器的默认行为,您无需在此处执行任何特殊操作。
【讨论】: