jQuery焦点图切换特效插件封装实例


Posted in Javascript onAugust 18, 2013

网站焦点图是一种网站内容的展现形式,可简单理解为一张图片或多张图片展现在网页上就是网站焦点图。在网站很明显的位置,用图片组合播放的形式,类似焦点新闻的意思只不过加上了图片。一般多使用在网站首页版面或频道首页版面,因为是通过图片的形式,所以有一定的吸引性、视觉吸引性。容易引起访问者的点击,据国外的设计机构调查统计,网站焦点图的点击率明显高于纯文字,转化率高于文字标题5倍。由此看来焦点图的能让游客对企业的第一印象大大提升,下面就给大家介绍一个我们项目中封装使用的漂亮大气的全屏焦点图。如下图所示:

jQuery焦点图切换特效插件封装实例

可添加多个 图片,设定图片链接,导航随鼠标移动切换图片,在发布文章的时候把图片压缩了有点失真。

使用本特效首先需要引入对jquery的使用,插件已经封装成jquery函数,代码如下:

/*
* jQuery图片轮播(焦点图)插件
*/
(function ($) {
    $.fn.slideBox = function (options) {
        var defaults = {
            direction: 'left',
            duration: 0.6,
            easing: 'swing',
            delay: 3,
            startIndex: 0,
            hideClickBar: true,
            clickBarRadius: 5,
            hideBottomBar: false
        };
        var settings = $.extend(defaults, options || {});
        var wrapper = $(this),
        ul = wrapper.children('ul.items'),
        lis = ul.find('li'),
        firstPic = lis.first().find('img');
        var li_num = lis.size(),
        li_height = 0,
        li_width = 0;
        var order_by = 'ASC';
        var init = function () {
            if (!wrapper.size()) return false;
            li_height = lis.first().height();
            li_width = lis.first().width();
            wrapper.css({
                width: li_width + 'px',
                height: li_height + 'px'
            });
            lis.css({
                width: li_width + 'px',
                height: li_height + 'px'
            });
            if (settings.direction == 'left') {
                ul.css('width', li_num * li_width + 'px')
            } else {
                ul.css('height', li_num * li_height + 'px')
            };
            ul.find('li:eq(' + settings.startIndex + ')').addClass('active');
            if (!settings.hideBottomBar) {
                var tips = $('<div class="tips"></div>').css('opacity', 0.6).appendTo(wrapper);
                var title = $('<div class="title"></div>').html(function () {
                    var active = ul.find('li.active').find('a'),
                    text = active.attr('title'),
                    href = active.attr('href');
                    return $('<a>').attr('href', href).text(text)
                }).appendTo(tips);
                var nums = $('<div class="nums"></div>').hide().appendTo(tips);
                lis.each(function (i, n) {
                    var a = $(n).find('a'),
                    text = a.attr('title'),
                    href = a.attr('href'),
                    css = '';
                    i == settings.startIndex && (css = 'active');
                    $('<a>').attr('href', href).text(text).addClass(css).css('borderRadius',
settings.clickBarRadius + 'px').mouseover(function () {
    $(this).addClass('active').siblings().removeClass('active');
    ul.find('li:eq(' + $(this).index() + ')').addClass('active').siblings
().removeClass('active');
    start();
    stop()
}).appendTo(nums)
                });
                if (settings.hideClickBar) {
                    tips.hover(function () {
                        nums.animate({
                            top: '0px'
                        },
                        'fast')
                    },
                    function () {
                        nums.animate({
                            top: tips.height() + 'px'
                        },
                        'fast')
                    });
                    nums.show().delay(2000).animate({
                        top: tips.height() + 'px'
                    },
                    'fast')
                } else {
                    nums.show()
                }
            };
            lis.size() > 1 && start()
        };
        var start = function () {
            var active = ul.find('li.active'),
            active_a = active.find('a');
            var index = active.index();
            if (settings.direction == 'left') {
                offset = index * li_width * -1;
                param = {
                    'left': offset + 'px'
                }
            } else {
                offset = index * li_height * -1;
                param = {
                    'top': offset + 'px'
                }
            };
            wrapper.find('.nums').find('a:eq(' + index + ')').addClass('active').siblings().removeClass
('active');
            wrapper.find('.title').find('a').attr('href', active_a.attr('href')).text(active_a.attr
('title'));
            ul.stop().animate(param, settings.duration * 1000, settings.easing,
            function () {
                active.removeClass('active');
                if (order_by == 'ASC') {
                    if (active.next().size()) {
                        active.next().addClass('active')
                    } else {
                        order_by = 'DESC';
                        active.prev().addClass('active')
                    }
                } else if (order_by == 'DESC') {
                    if (active.prev().size()) {
                        active.prev().addClass('active')
                    } else {
                        order_by = 'ASC';
                        active.next().addClass('active')
                    }
                }
            });
            wrapper.data('timeid', window.setTimeout(start, settings.delay * 1000))
        };
        var stop = function () {
            window.clearTimeout(wrapper.data('timeid'))
        };
        wrapper.hover(function () {
            stop()
        },
        function () {
            start()
        });
        var imgLoader = new Image();
        imgLoader.onload = function () {
            imgLoader.onload = null;
            init()
        };
        imgLoader.src = firstPic.attr('src')
    }
})(jQuery);

下面是图片焦点图的css样式;
div.slideBox{ position:relative;height:300px; overflow:hidden; margin:0 auto;}
    div.slideBox ul.items{ position:absolute; float:left; background:none; list-style:none; padding:0px; margin:0px;}
    div.slideBox ul.items li{ float:left; background:none; list-style:none; padding:0px; margin:0px;}
    div.slideBox ul.items li a{ float:left; line-height:normal !important; padding:0px !important; border:none/*For IE.ADD.JENA.201206300844*/;}
    div.slideBox ul.items li a img{ margin:0px !important; padding:0px !important; display:block; border:none/*For IE.ADD.JENA.201206300844*/;}
    div.slideBox div.tips{ position:absolute; bottom:0px; width:100%; height:50px; background-color:#000; overflow:hidden;}
    div.slideBox div.tips div.title{ position:absolute; left:0px; top:0px; height:100%;}
    div.slideBox div.tips div.title a{ color:#FFF; font-size:18px; line-height:50px; margin-left:10px; text-decoration:none;}
    div.slideBox div.tips div.title a:hover{ text-decoration:underline !important;}
    div.slideBox div.tips div.nums{ position:absolute; right:0px; top:0px; height:100%;}
    div.slideBox div.tips div.nums a{ display:inline-block; >float:left/*For IE.ADD.JENA.201206300844*/; width:20px; height:20px; background-color:#FFF; text-indent:-99999px; margin:15px 10px 0px 0px;}
    div.slideBox div.tips div.nums a.active{ background-color:#093;}

页面配置:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
    <script src="Scripts/sliderbox.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            $(".slideBox").slideBox();
        })
    </script>
</head>
<body>
    <div class="slideBox" >
                <ul class="items">
                <li><a href="#" title="这里是测试标题一"><img src="/image/1.png" width="1000" height="300"></a></li>
                <li><a href="#" title="这里是测试标题2"><img src="/image/2.png" width="1000" height="300"></a></li>
                <li><a href="#" title="这里是测试标题3"><img src="/image/3.png" width="1000" height="300"></a></li>
                <li><a href="#" title="这里是测试标题4"><img src="/image/4.png" width="1000" height="300"></a></li>
                <li><a href="#" title="这里是测试标题5"><img src="/image/5.png" width="1000" height="300"></a></li>
            </ul>
</div>
</body>
</html>

只需引入js并在页面中调用$(选择器).slideBox();便可实现如上效果,同时我们也可以在sliebox({})里面指定操作,比如起始图片,方向等。

这个是在前段时间一个项目中用到的图片轮播器插件,感觉还可以的可以直接拿来用。

Javascript 相关文章推荐
使用JavaScript 实现各种跨域的方法
May 08 Javascript
JQuery EasyUI 数字格式化处理示例
May 05 Javascript
Node.js中HTTP模块与事件模块详解
Nov 14 Javascript
基于jQuery实现下拉框
Nov 24 Javascript
jquery插件star-rating.js实现星级评分特效
Apr 15 Javascript
jQuery实现tab选项卡效果的方法
Jul 08 Javascript
JavaScipt中栈的实现方法
Feb 17 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
Mar 01 Javascript
jquery实现左右无缝轮播图
Jul 31 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
Aug 28 Javascript
JS中touchstart事件与click事件冲突的解决方法
Mar 12 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
Feb 27 Javascript
JavaScript生成GUID的多种算法小结
Aug 18 #Javascript
实测jquery data()如何存值
Aug 18 #Javascript
js兼容的placeholder属性详解
Aug 18 #Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
Aug 18 #Javascript
jquery验证表单中的单选与多选实例
Aug 18 #Javascript
JS+CSS实现一个气泡提示框
Aug 18 #Javascript
JS中for循序中延迟加载动态效果的具体实现
Aug 18 #Javascript
You might like
php Session存储到Redis的方法
2013/11/04 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
php截取字符串函数分享
2015/02/02 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
php获取远程文件内容的函数
2015/11/02 PHP
php微信浏览器分享设置以及回调详解
2016/08/01 PHP
作为PHP程序员你要知道的另外一种日志
2018/07/30 PHP
PHP关于foreach复制知识点总结
2019/01/28 PHP
调试php程序的简单步骤
2019/10/04 PHP
Mootools 1.2教程 输入过滤第一部分(数字)
2009/09/15 Javascript
javascript Array.sort() 跨浏览器下需要考虑的问题
2009/12/07 Javascript
NodeJS框架Express的模板视图机制分析
2011/07/19 NodeJs
js Function类型
2011/12/04 Javascript
jQuery contains过滤器实现精确匹配使用方法
2013/04/12 Javascript
利用浏览器全屏api实现js全屏
2014/01/16 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
js字符串完全替换函数分享
2014/12/03 Javascript
jQuery插件windowScroll实现单屏滚动特效
2015/07/14 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
2016/09/09 Javascript
Angular表单验证实例详解
2016/10/20 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
python数据处理实战(必看篇)
2017/06/11 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
2018/07/12 Python
python爬虫刷访问量 2019 7月
2019/08/01 Python
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
审计班子对照检查材料
2014/08/27 职场文书
2014年应急管理工作总结
2014/11/26 职场文书
2014年女职工工作总结
2014/11/27 职场文书
安全教育培训心得体会
2016/01/15 职场文书
Python实战之实现简易的学生选课系统
2021/05/25 Python