`
star65225692
  • 浏览: 277163 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类

jquery实现图片悬浮效果

阅读更多

主要的想法是当鼠标悬浮后计算所有的描述容器大小和位置。主要依赖于缩略图的最大尺寸及其居于主要wrapper中的位置。例如,当缩略图接近边缘,我们就使得描述区域显示在缩略图左边

然后我们将帮定逼近事件到图片。主要想法是根据鼠标位置来变化图片大小。一旦图片达到最大尺寸,我们设置z-index最高,因此位于最高层次,并且显示分开的描述。风之境地

// list of thumbs
var $list        = $('#pe-thumbs'),
    // list's width and offset left.
    // this will be used to know the position of the description container
    listW        = $list.width(),
    listL        = $list.offset().left,
    // the images
    $elems        = $list.find('img'),
    // the description containers
    $descrp        = $list.find('div.pe-description'),
    // maxScale : maximum scale value the image will have
    // minOpacity / maxOpacity : minimum (set in the CSS) and maximum values for the image's opacity
    settings    = {
        maxScale    : 1.3,
        maxOpacity    : 0.9,
        minOpacity    : Number( $elems.css('opacity') )
    },
    init        = function() {

        // minScale will be set in the CSS
        settings.minScale = _getScaleVal() || 1;
        // preload the images (thumbs)
        _loadImages( function() {

            _calcDescrp();
            _initEvents();

        });

    },
    // Get Value of CSS Scale through JavaScript:
    // http://css-tricks.com/get-value-of-css-rotation-through-javascript/
    _getScaleVal= function() {

        var st = window.getComputedStyle($elems.get(0), null),
            tr = st.getPropertyValue("-webkit-transform") ||
                 st.getPropertyValue("-moz-transform") ||
                 st.getPropertyValue("-ms-transform") ||
                 st.getPropertyValue("-o-transform") ||
                 st.getPropertyValue("transform") ||
                 "fail...";

        if( tr !== 'none' ) {    

            var values = tr.split('(')[1].split(')')[0].split(','),
                a = values[0],
                b = values[1],
                c = values[2],
                d = values[3];

            return Math.sqrt( a * a + b * b );

        }

    },
    // calculates the style values for the description containers,
    // based on the settings variable
    _calcDescrp    = function() {

        $descrp.each( function(i) {

            var $el        = $(this),
                $img    = $el.prev(),
                img_w    = $img.width(),
                img_h    = $img.height(),
                img_n_w    = settings.maxScale * img_w,
                img_n_h    = settings.maxScale * img_h,
                space_t = ( img_n_h - img_h ) / 2,
                space_l = ( img_n_w - img_w ) / 2;

            $el.data( 'space_l', space_l ).css({
                height    : settings.maxScale * $el.height(),
                top        : -space_t,
                left    : img_n_w - space_l
            });

        });

    },
    _initEvents    = function() {

        $elems.on('proximity.Photo', { max: 80, throttle: 10, fireOutOfBounds : true }, function(event, proximity, distance) {

            var $el            = $(this),
                $li            = $el.closest('li'),
                $desc        = $el.next(),
                scaleVal    = proximity * ( settings.maxScale - settings.minScale ) + settings.minScale,
                scaleExp    = 'scale(' + scaleVal + ')';

            // change the z-index of the element once
            // it reaches the maximum scale value
            // also, show the description container
            if( scaleVal === settings.maxScale ) {

                $li.css( 'z-index', 1000 );

                if( $desc.offset().left + $desc.width() > listL + listW ) {

                    $desc.css( 'left', -$desc.width() - $desc.data( 'space_l' ) );

                }

                $desc.fadeIn( 800 );

            }
            else {

                $li.css( 'z-index', 1 );

                $desc.stop(true,true).hide();

            }   

            $el.css({
                '-webkit-transform'    : scaleExp,
                '-moz-transform'    : scaleExp,
                '-o-transform'        : scaleExp,
                '-ms-transform'        : scaleExp,
                'transform'            : scaleExp,
                'opacity'            : ( proximity * ( settings.maxOpacity - settings.minOpacity ) + settings.minOpacity )
            });

        });

    },
    _loadImages    = function( callback ) {

        var loaded     = 0,
            total    = $elems.length;

        $elems.each( function(i) {

            var $el = $(this);

            $('<img>').load( function() {

                ++loaded;
                if( loaded === total )
                    callback.call();

            }).attr( 'src', $el.attr('src') );

        });

    };

return {
    init    : init
};

分享到:
评论

相关推荐

    jquery鼠标悬浮图片放大效果

    通过以上步骤,我们成功地使用jQuery实现了鼠标悬浮图片放大效果。在实际应用中,可以结合项目需求进行调整和优化,比如添加过渡动画、调整放大倍数等,以提供更加流畅和自然的用户体验。这种效果不仅适用于商品展示...

    jQuery悬浮图片上13种超炫效果

    在这个主题“jQuery悬浮图片上13种超炫效果”中,我们将探讨如何利用jQuery来实现各种创新且吸引人的图像悬浮效果,以提升网站的用户体验和视觉吸引力。 1. **图片滑动显示** 这个效果可以使图片在鼠标悬浮时从一...

    jQuery制作鼠标悬浮图片上下滚动切换展示效果

    "jQuery制作鼠标悬浮图片上下滚动切换展示效果"是一个常见的交互式设计实践,它利用jQuery库来实现当鼠标悬停在图片上时,图片自动进行上下滚动切换,从而呈现出丰富的视觉体验。这种效果常见于产品展示、新闻滚动...

    jquery制作鼠标悬浮图片显示遮罩标题效果

    本教程将重点讲解如何利用jQuery来实现一个鼠标悬浮时图片显示遮罩标题的效果。 首先,我们需要了解jQuery的基本用法。jQuery通过 `$` 符号作为入口,用于选择页面中的HTML元素。例如,`$("#myElement")` 会选取ID...

    jquery 实现鼠标悬浮在某控件上,显示详细信息

    标题 "jquery 实现鼠标悬浮在某控件上,显示详细信息" 涉及到的是一个常见的前端交互设计,即使用 jQuery 这个强大的 JavaScript 库来实现鼠标悬停(hover)事件,当用户将鼠标指针放置在特定元素上时,显示额外的...

    jQuery网站右侧悬浮带二维码返回顶部代码.zip

    "jQuery网站右侧悬浮带二维码返回顶部代码"是一个实现这种功能的实例,它结合了jQuery库和一些CSS样式,为用户提供了一个既美观又实用的解决方案。 首先,jQuery是一个轻量级的JavaScript库,它简化了HTML文档遍历...

    JQuery 鼠标悬浮,图片遮罩效果

    在实现鼠标悬浮图片遮罩效果时,JQuery的核心功能主要体现在事件监听和DOM操作上。 1. **事件监听**:JQuery 提供了 `.hover()` 方法,可以同时绑定 `mouseover` 和 `mouseout` 两个事件。当鼠标进入(悬停)元素时...

    jquery实现右侧悬浮加入购物车效果源码.zip

    【标题】"jQuery实现右侧悬浮加入购物车效果源码"是一个使用JavaScript库jQuery创建的代码示例,旨在为网站提供一种常见的用户体验功能:在页面滚动时,购物车图标始终显示在右侧,用户可以轻松地将商品添加到购物车...

    jquery图片悬浮提示,带遮罩层,含标题,简介和链接

    在图片悬浮提示的实现中,jQuery提供了便捷的API来绑定事件、操作DOM元素和实现过渡效果。 2. **图片悬浮提示的实现** - **HTML结构**:首先,HTML页面中需包含待展示的图片以及用于提示的隐藏元素,如`...

    jquery右侧悬浮层菜单.rar

    在这个项目中,jQuery被用来实现悬浮层菜单的动态效果,如平滑地显示和隐藏菜单,以及可能的动画过渡。 【悬浮导航】与悬浮菜单类似,是指在页面滚动时始终显示在屏幕某一位置的导航元素。它可能是整个导航栏,也...

    jquery css3鼠标悬停图片放大显示效果代码

    下面是一个基本的jQuery实现步骤: 1. **引入jQuery库**:在HTML文件中,你需要通过`&lt;script&gt;`标签引入jQuery库,通常是通过CDN链接,如`&lt;script src="https://code.jquery.com/jquery-3.x.x.min.js"&gt;&lt;/script&gt;`,...

    jQuery鼠标悬浮图片放大特效.zip

    jQuery鼠标悬浮图片放大特效是一种常见的网页交互设计,它利用JavaScript库jQuery实现,为用户提供了一种在鼠标悬停在图片上时,图片会放大显示的效果,增强了用户体验,尤其在产品展示或者图片相册类网站中非常常见...

    jquery鼠标经过图片显示悬浮按钮图片特效.zip

    本教程将探讨如何利用jQuery实现一个鼠标经过图片时显示悬浮按钮的图片特效,这在网页互动性和用户体验方面有着显著的提升。我们将深入讨论相关的jQuery代码、HTML结构以及CSS样式,来帮助你创建一个类似的图片相册...

    jquery hover 冒泡事件制作心型图片墙鼠标悬浮图片

    在本文中,我们将深入探讨如何使用jQuery的hover事件来创建一个独特的心形图片墙,当鼠标悬浮在图片上时,会产生动态效果。首先,我们需要理解jQuery库的基本概念以及hover事件的工作原理。 jQuery是一个广泛使用的...

    jQuery侧边固定悬浮导航

    本文将深入探讨如何使用jQuery实现这样的功能,并结合提供的文件列表进行解析。 首先,我们要理解jQuery的基本概念。jQuery是一个轻量级的JavaScript库,简化了HTML文档遍历、事件处理、动画和Ajax交互等任务。在这...

    jQuery实现的悬浮网站右侧带微信二维码图片的返回底部及顶部效果代码.zip

    总的来说,这个资源提供了一个实用的网页增强组件,通过jQuery实现了高效且用户友好的交互功能。如果你正在构建一个网站,并希望增加这些功能,这个代码包将是一个很好的起点。不过,在实际应用前,别忘了根据自己的...

    鼠标悬浮显示二级菜单效果的jquery实现

    以上内容详细说明了如何使用HTML和jQuery实现当鼠标悬浮时显示二级菜单的效果,涵盖布局设计、脚本编写以及对事件处理的理解。通过这种方式,我们可以为网页用户界面增添更多的交互功能,提升用户体验。

    超炫jQuery实现的图片预览效果

    2. **图片懒加载**:为了优化性能,我们可以使用jQuery实现图片的懒加载。只有当预览窗口接近可视区域时,才加载图片。这可以通过计算预览元素与浏览器视口的距离来实现。 3. **过渡动画**:jQuery提供了丰富的动画...

    jquery 鼠标移入显示悬浮框

    通过以上步骤,你就可以在网页上实现一个基本的jQuery鼠标移入显示悬浮框的效果。这个功能可以应用到各种元素上,比如图片、链接、按钮等,为用户提供更直观的反馈信息。在实际开发中,你可能还需要考虑一些高级特性...

    jQuery实现上传图片预览

    ### jQuery实现上传图片预览 在现代Web开发中,用户交互体验是提升网站吸引力的关键因素之一。其中,图片上传预览功能是许多应用场景中的一个重要环节,例如社交媒体、在线购物平台等。通过使用jQuery库,我们可以...

Global site tag (gtag.js) - Google Analytics