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实现 获取鼠标点击位置坐标的方法
Apr 12 Javascript
JavaScript按位运算符的应用简析
Feb 04 Javascript
jQuery实现3D文字特效的方法
Mar 10 Javascript
解决jquery实现的radio重新选中的问题
Jul 03 Javascript
最简单的JavaScript图片轮播代码(两种方法)
Dec 18 Javascript
基于JavaScript实现购物网站商品放大镜效果
Sep 06 Javascript
Angular2学习笔记——详解NgModule模块
Dec 02 Javascript
js HTML5 canvas绘制图片的方法
Sep 08 Javascript
微信小程序异步处理详解
Nov 10 Javascript
JavaScript实用代码小技巧
Aug 23 Javascript
vuejs点击class变化的实例
Sep 05 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
Feb 10 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 disk_free_space 返回目录可用空间
2010/05/10 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
js实现简单锁屏功能实例
2015/05/27 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
2016/05/12 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
JavaScript中removeChild 方法开发示例代码
2016/08/15 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
详解vue-cli 接口代理配置
2017/12/13 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
Vue-cli@3.0 插件系统简析
2018/09/05 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
2018/11/29 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
Python基础之函数用法实例详解
2014/09/10 Python
零基础写python爬虫之使用Scrapy框架编写爬虫
2014/11/07 Python
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
Python中数字以及算数运算符的相关使用
2015/10/12 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
美国最灵活的移动提供商:Tello
2017/07/18 全球购物
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
班队活动设计方案
2014/01/30 职场文书
《乌塔》教学反思
2014/02/17 职场文书
目标责任书范本
2014/04/16 职场文书
出差报告范文
2014/11/06 职场文书
2016特色励志班级口号
2015/12/24 职场文书
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL