图片切换效果在很多网站上都能看到,是一种常见的广告/活动宣传方式,通常位于网页上端。这个插件是众多图片切换效果的形式中的一种,数据源可在前端配置,也可从后台通JSON格式传输数据,当然,数据格式是固定的。
这个插件的要点在于:1、定时执行的函数不是在插件闭包里;2、在布局上如何布局;3、什么时候执行动画,什么时候暂停动画,以及jQuery的动画操作。
在这里用到的动画函数有:
动画
1、stop() 方法停止当前正在运行的动画。
语法
$(selector).stop(stopAll,goToEnd)
参数 描述
stopAll 可选。规定是否停止被选元素的所有加入队列的动画。
goToEnd
可选。规定是否允许完成当前的动画。
该参数只能在设置了 stopAll 参数时使用。
2、fadeIn() 方法使用淡入效果来显示被选元素,假如该元素是隐藏的。
语法
$(selector).fadeIn(speed,callback)
参数 描述
speed
可选。规定元素从隐藏到可见的速度。默认为 "normal"。
可能的值:
毫秒 (比如 1500)
"slow"
"normal"
"fast"
在设置速度的情况下,元素从隐藏到可见的过程中,会逐渐地改变其透明度(这样会创造淡入效果)。
callback
可选。fadeIn 函数执行完之后,要执行的函数。
如需学习更多有关 callback 的内容,请访问我们的 jQuery Callback 这一章。
除非设置了 speed 参数,否则不能设置该参数。
3、siblings() 获得匹配集合中每个元素的同胞(同辈元素 下同),通过选择器进行筛选是可选的。
语法
.siblings(selector)
参数 描述
selector 字符串值,包含用于匹配元素的选择器表达式。
4、fadeOut() 方法使用淡出效果来隐藏被选元素,假如该元素是隐藏的。
语法
$(selector).fadeOut(speed,callback)
参数 描述
speed
可选。规定元素从可见到隐藏的速度。默认为 "normal"。
可能的值:
毫秒 (比如 1500)
"slow"
"normal"
"fast"
在设置速度的情况下,元素从可见到隐藏的过程中,会逐渐地改变其透明度(这样会创造淡出效果)。
callback
可选。fadeOut 函数执行完之后,要执行的函数。
如需学习更多有关 callback 的内容,请访问我们的 jQuery Callback 这一章。
除非设置了 speed 参数,否则不能设置该参数。
效果图预览
插件JS
1 ; 2 function nhsdShowImgA($imgA, $pTitleDiv, index) { 3 var newhref = $pTitleDiv.find(\'a\').eq(index).attr(\'href\'); 4 $imgA.attr(\'href\', newhref).find(\'img\').eq(index).stop(true, true).fadeIn().siblings().fadeOut(); 5 $pTitleDiv.find(\'a\').removeClass(\'scrolla_pdiv_current\').css(\'opacity\', \'0.7\').eq(index).css(\'opacity\', \'1\').addClass(\'scrolla_pdiv_current\'); 6 } 7 (function ($, window, document, undefined) { 8 var defaults = { 9 \'imgsConfigData\': [ 10 { 11 \'imgsrc\': \'/Images/ImgScrollA/1.jpg\', 12 \'alt\': \'笑傲江湖\', 13 \'href\': \'http://www.cnblogs.com/nhsd/\', 14 \'title\': \'笑傲江湖\' 15 }, { 16 \'imgsrc\': \'/Images/ImgScrollA/2.jpg\', 17 \'alt\': \'天龙八部\', 18 \'href\': \'http://www.cnblogs.com/nhsd/\', 19 \'title\': \'天龙八部\' 20 }, { 21 \'imgsrc\': \'/Images/ImgScrollA/3.jpg\', 22 \'alt\': \'神雕侠女\', 23 \'href\': \'http://www.cnblogs.com/nhsd/\', 24 \'title\': \'神雕侠女\' 25 }, { 26 \'imgsrc\': \'/Images/ImgScrollA/4.jpg\', 27 \'alt\': \'倚天屠龙记\', 28 \'href\': \'http://www.cnblogs.com/nhsd/\', 29 \'title\': \'倚天屠龙记\' 30 }, { 31 \'imgsrc\': \'/Images/ImgScrollA/5.jpg\', 32 \'alt\': \'三国演义\', 33 \'href\': \'http://www.cnblogs.com/nhsd/\', 34 \'title\': \'三国演义\' 35 }], 36 \'isAjaxData\': false, 37 \'getDataURL\': \'\' 38 }; 39 40 $.fn.nhsdImgScrollA = function (options) { 41 var $parentDiv = $(this); 42 var $parentDivId = $parentDiv.attr(\'id\'); 43 var $pDiv = \'\'; 44 var $imgA = \'\'; 45 var $pTitleDiv = \'\'; 46 $parentDiv.html(""); 47 var $opts = $.extend({}, defaults, options); 48 if ($opts.isAjaxData != false) { 49 var ajaxdata = { \'type\': \'\', \'id\': \'\', \'sort\': \'\' };//预留字段 50 $.ajax({ 51 url: $opts.getDataURL, 52 cache: false, 53 data: { "configData": ajaxdata }, 54 type: "get", //提交方式 55 beforeSend: function () { 56 $parentDiv.html(\'精彩稍候开启...\'); 57 }, 58 success: function (data) { 59 $parentDiv.html(); 60 if (data != null && data.length > 0) { 61 generateDom($.parseJSON(data)); 62 } else { 63 console.log(\'加载数据格式异常...\'); 64 } 65 }, 66 error: function () { 67 //出错异常 68 console.log(\'加载数据异常...\'); 69 } 70 }); 71 } else { 72 generateDom($opts.imgsConfigData); 73 } 74 75 function generateDom(data) { 76 $pDiv = $(\'<div></div>\', { \'class\': \'scrolla_pdiv\' }).appendTo($(\'#\' + $parentDivId)); 77 $imgA = $(\'<a></a>\', { \'href\': \'javascropt:void(0);\', \'class\': \'scrolla_pdiv_a\' }).appendTo($pDiv); 78 $pTitleDiv = $(\'<div></div>\', { \'class\': \'scrolla_pdiv_div\' }).appendTo($pDiv); 79 for (var i = 0; i < data.length; i++) { 80 var d = data[i]; 81 $(\'<img/>\', { \'src\': d.imgsrc, \'alt\': d.alt, \'style\': \'display:block;\' }).appendTo($imgA); 82 var $atitle = $(\'<a></a>\', { \'href\': d.href, \'style\': \'opacity:0.7\' }).appendTo($pTitleDiv); 83 $(\'<span></span>\').html(d.title).appendTo($atitle); 84 } 85 initEvent(); 86 } 87 88 function initEvent() { 89 var index = 0; 90 var len = $imgA.find(\'img\').length; 91 var scTime = null; 92 $pTitleDiv.find(\'a\').mouseover(function () { 93 index = $pTitleDiv.find(\'a\').index(this); 94 nhsdShowImgA($imgA, $pTitleDiv, index); 95 }).eq(0).mouseover(); 96 $pDiv.hover(function () { 97 if (scTime) { 98 clearInterval(scTime); 99 } 100 }, function () { 101 scTime = setInterval(function () { 102 nhsdShowImgA($imgA, $pTitleDiv, index); 103 index++; 104 if (index == len) { 105 index = 0; 106 } 107 }, 3000); 108 }).trigger(\'mouseleave\'); 109 } 110 return this; 111 } 112 })(jQuery, window, document);
CSS样式
1 #dv { 2 margin: 0 auto; 3 width: 966px; 4 border: 1px solid; 5 } 6 7 .scrolla_pdiv { 8 width: 966px; 9 height: 300px; 10 position: absolute; 11 } 12 13 .scrolla_pdiv a img { 14 width: 966px; 15 height: 300px; 16 position: absolute; 17 overflow: hidden; 18 } 19 20 .scrolla_pdiv div { 21 /*position: absolute; 22 text-align: center; 23 width: 966px;*/ 24 } 25 26 .scrolla_pdiv div a { 27 width: 182px; 28 height: 30px; 29 overflow: hidden; 30 background-color: #444444; 31 margin-right: 1px; 32 display: inline-block; 33 text-align: center; 34 padding: 0 5px; 35 line-height: 2em; 36 text-decoration: none; 37 color: #ffffff; 38 } 39 40 .scrolla_pdiv div a span { 41 font-size: 12px; 42 display: block; 43 } 44 45 .scrolla_pdiv_div { 46 position: absolute; 47 text-align: center; 48 width: 966px; 49 height: 30px; 50 bottom: 0; 51 } 52 53 .scrolla_pdiv div a:hover { 54 text-decoration: underline; 55 } 56 57 .scrolla_pdiv div .scrolla_pdiv_current { 58 background: url(/Images/Extend/adindex.gif) no-repeat center 27px #37A7D7; 59 } 60 61 .scrolla_pdiv_a { 62 }
HTML页面
1 <html> 2 <head> 3 <meta name="viewport" content="width=device-width" /> 4 <title>Index</title> 5 <script src="/Scripts/Extend/nhsdImgScrollA.js"></script> 6 <link href="/CSS/IndexScroll/imageScrollA2.css" rel="stylesheet" /> 7 <script type="text/javascript"> 8 $(document).ready(function () { 9 10 var imgsConfigData = [//这里配置了,就不需要后台叫数据 11 { 12 \'imgsrc\': \'/Images/IndexScroll/1.jpg\', 13 \'alt\': \'笑傲江湖\', 14 \'href\': \'http://www.cnblogs.com/nhsd/\', 15 \'title\': \'笑傲江湖\' 16 }, { 17 \'imgsrc\': \'/Images/IndexScroll/2.jpg\', 18 \'alt\': \'天龙八部\', 19 \'href\': \'http://www.cnblogs.com/nhsd/\', 20 \'title\': \'天龙八部\' 21 }, { 22 \'imgsrc\': \'/Images/IndexScroll/3.jpg\', 23 \'alt\': \'神雕侠女\', 24 \'href\': \'http://www.cnblogs.com/nhsd/\', 25 \'title\': \'神雕侠女\' 26 }, { 27 \'imgsrc\': \'/Images/IndexScroll/4.jpg\', 28 \'alt\': \'倚天屠龙记\', 29 \'href\': \'http://www.cnblogs.com/nhsd/\', 30 \'title\': \'倚天屠龙记\' 31 }, { 32 \'imgsrc\': \'/Images/IndexScroll/5.jpg\', 33 \'alt\': \'三国演义\', 34 \'href\': \'http://www.cnblogs.com/nhsd/\', 35 \'title\': \'三国演义\' 36 } 37 ]; 38 $("#nhsdscrolladiv").nhsdImgScrollA({ \'imgsConfigData\': imgsConfigData }); 39 }); 40 </script> 41 </head> 42 <body> 43 <div class="index_main"> 44 <div id="nhsdscrolladiv" class="index_pics"> 45 46 </div> 47 </div> 48 </body> 49 </html>
另个是通知CSS样式,请根据需要加入
1 * { 2 margin: 0; 3 padding: 0; 4 } 5 6 body { 7 font-size: 12px; 8 font-family: Verdana,"宋体",Arial,Helvetica,sans-serif; 9 margin: 0; 10 padding: 0; 11 line-height: 160%; 12 color: #333; 13 } 14 15 html, body { 16 color: #000; 17 background: #fff; 18 } 19 20 p { 21 display: block; 22 -webkit-margin-before: 1em; 23 -webkit-margin-after: 1em; 24 -webkit-margin-start: 0px; 25 -webkit-margin-end: 0px; 26 } 27 28 body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, button, textarea, p, blockquote, th, td { 29 margin: 0; 30 padding: 0; 31 list-style: none; 32 } 33 34 div { 35 display: block; 36 } 37 38 a { 39 text-decoration: none; 40 color: #333; 41 } 42 43 a:hover { 44 color: #14a0cd; 45 text-decoration:underline; 46 } 47 48 img { 49 border: none; 50 line-height: 0; 51 margin: 0; 52 padding: 0; 53 vertical-align: bottom; 54 } 55 56 .inform_index_div { 57 margin: 3px; 58 } 59 60 .div_main { 61 margin: 0 auto; 62 width: 970px; 63 overflow: hidden; 64 } 65 66 .div_main_header { 67 overflow: hidden; 68 margin-bottom: 10px; 69 height: 75px; 70 text-align: right; 71 } 72 73 .div_main_header_logo { 74 float: left; 75 } 76 77 .div_main_header_p { 78 } 79 80 .div_main_header_navight { 81 background: url(/Images/Extend/nav_bg.jpg) no-repeat; 82 height: 41px; 83 line-height: 41px; 84 padding: 0 5px; 85 margin-bottom: 15px; 86 width: 690px; 87 float: right; 88 } 89 90 .div_main_header_navight ul li { 91 float: left; 92 text-align: center; 93 font-size: 16px; 94 font-family: "微软雅黑"; 95 background: url(/Images/Extend/nav_line.jpg) no-repeat right center; 96 } 97 98 .div_main_header_navight ul li a { 99 color: #fff; 100 text-shadow: 1px 1px #ff5000; 101 display: inline-block; 102 width: 115px; 103 } 104 105 .div_main_content { 106 } 107 108 .div_main_footer { 109 text-align: center; 110 } 111 112 .div_main_footer a { 113 color: #666; 114 } 115 116 .div_main_footer_link_title { 117 font-weight: bold; 118 color: #999; 119 } 120 121 .div_main_footer_link2 span { 122 margin: 8px; 123 } 124 125 .div_main_footer_link1 a { 126 margin: 4px; 127 } 128 129 .phone_a_style { 130 color: red; 131 font-weight: bold; 132 font-size: 1.2em; 133 } 134 135 .phone_a_font_style { 136 font-size: 14px; 137 font-family: "宋体"; 138 } 139 140 .index_main { 141 height: 800px; 142 border: 1px solid #6699ff; 143 } 144 145 .index_pics { 146 width: 966px; 147 height: 320px; 148 border: 1px solid red; 149 overflow: hidden; 150 } 151 152 .index_buy_flow { 153 width: 966px; 154 height: 80px; 155 border: 1px solid red; 156 } 157 158 .index_repast { 159 } 160 161 .index_repast_navight { 162 } 163 164 .index_repast_context { 165 }
PS:
欢迎加群: 258387392 讨论交流。