Bootstrap 轮播图技巧

本文介绍了在Bootstrap3中实现轮播图的四种方法,包括使用`<img>`标签、设置div背景、根据图片名称拼接地址以及利用data-image属性。强调了方法4的灵活性和响应式设计,通过JS动态设置背景图片,实现不同屏幕宽度下的图片适配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

bootstrap的使用让页面开发的速度变得更快,在这里就着重解析一下bootstrap3里轮播图模块,和不同情况(屏幕宽度)下轮播图图片大小如何做到响应式切换.

下面代码即是bootstrap3轮播图模块解析:

 

 
  1. <section id="banner">

  2. <!-- 当同一个页面中,同时存在多个轮播图时,不同的轮播图以及他的控制按钮,需要有相对应id值 -->

  3. <div id="carousel-example-generic" class="carousel slide" data-ride="carousel">

  4. <!-- 控制翻页的圆点 -->

  5. <ol class="carousel-indicators">

  6. <!-- data-target 指向被控制的轮播图 -->

  7. <!-- data-slide-to 表示点击这个点时,需要跳转到第几页 -->

  8. <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>

  9. <li data-target="#carousel-example-generic" data-slide-to="1"></li>

  10. <li data-target="#carousel-example-generic" data-slide-to="2"></li>

  11. <li data-target="#carousel-example-generic" data-slide-to="3"></li>

  12. </ol>

  13.  
  14. <!-- 轮播图内部显示的内容 -->

  15. <div class="carousel-inner" role="listbox">

  16. <!-- 一个item表示一页 -->

  17. <!-- active表示当前正在显示的一页 -->

  18. <div class="item active" >

  19. <!--<img src="./img/slide_01_2000x410.jpg" alt="...">-->

  20. <!-- carousel-caption 轮播图中的字幕 -->

  21. <!-- 显示在轮播图中心偏下的位置 -->

  22. <!--<div class="carousel-caption">-->

  23. <!--ABCDEFG-->

  24. <!--</div>-->

  25. </div>

  26. <div class="item" >

  27. </div>

  28. <div class="item" >

  29. </div>

  30. <div class="item" >

  31. </div>

  32. </div>

  33. <!-- Controls 左右的翻页箭头 -->

  34. <!-- 翻页控制中,href属性指向所控制的轮播图 -->

  35. <!-- data-slide 表示翻页的方向 -->

  36. <a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">

  37. <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>

  38. <span class="sr-only">Previous</span>

  39. </a>

  40. <a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">

  41. <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>

  42. <span class="sr-only">Next</span>

  43. </a>

  44. </div>

  45. </section>

 

 

轮播图的图片需要添加到<div class="item">中去

那么添加图片的方式有几种呢?

这里提供几种可行的图片添加方式:

方法1:最简单的办法

div中添加 <img> 标签来实现

 

 
  1. <div class="item">

  2. <img src="./img/slide_02_2000x410.jpg" alt="...">

  3. <div class="carousel-caption">

  4. </div>

  5. </div>

缺点:

 

这种方法需要设置较为复杂的CSS样式来让图片超过屏幕宽度时让图片居中显示并overflow:hidden

 

方法2:设置div的背景来实现

css代码:

 

            background: url('图片.jpg') center center no-repeat;

 

并设置background-size:cover 根据短的边填满图片

优点是设置比较简单,缺点也很明显,需要给每一个div添加图片地址,后续修改也比较麻烦.

图片是获取的内容,在网页设计中也不应该由css来获取,应该通过逻辑来获取图片的地址
 

方法3:当你的图片名有严格的名称如 

slide_00_2000x410.jpg

slide_01_2000x410.jpg

slide_02_2000x410.jpg

slide_03_2000x410.jpg

slide_00_640x360.jpg

slide_01_640x360.jpg

slide_02_640x360.jpg

 

slide_03_640x360.jpg

这种条件下可以通过JS拼接 <div class= "item">的 background-image地址来实现

JS代码如下:

 
  1. $(function () {

  2. var itemArr = $(' .item');

  3. console.log(itemArr);

  4. // 根据不同的item,设置不同的图片

  5. itemArr.each(function (index,item) {

  6. //通过index,来构建图片的url

  7. var imgURL = './img/slide_0'+index +'_2000x410.jpg';

  8. //设置背景图片的URL地址

  9. item.style.backgroundImage = "url('" + imgURL +"')";

  10. })

  11. });



但是方法3 的局限性太大了,随便点开一个门户网站查看它的轮播图图片地址都时一堆"乱码"

 

方法4:使用来data-image 来巧妙的获取来图片的路径,从而避开了对图片地址的依赖

首先需要设置div:

 

 
  1. <div class="item" data-image="./img/slide_02_2000x410.jpg">

  2. <!--<img src="./img/slide_02_2000x410.jpg" alt="...">-->

  3. <div class="carousel-caption">

  4. </div>

  5. </div>


JS代码:

 

 

 
  1. $(function () {

  2. //轮播图片的设置

  3. var itemArr = $('.item');

  4. itemArr.each(function (index, item) {

  5. //获取data-image里面的数据

  6. var imageURL = item.dataset.image;

  7. item.style.backgroundImage = "url('" + imageURL +"')";

  8. });

  9. });

 

 

这样就可以方便的通过修改data-image的值来更换页面,整体的代码也更加干练.

--------------------------------------------------------------------------------------------------------------------

响应式页面的轮播图的图片也应该是响应式的,大屏幕轮播图用大图,小平面轮播图用小图,下面的代码可以通过方法4实现轮播图的响应式

div设置:

 

 
  1. <div class="item" data-large-image="./img/slide_03_2000x410.jpg" data-small-image="./img/slide_03_640x340.jpg">

  2. <!--<img src="./img/slide_03_2000x410.jpg" alt="...">-->

  3. <div class="carousel-caption">

  4. </div>

  5. </div>

JS代码:

 
  1. //当屏幕大小发生变化是时,根据宽度来改变图片的大小

  2. //窗口宽度大小便是时触发的事件

  3. $(window).on('resize',function () {

  4. //获取当前屏幕额的宽度

  5. var screenWidth = $(window).width();

  6. console.log(screenWidth);

  7. var itemArr = $('#banner > .carousel > .carousel-inner> .item');

  8. itemArr.each(function (index, item) {

  9. //获取data-image里面的数据

  10. var largeImageURL = item.dataset.largeImage;

  11. var smallImageURL = item.dataset.smallImage;

  12. //当屏幕大小小于768时用640*360大小的图片

  13. if(screenWidth<768){

  14. item.style.backgroundImage = "url('" + smallImageURL +"')";

  15. //根据屏幕宽度调整图片高度

  16. var imageHeight = screenWidth /640 *360;

  17. item.style.height =imageHeight +"px";

  18. }else {

  19. item.style.backgroundImage = "url('" + largeImageURL +"')";

  20. item.style.height='410px';

  21. }

  22.  
  23. });

  24.  
  25. }).trigger('resize'); //让窗口打开的时候就执行一次

这样设置之后轮播图的大小就会根据页面宽度来响应啦.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值