幻灯片/轮播

基于Bootstrap carousel扩展jQuery旋转木马

阿里云


这是一款在原生 Bootstrap carousel 之上进行扩展而制作的实用 jQuery 旋转木马插件。该旋转木马插件在不改变原有的 HTML 标签的情况下,通过 JS 来重构旋转木马的结构,并结合 CSS 样式来完成旋转木马的显示。

使用方法:

使用该旋转木马插件需要在页面中引入 jquery 和 Bootstrap 的相关文件。

也想出现在这里?联系我们
创客主机
  1. <link rel="stylesheet" href="css/bootstrap.min.css">
  2. <script type="text/javascript" src="js/jquery.min.js"></script>
  3. <script type="text/javascript" src="js/bootstrap.min.js"></script>

HTML 结构:

该旋转木马插件使用原生的 Bootstrap Carousel 插件的 HTML 结构。

  1. <div id="example" class="carousel slide" data-ride="carousel">
  2.   <div class="carousel-inner">
  3.     <ul class="row item active">
  4.       <li class="col-xs-4">
  5.         <img src="1.jpg" srcset="1.jpg,1@2x.jpg" class="img-responsive">
  6.       </li>
  7.       <li class="col-xs-4">
  8.         <img src="2.jpg" srcset="2.jpg,2@2x.jpg" class="img-responsive">
  9.       </li>
  10.       <li class="col-xs-4">
  11.         <img src="3.jpg" srcset="3.jpg,3@2x.jpg" class="img-responsive">
  12.       </li>
  13.     </ul>
  14.     <ul class="row item">
  15.       <li class="col-xs-4">
  16.         <img src="4.jpg" srcset="4.jpg,4@2x.jpg" class="img-responsive">
  17.       </li>
  18.       <li class="col-xs-4">
  19.         <img src="5.jpg" srcset="5.jpg,5@2x.jpg" class="img-responsive">
  20.       </li>
  21.       <li class="col-xs-4">
  22.         <img src="6.jpg" srcset="6.jpg,6@2x.jpg" class="img-responsive">
  23.       </li>
  24.     </ul>
  25.   </div>
  26.  
  27.   <a class="carousel-control left" href="#example" data-slide="prev">Previous</a>
  28.   <a class="carousel-control right" href="#example" data-slide="next">Next</a>
  29.  
  30. </div>

CSS 样式:

为旋转木马添加以下一些必要的 CSS 样式。

  1. .carousel[data-shift="1"] .carousel-inner > .item {
  2.   -webkit-transition: all .5s ease-in-out;
  3.   transition: all .5s ease-in-out;
  4. }
  5.  
  6. .carousel .carousel-inner > .item.row { margin: 0; }
  7.  
  8. .carousel .carousel-control {
  9.   background: none;
  10.   color: transparent;
  11.   overflow: hidden;
  12.   text-shadow: none;
  13.   -webkit-transition: all .3s ease-in-out;
  14.   transition: all .3s ease-in-out;
  15.   width: 30px;
  16. }
  17.  
  18. .carousel .carousel-control:before {
  19.   color: #444;
  20.   font-family: 'Glyphicons Halflings';
  21.   position: absolute;
  22.   top: 50%;
  23.   -webkit-transform: translateY(-50%);
  24.   transform: translateY(-50%);
  25.   width: 30px;
  26. }
  27.  
  28. .carousel .carousel-control:after {
  29.   border-radius: 50%;
  30.   box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.7);
  31.   content: '';
  32.   height: 60%;
  33.   position: absolute;
  34.   top: 50%;
  35.   -webkit-transform: translateY(-50%);
  36.   transform: translateY(-50%);
  37.   -webkit-transition: all .3s ease-in-out;
  38.   transition: all .3s ease-in-out;
  39.   width: 100%;
  40. }
  41.  
  42. .carousel .carousel-control:hover:after { 
  43.   box-shadow: 0 0 30px 0 rgba(0, 0, 0, 0.7); 
  44. }
  45.  
  46. .carousel .carousel-control.left { left: -30px; }
  47.  
  48. .carousel .carousel-control.left:before { content: '\e079'; }
  49.  
  50. .carousel .carousel-control.left:after { right: -100%; }
  51.  
  52. .carousel .carousel-control.right { right: -30px; }
  53.  
  54. .carousel .carousel-control.right:before { content: '\e080'; }
  55.  
  56. .carousel .carousel-control.right:after { left: -100%; }

初始化插件:

最后可以通过下面的 JavaScript(jQuery)代码来对旋转木马进行重构。

  1. var carousels = $('.carousel');
  2. carousels.each(function() {
  3.   var $obj = $(this);
  4.   var $inner = $obj.find('.carousel-inner');
  5.  
  6.   var id = 'uuid' + new Date().getTime();
  7.   $obj.addClass(id);
  8.  
  9.   if ($obj.data('shift') === 1) {
  10.     var items = $obj.find('.item > [class*="col-"]'),
  11.         visibleCnt = $obj.find('.item:first [class*="col-"]').length,
  12.         wrapper = "";
  13.  
  14.     // 内置CSS样式
  15.     var rule_base = '.carousel.' + id + ' .carousel-inner > .item',
  16.         styles = $('<style></style>'),
  17.         rules = [];
  18.         rules[0] = rule_base + '.next {left: ' + (100 / visibleCnt) + '%; transform: none;}';
  19.         rules[1] = rule_base + '.active {left: 0;}';
  20.         rules[2] = rule_base + '.active.left {left: -' + (100 / visibleCnt) + '%; transform: none;}';
  21.         rules[3] = rule_base + '.next.left {left: 0;}';
  22.         rules[4] = rule_base + '.active.right {left: ' + (100 / visibleCnt) + '%; transform: none;}';
  23.         rules[5] = rule_base + '.prev.right {left: 0;}';
  24.         rules[6] = rule_base + '.prev {left: -' + (100 / visibleCnt) + '%; transform: none;}';
  25.     for (var i = 0; i < rules.length; i++) {
  26.       styles.append(rules[i]);
  27.     }
  28.     $obj.prepend(styles);
  29.  
  30.     // 重构旋转木马的HTML结构
  31.     for (var i = 0; i < $(items).length; i++) {
  32.       var $item = $(items[i]);
  33.       var parent = $item.parent();
  34.       if (parent.hasClass('item')) {
  35.         if (!wrapper.length) {
  36.           wrapper = parent.clone().removeClass('active').html('');
  37.         }
  38.         $item.unwrap();
  39.       }
  40.  
  41.       var itemGroup = [$item];
  42.       for (var x = 1; x < visibleCnt; x++) {
  43.         var a = i + x;
  44.         var next = $(items[a]);
  45.         if (!next.length) {
  46.           next = $(items[(a - $(items).length)]);
  47.         }
  48.         itemGroup[x] = next.clone();
  49.       }
  50.       var newSet = wrapper.clone().html(itemGroup);
  51.       if (i == 0) {
  52.         newSet.addClass('active');
  53.       }
  54.       newSet.appendTo($inner);
  55.     }
  56.   }
  57. });

基于 Bootstrap carousel 扩展 jQuery 旋转木马

已有 357 人购买
查看演示升级 VIP立刻购买

演示地址 下载地址
收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!