JavaScript延迟CSS悬停/鼠标悬停效果
Delay CSS hover/mouseover effect with JavaScript
我发现了一个非常好的图像库脚本,这里只使用CSS: http://host.sonspring.com/hoverbox/
唯一阻止我使用它的是悬停效果太快了。我想把悬停效果延迟一秒钟;意思是图像不会放大,除非你将鼠标悬停一秒钟。我如何用JavaScript做到这一点?
我认为可以通过以下步骤完成:
- 更改提供的CSS,使隐藏元素("弹出"图像)不会在悬停时设置其
display
样式。这应该足够简单,在CSS中可能没有很多display
规范。 创建另一个CSS类处理
display
属性(设置为block
,我想)。使用JavaScript,为缩略图元素的mouseover
事件添加一个处理程序。在这种情况下,设置延迟,然后将新的CSS类应用于目标元素。(不要忘记在mouseout
上删除这个类。如果你需要的话,我可能会稍微修改一下,以获得某种概念的证明。不过,它还是相当原始的。一些潜在的挂机可能包括:
- 当光标下显示另一个元素时,
mouseover
是否仍然适用?如果没有,mouseout
是否会被提高,或者这些元素是否会在打开后保持开放? - 在每种情况下选择合适的元素可能会很棘手。如果我们不得不处理HTML结构或元素id/样式,那么可能需要更多的工作来更新现有的CSS以匹配。
这是一个有趣的想法,所以我很乐意给一些关注原型。但希望只是涉及到的概要足以让你开始:)
编辑:好吧,我比我想象的更有兴趣尝试这个。我这里有一个原型。悬停效果现在由jQuery处理,而不是纯CSS。我唯一没有添加的是延迟。我正在调查呢。
到目前为止,我唯一改变的是添加了JavaScript并从CSS中的.hoverbox a:hover .preview
中删除了display
属性。就是这样。为了StackOverflow的子孙后代的利益(因为我从来没有完全信任jsfiddle来保存东西),这里是目前为止的JavaScript代码:
$(document).ready(function() {
$('.hoverbox a').mouseover(function() {
$(this).children('.preview').show();
});
$('.hoverbox a').mouseout(function() {
$(this).children('.preview').hide();
});
});
您通常可以使用CSS过渡,而不是使用JavaScript。你也不需要在HTML中使用两个图像——你可以在将图像悬停时放大它们,并用负边距定位它们。您还可以去掉link标记。因此,对于图库中的单个项目,从这个HTML:
<li>
<a href="#">
<img src="img/photo01.jpg" alt="description" />
<img src="img/photo01.jpg" alt="description" class="preview" />
</a>
</li>
你得到这个:
<li>
<img src="http://host.sonspring.com/hoverbox/img/photo01.jpg" alt="description" />
</li>
在CSS中你可以这样做:
.hoverbox img {
/*
in order to uze z-index you need
to have position:absolute or relative set
*/
position:relative;
background: #fff;
border-color: #aaa #ccc #ddd #bbb;
border:1px solid;
padding: 2px;
width: 100px;
height: 75px;
/*
CSS3 transition shorthand order:
transition: [transition-property] [transition-duration] [transition-timing-function] [transition-delay];
if you don't specify values for transition-property, default is "all"
if you don't specify values for transition-timing-function, default is linear
*/
-webkit-transition:.01s 1s;
-moz-transition:.01s 1s;
-o-transition:.01s 1s;
transition:.01s 1s;
}
.hoverbox img:hover {
z-index:1;
width:200px;
height:150px;
margin:-37px -50px;
border-color:#000;
}
这在非现代浏览器中不起作用:(即:IE <10
乌利希期刊指南:下面是我整理的内容:http://jsfiddle.net/gryzzly/JWk7V/3/
我已经更新了脚本,包括一个脚本,你可以应用于处理这个功能与相同的HTML和仍然使用CSS3与现代浏览器:http://jsfiddle.net/gryzzly/JWk7V/4/
- 当鼠标悬停在文本中的单词上时显示警报
- d3.js鼠标悬停鼠标输出问题
- 悬停(鼠标离开)方法不显示效果
- 为什么addEventListener只执行我的函数,而不为其创建鼠标悬停/鼠标打开事件
- 在鼠标悬停/鼠标出类中的任何元素时更改元素 ID
- 检测鼠标悬停/鼠标单击,无论 Z 顺序/图层级别如何
- 悬停/鼠标悬停功能冲突
- 子元素的 JavaScript 鼠标悬停/鼠标退出问题
- 在 iPad 上触发悬停/鼠标退出/模糊
- 如何通过按钮单击和鼠标悬停/鼠标退出显示和隐藏节点文本?D3/JS.
- 背景图像在悬停/鼠标悬停时消失,菜单在IE中不起作用
- jQuery鼠标悬停/鼠标悬停将不适用于Live
- jQuery-悬停以在刷新时触发悬停/鼠标悬停
- 悬停/鼠标悬停未在元素内部的每次移动中激活
- HighCharts条形图:悬停鼠标时显示条形值
- 鼠标悬停/鼠标离开,鼠标进入/鼠标离开,鼠标悬停闪烁问题
- 滚动时未触发鼠标悬停/鼠标输入
- JavaScript-如何在鼠标悬停/鼠标悬停上同时更改TR中所有TD的背景颜色
- 记住并在悬停鼠标悬停后显示以前活动的导航选项卡
- JavaScript延迟CSS悬停/鼠标悬停效果