【问题标题】:CSS, mouse off?CSS,鼠标关闭?
【发布时间】:2013-05-20 07:13:21
【问题描述】:

我正在制作一个展示我的图形作品的网站。对于我工作的其中一个缩略图,我可以做到这一点

.example1:not:hover {
opacity:1;
-webkit-transition: all .15s linear;
-moz-transition: all .15s linear;
transform:rotate(-7deg);
-ms-transform:rotate(-7deg);
-webkit-transform:rotate(-7deg);
transition: transform 0.25s linear;
}

现在,我想要它做

transform:rotate(7deg);
-ms-transform:rotate(7deg);
-webkit-transform:rotate(7deg);

当您将鼠标移到缩略图上时 缩略图的html是

<div id ="maintext">    
<img src="Images/example.png" class="example1" >
</div>

谢谢大家。

【问题讨论】:

  • 不太清楚你的问题是什么。你试过什么?
  • 对不起,我试过 .example1:not:hover { 没用,基本上我希望它在悬停时倾斜 7 度,然后当你把鼠标移开时旋转 -7 度。
  • 所以,它从rotate:0开始,然后当你悬停时,你想要rotate:-7deg,然后当你悬停时,你想要rotate:7deg。那正确吗。如果这就是您要问的,那么答案是否定的,您不能;不是纯 CSS;您将需要一些 Javascript。
  • 啊好吧,你不知道怎么做吗?
  • .foo:not:hover 非常荒谬,因为那又是.foo。因此,将转换应用于 both 这些“状态”.foo.foo:hover

标签: html css hover


【解决方案1】:

首先,你不能像那样使用:not选择器。

如果你想指定一些悬停的东西,你不需要任何伪类。我想你想要这样的东西:

.example1 {
    /* no rotation */
}
.example1:hover {
    transform:rotate(7deg);
    -ms-transform:rotate(7deg);
    -webkit-transform:rotate(7deg);
}

然后,如果你想要一个不同的状态它被悬停之后,你需要用 javascript 添加一个类:

$(document).on("mouseleave", ".example1", function() {
    $(this).addClass("hovered");
});

现在你可以有一个这样的 CSS 类:

.example1.hovered {
    transform:rotate(-7deg);
    -ms-transform:rotate(-7deg);
    -webkit-transform:rotate(-7deg);
}

【讨论】:

  • 这可行,但在鼠标离开后不会回到 0 度 :(
【解决方案2】:

把你想要的非悬停状态放在.example1 { ... }中。然后将悬停状态放入.example1:hover { ... }。因此,如果您想让图像在不悬停时旋转,请这样做:

.example1 {
  opacity:1;
  -webkit-transition: all .15s linear;
  -moz-transition: all .15s linear;
  transform:rotate(-7deg);
  -ms-transform:rotate(-7deg);
  -webkit-transform:rotate(-7deg);
  transition: transform 0.25s linear;
}
.example1:hover {
  /* set all transforms to none or whatever you want when hovering */
}

【讨论】:

  • 让我解释一下,所以,它从旋转:0 开始,然后当你悬停时,你想要旋转:-7 度,然后在悬停时,你想要旋转:7 度。那正确吗。如果这就是您要问的,那么答案是否定的,您不能;不是纯 CSS;你需要一些Javascript。正如斯普德利所说,基本上就是这样。
【解决方案3】:

没有,CSS 中没有明确的鼠标离开属性。现在我明白你想要什么了。

jQuery

$('.example1').on('mouseleave', function () { var $this = $(this); $this.removeClass('mouseenter'); $this.addClass('mouseleave'); window.setTimeout(函数(){ $this.removeClass('mouseleave'); }, 150); }).on('mouseenter', function () { $(this).addClass('mouseenter'); });

CSS

.example1 {
    -webkit-transition: all .15s linear;
    -moz-transition: all .15s linear;
    transition: transform .15s linear;
    transform:rotate(0deg);
    -ms-transform:rotate(0deg);
    -webkit-transform:rotate(0deg);
}
.example1.mouseenter {
    transform:rotate(7deg);
    -ms-transform:rotate(7deg);
    -webkit-transform:rotate(7deg);
}
.example1.mouseleave {
    transform:rotate(-7deg);
    -ms-transform:rotate(-7deg);
    -webkit-transform:rotate(-7deg);
}

实时示例: JS Fiddle

【讨论】:

  • 对不起,我在使用jQuery方面非常缺乏经验,我将如何实现?
  • 我将用 2 分钟创建一个 fiddle 示例
  • 你是对的,没有 explicit 属性,但你不需要。
  • 我添加一个例子看看这是否是你想要完成的,首先启动正常图像,然后在离开 -7 度时悬停 7 度,如果再次悬停到 7 度跨度>
  • 好的,但是当我把鼠标移开后,它显示在 -7 旋转
猜你喜欢
  • 2010-10-11
  • 1970-01-01
  • 1970-01-01
  • 2012-04-21
  • 1970-01-01
  • 1970-01-01
  • 2017-11-12
  • 2010-11-15
  • 2014-11-04
相关资源
最近更新 更多