第124天:移动web端-Bootstrap轮播图插件使用

Bootstrap JS插件使用

> 对于BootstrapJS插件,我们只需要将文档实例中的代码粘到我们自己的代码中
> 然后作出相应的样式调整

Bootstrap中轮播图插件叫作Carousel

一、基本的轮播图实现

HTML代码

 1 <!--
 2   以下容器就是整个轮播图组件的整体,
 3   注意该盒子必须加上 class="carousel slide" data-ride="carousel" 表示当前是一个轮播图
 4   bootstrap.js会自动为当前元素添加图片轮播的特效
 5 -->
 6 <div id="轮播图的ID" class="carousel slide" data-ride="carousel">
 7   <!-- ol标签是图片轮播的控制点 -->
 8   <ol class="carousel-indicators">
 9     <!--
10       每一个li就是一个单独的控制点
11         data-target属性就是指定当前控制点控制的是哪一个轮播图,其目的是如果界面上有多个轮播图,便于区分到底控制哪一个
12         data-slide-to属性是指当前的li元素绑定的是第几个轮播项
13       注意,默认必须给其中某个li加上active,展示的时候就是焦点项目
14     -->
15     <li data-target="#轮播图的ID" data-slide-to="0" class="active"></li>
16     <li data-target="#轮播图的ID" data-slide-to="1"></li>
17     <!-- ...更多的 -->
18   </ol>
19   <!--
20     .carousel-inner是所有轮播项的容器盒子,
21     注意role="listbox"代表当前div是一个列表盒子,作用就是给当前div添加一个语义
22   -->
23   <div class="carousel-inner" role="listbox">
24     <!-- 每一个.item就是单个轮播项目,注意默认要给第一个轮播项目加上active,表示为焦点 -->
25     <div class="item active">
26       <!-- 轮播项目中展示的图片 -->
27       <img src="example.jpg" alt="示例图片">
28       <div class="carousel-caption">
29         <!-- 标题或说明性文字,如果不需要,直接删除当前div.carousel-caption -->
30       </div>
31     </div>
32     <div class="item">
33       <!-- ... -->
34     </div>
35     <!-- ... -->
36   </div>
37   <!-- 图片轮播上左右两个控制按钮,分别点击可以滚动到上一张和下一张 -->
38   <!-- 此处需要注意的是 该a链接的href属性必须指向需要控制的轮播图ID -->
39   <!-- 另外a链接中的data-slide="prev"代表点击该链接会滚到上一张,如果设置为next的话则相反 -->
40   <a class="left carousel-control" href="#轮播图的ID" role="button" data-slide="prev">
41     <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
42     <span class="sr-only">上一张</span>
43   </a>
44   <a class="right carousel-control" href="#轮播图的ID" role="button" data-slide="next">
45     <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
46     <span class="sr-only">下一张</span>
47   </a>
48 </div>

二、轮播图使用中的问题

1、由于轮播图片超宽造成的影响

  - 美工为了在不同屏幕下更好地展示将图片两边做的非常宽,但是我们大多数情况的页面宽度都无法满足这样的图片宽度
  - 而且Bootstrap的样式中默认将图片的max-width设置为100%;
  - 造成界面图片缩放
  - 想在一个较小屏幕下展示一个超宽的图片,并让图片居中显示
  + 两种办法:
  (1) 换用背景图的方式,background-position: center center;
  (2)使img元素绝对定位,left:50%,margin-left: -width/2

2、background使用

  - 将容器的高度固定(410px)
  - 将轮播图改为背景显示
  - 由于可能图片的高度不一定是410px
  - 所以需要设置css3中的background-size

3、background-size

  (1)length
  + 如 background-size: 100px 100px,将背景图固定到多大尺寸
  - percentage
  + 如 background-size: 90% 90%,以百分比的形式设置背景大小
  (2)cover
    + 1.背景图片等比例缩放
    + 2.让背景图相对较小边放大到目标容器大小结束
    * 如:一张100\*200的背景图放到一个300\*400的盒子中,最终背景图片的大小是300\*600
    * 因为背景图的较小边为100,将100放大到目标容器300的宽度,放大了3倍,最终结果300\*600
  (3) contain
    + 1.背景图片等比例缩放
    + 2.让背景图相对较大边放大到目标容器大小结束
    * 如:一张100\*200的背景图放到一个300\*400的盒子中,最终背景图片的大小是200\*400
    * 因为背景图的较大边为200,将200放大到目标容器400的高度,放大了2倍,最终结果200\*400

4、图片响应式

  (1)目的
  + 各种终端都需要正常显示图片
  + 移动端应该使用更小(体积)的图片
  (2)实现方式
    + 将元素中直接设置的图片背景删除,换成两个data-属性(如:data-img-sm="小图路径",data-img-lg="大图路径"
    + 通过JS的方式获取屏幕的宽度
    + 判断屏幕宽度是否小于一定的值(如:768
    + 根据判断情况决定使用具体的大图还是小图

三、javascript

1、根据屏幕大小设置轮播图片

 1 var windowWidth = $(window).width();  // 获取屏幕宽度
 2 var isSmallScreen = windowWidth < 768;  // 判断屏幕属于大还是小
 3 // 根据大小为界面上的每一张轮播图设置背景
 4 // $(‘#main_ad > .carousel-inner > .item‘) // 获取到的是一个DOM数组(多个元素)
 5 $(‘#main_ad > .carousel-inner > .item‘).each(function(i, item) {
 6 var $item = $(item);// 因为拿到是DOM对象 需要转换
 7 // var imgSrc = $item.data(isSmallScreen ? ‘image-xs‘ : ‘image-lg‘);
 8 var imgSrc =
 9 isSmallScreen ? $item.data(‘image-xs‘) : $item.data(‘image-lg‘);
10
11 // 设置背景图片
12 $item.css(‘backgroundImage‘, ‘url("‘ + imgSrc + ‘")‘);
13 });

2、window resize事件

由于上一步我们实现的过程是指在页面加载完成判断一次,
- 当用户手动调整页面宽度过后没有及时发生变化,
- 所以我们可以通过windowresize事件中重新完成以上操作来解决这个问题

1 function 窗口变化后执行的函数名(){
2   // 具体的操作
3 }
4 $(window).on(‘resize‘, 窗口变化后执行的函数名);
5 ```
6
7 - 这个事件只会在窗口尺寸发生变化后执行,但是我们需要一开始时执行一次
trigger函数是让window对象立即出发一次
$(window).on(‘resize‘, 窗口变化后执行的函数名).trigger(‘resize‘);

3、小图片不需要使用背景的方式

  - 小图如果还是使用背景的方式,当屏幕特别小时,效果很差
  - 所以当使用小图时,改用img的方式

1 // 因为我们需要小图时 尺寸等比例变化,所以小图时我们使用img方式
2 if (isSmallScreen) {
3   $item.html(‘<img src="‘ + imgSrc + ‘"  />‘);
4 } else {
5   $item.empty();
6 }

  按照目前的情况,如果是小图展示则不需要给容器加上410px的固定高度
  - 所以我们可以通过CSS媒体查询的方式解决

 1 #main_ad > .carousel-inner > .item {
 2   background-repeat: no-repeat;
 3   background-position: center center;
 4   background-size: cover;
 5 }
 6 @media (min-width: 768px) {
 7   #main_ad > .carousel-inner > .item {
 8     height: 410px;
 9   }
10 }
11 #main_ad > .carousel-inner > .item > img {
12   width: 100%;
13 }

四、栅格系统

网格系统

- 该板块当屏幕为中等尺寸时分为3列,较小屏幕是分为2列
- 所以使用网格系统划分

<div class="col-sm-6 col-md-4">
  <!-- ... -->
</div>

五、媒体对象样式

- 每一个小块的样式可以通过Bootstrap中的媒体对象样式实现

<a href="#">
  <div class="media">
    <div class="media-left">
      <i class="icon-uniE907"></i>
    </div>
    <div class="media-body">
      <h4 class="media-heading">支付交易保障</h4>
      <p>银联支付全称保证支付安全</p>
    </div>
  </div>
</a>

六、响应式辅助类型

- 整个板块在超小屏幕下是隐藏起来的
+ 只需要给当前板块加上hidden-xs的class

时间: 2025-01-17 21:45:47

第124天:移动web端-Bootstrap轮播图插件使用的相关文章

原生js实现移动端Touch轮播图的方法步骤

Touch 轮播图 touch轮播图其实就是通过手指的滑动,来左右切换轮播图,下面我们通过一个案例,来实现下. 1. html 结构 结构上,还是用ul.li来存放轮播图片,ol.li来存放轮播小圆点: 2. 样式初始化 html的一些标签,都会有一些默认样式,比如body标签默认是有一个边距的,为了不影响美观,我们需要清除掉. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /* 清除标签默认边距 */ body,ul,li,ol,im

bootstrap轮播图carousel插件

一.基本介绍见:https://www.runoob.com/bootstrap/bootstrap-carousel-plugin.html 二.例子:在PC端使用轮播图(高度固定,图片居中,容器铺满,使用背景图) <div id="carousel-example-generic" class="carousel slide" data-ride="carousel"> <!-- 指示器 --> <ol clas

bootstrap轮播图 两侧半透明阴影

用bootstrap轮播图:Carousel插件,图片两侧影音实在碍眼,想去掉,首先发现有css里由opacity: 0.5这个东西来控制,全部改成opacity: 0.0,发现指示箭头也看不见了. 然后各种搜索,发现原来是应该这么改: .carousel-control.left { /*background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); back

JavaScript实战项目:移动端 Touch 轮播图

Touch 轮播图 touch轮播图其实就是通过手指的滑动,来左右切换轮播图,下面我们通过一个案例,来实现下. 1. html 结构 结构上,还是用ul.li来存放轮播图片,ol.li来存放轮播小圆点: 2. 样式初始化 html的一些标签,都会有一些默认样式,比如body标签默认是有一个边距的,为了不影响美观,我们需要清除掉. /* 清除标签默认边距 */ body,ul,li,ol,img { margin: 0; padding: 0; } /* 清除 ul 等标签前面的"小圆点"

10个免费的响应式jQuery Carousel 轮播图插件

jQuery Carousel 轮播图插件可以给网站创建华丽的动画效果,这里列出的10个jQuery Carousel 轮播图插件都是响应式的,并且可以免费使用. 1. ItemSlide.js 简单的触摸式Carousel 轮播图插件,提供多种样式的旋转动画,如向上滑动,基于全屏的触摸滑动,左右滑动等. 2. Liquid 每当Liquid 容器的大小改变时,都会重新调整列表中的项目数,以适应新的宽度. 3. jCarousel jCarousel 是一个用来控制水平或垂直方向上列表项的jQu

如何用面向对象的思维去封装一个小型轮播图插件

1.面向对象与面向过程 既然说到面向对象的思维,那就免不了要对面向过程的编程思维与面向对象的思维做一番比较. 笔者有 一段时间天真的认为有一个类,然后new一个对象就是面向对象编程了,现在想想还是太naive了呀. 其实面向对象的编程思维和面向过程的编程思维重要的不是对象和过程,而是思维. 比如说在生活中我们要做一道西红柿炒鸡蛋,很多人的第一反应就是西红柿炒鸡蛋第一步.第二步.第三步应该怎么做,每一步放什么调料.然后在做的过程中找每一步需要的调料.这就是很典型的面向过程的思维方式:怎么做,需要什

自已动手写的轮播图插件,功能不断增加中,可以下载

前,平时总是使用别人的轮播图插件,这次决定自已写一个,功能越多越好.实际现起来,发现并不容易.先实现基本的功能,下两周要丰富起来. 图是别人的图,心是自已的心.直接上代码: 一:结构 <!-- carousel begin --><div class="carousel-wrap">    <div class="carousel-main-wrap">        <ul class="carousel-scr

学习笔记: js插件 —— SuperSlide 2 (轮播图插件,PC用)

SuperSlide 2  轮播图插件,较老.但还好用. 适用于PC,是绑定到jquery上的方法: $.slide(); 如果在实际中找不到.slide方法,请检查jquery等.js文件的引入次序.(另外切忌不要引入两次jquery.js,会把$的方法洗掉而导致失效的) http://www.superslide2.com/ 官网 http://www.superslide2.com/SuperSlide.2.1.2/jquery.SuperSlide.2.1.2.js jquery.Sup

封装一个简单的原生js焦点轮播图插件

轮播图实现的效果为,鼠标移入左右箭头会出现,可以点击切换图片,下面的小圆点会跟随,可以循环播放.本篇文章的主要目的是分享封装插件的思路. 轮播图的我一开始是写成非插件形式实现的效果,后来才改成了封装成插件的形式. 首先要明白轮播图的实现原理和基本布局,大概就是外面有一个容器包裹着(通常是div),容器设置宽高,以及overflow为hidden,超出宽高部分隐藏, 容器里面又包含着另一个容器,包裹着所有的图片,宽为所有图片的总宽度,ul的position为absolute,通过改变ul的left