javascript - 更平滑的 JQuery 宽度变化

标签 javascript jquery html css

我正在尝试为悬停 block 变大的菜单制作动画,而 sibling 正在为这种尺寸增加提供空间。所有 block 一起占据了整个窗口宽度。

我使用一些基本的 Jquery 成功地实现了这一点,但结果有点笨拙。 最右边的 div 受到所有计算和舍入的影响:

var width = $(window).width() - 44;
var blockwidth = width/12;
var blockwidthLarge = blockwidth+154;
var blockwidthSmall = blockwidth-14;
$('.headerblock').css('width',blockwidth+'px').hover(function()
   {
      $(this).siblings().stop(false,false).animate({width: blockwidthSmall},300);
      $(this).stop(false,false).animate({width: blockwidthLarge},300);

   },function()
   {
       $(this).siblings().stop(false,false).animate({width: blockwidth},300);
      $(this).stop(false,false).animate({width: blockwidth},300);

   });

这是一个有效的 jsfiddle(我建议将预览框架调整到更大的尺寸以增加效果的可见性):

jsfiddle

我该如何改进才能使盒子看起来稳定?也许这已经被开发出来了? 该网站应该兼容 IE8+,所以我不能使用花哨的 css 规则。

最佳答案

有一个名为 hoverIntent 的 jQuery 插件通过 Brian Cherne这可能会解决您的问题。

基本上,它所做的只是在它认为用户确实打算悬停时触发悬停事件。与原版相比,它的流畅性稍逊,但效果很好,而且看起来很别致。

这是在“外部资源”下添加的插件的 fiddle

$('.headerblock').hover(function() {

更改为“.hoverIntent”

http://jsfiddle.net/Matze/c4uyR/1/

var width = $(window).width() - 44;
var blockwidth = Math.round(width / 12);
var blockwidthLarge = blockwidth + 154;
var blockwidthSmall = blockwidth - 14;
$('.headerblock').css('width', blockwidth + 'px').hoverIntent(function ()
{
    $(this).siblings().stop(false, false).animate({
        width: blockwidthSmall
    }, 300);
    $(this).stop(false, false).animate({
        width: blockwidthLarge
    }, 300);

}, function () {
    $(this).siblings().stop(false, false).animate({
        width: blockwidth
    }, 300);
    $(this).stop(false, false).animate({
        width: blockwidth
    }, 300);

});

关于javascript - 更平滑的 JQuery 宽度变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22363874/

相关文章:

Javascript 函数每分钟更改链接

javascript - 用facebook做ajax功能

JavaScript - "this"的所有者

javascript - 图片上的点击事件突然不起作用

javascript - 防止在滚动模态框内容时滚动背景 div

javascript - 当我想将它添加到我的 Rails 应用程序时,我在哪里实现来自 codepen.io 的 JS 部分

javascript - jQuery UI 关闭动态对话框...或者只是打开的对话框

c# - 将组合框绑定(bind)到 wpf 中的另一个组合框

javascript - 在 Firefox OS 中使用 Javascript 生成文件

javascript - 删除按钮删除自身而不是目标元素