Bootstrap JS插件使用

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

Bootstrap中轮播图插件叫作Carousel

一、基本的轮播图实现

HTML代码

 <!--
以下容器就是整个轮播图组件的整体,
注意该盒子必须加上 class="carousel slide" data-ride="carousel" 表示当前是一个轮播图
bootstrap.js会自动为当前元素添加图片轮播的特效
-->
<div id="轮播图的ID" class="carousel slide" data-ride="carousel">
<!-- ol标签是图片轮播的控制点 -->
<ol class="carousel-indicators">
<!--
每一个li就是一个单独的控制点
data-target属性就是指定当前控制点控制的是哪一个轮播图,其目的是如果界面上有多个轮播图,便于区分到底控制哪一个
data-slide-to属性是指当前的li元素绑定的是第几个轮播项
注意,默认必须给其中某个li加上active,展示的时候就是焦点项目
-->
<li data-target="#轮播图的ID" data-slide-to="0" class="active"></li>
<li data-target="#轮播图的ID" data-slide-to="1"></li>
<!-- ...更多的 -->
</ol>
<!--
.carousel-inner是所有轮播项的容器盒子,
注意role="listbox"代表当前div是一个列表盒子,作用就是给当前div添加一个语义
-->
<div class="carousel-inner" role="listbox">
<!-- 每一个.item就是单个轮播项目,注意默认要给第一个轮播项目加上active,表示为焦点 -->
<div class="item active">
<!-- 轮播项目中展示的图片 -->
<img src="example.jpg" alt="示例图片">
<div class="carousel-caption">
<!-- 标题或说明性文字,如果不需要,直接删除当前div.carousel-caption -->
</div>
</div>
<div class="item">
<!-- ... -->
</div>
<!-- ... -->
</div>
<!-- 图片轮播上左右两个控制按钮,分别点击可以滚动到上一张和下一张 -->
<!-- 此处需要注意的是 该a链接的href属性必须指向需要控制的轮播图ID -->
<!-- 另外a链接中的data-slide="prev"代表点击该链接会滚到上一张,如果设置为next的话则相反 -->
<a class="left carousel-control" href="#轮播图的ID" role="button" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
<span class="sr-only">上一张</span>
</a>
<a class="right carousel-control" href="#轮播图的ID" role="button" data-slide="next">
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
<span class="sr-only">下一张</span>
</a>
</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、根据屏幕大小设置轮播图片

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

2、window resize事件

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

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

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

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

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

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

 #main_ad > .carousel-inner > .item {
background-repeat: no-repeat;
background-position: center center;
background-size: cover;
}
@media (min-width: 768px) {
#main_ad > .carousel-inner > .item {
height: 410px;
}
}
#main_ad > .carousel-inner > .item > img {
width: 100%;
}

四、栅格系统

网格系统

- 该板块当屏幕为中等尺寸时分为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

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

  1. 兼容pc端和移动端的轮播图插件 swiper.js

    swiper.js是一款纯JavaScript打造的滑动特效插件,可以用来实现检点轮播图,tab触摸滑动切换等常用效果.下载地址:https://www.swiper.com.cn/download/ ...

  2. bootstrap轮播图 两侧半透明阴影

    用bootstrap轮播图:Carousel插件,图片两侧影音实在碍眼,想去掉,首先发现有css里由opacity: 0.5这个东西来控制,全部改成opacity: 0.0,发现指示箭头也看不见了. ...

  3. Bootstrap 轮播图的使用和理解

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...

  4. bootstrap轮播图组件

    一.轮播图组件模板(官方文档) <div id="carousel-example-generic" class="carousel slide" dat ...

  5. vue轮播图插件之vue-awesome-swiper

    移动端轮播图插件,在使用iview图形界面插件中的carousel组件无法实现触摸滑动后,转而使用vue-awesome-swiper插件 1.npm安装 npm i vue-awesome-swip ...

  6. js 原生轮播图插件

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 原生js写一个无缝轮播图插件(支持vue)

    轮播图插件(Broadcast.js) 前言:写这个插件的原因 前段时间准备用vue加上网易云的nodejs接口,模拟网易云音乐移动端.因为想自己写一遍所有的代码以及加固自己的flex布局,所以没有使 ...

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

    SuperSlide 2  轮播图插件,较老.但还好用. 适用于PC,是绑定到jquery上的方法: $.slide(); 如果在实际中找不到.slide方法,请检查jquery等.js文件的引入次序 ...

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

    轮播图实现的效果为,鼠标移入左右箭头会出现,可以点击切换图片,下面的小圆点会跟随,可以循环播放(为了方便理解,没有补2张图做无缝轮播).本篇文章的主要目的是分享封装插件的思路. 轮播图我一开始是写成非 ...

随机推荐

  1. 20155304 2016-2017-2《Java程序设计》课程总结

    20155304 2016-2017-2<Java程序设计>课程总结 (按顺序)每周作业链接汇总 预备作业1:对自己专业看法及.学习Java的期望,以及心中的师生关系 预备作业2:有关技能 ...

  2. 20155332 mybash的实现

    mybash 的实现 码云链接 https://gitee.com/bestiisjava2017/laura5332/blob/master/%E4%BF%A1%E6%81%AF%E5%AE%89% ...

  3. 20145207《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    <Java 程序设计>实验一(Java开发环境的熟悉)实验报告 目录 改变 Java开发环境的熟悉实验要求 实验成果 课后思考 改变 修改了之前仅仅是贴了图片,连代码都没粘的状态.增加了自 ...

  4. echarts 拐点添加图片

    series : [ { name:'搜索引擎', type:'line', symbol:'emptyCircle', symbolSize: 5, itemStyle: { normal: { l ...

  5. python 发红包的小程序

    红包1 import random def redpacket(cash,person): lst=[] sum1=0 cash = cash * 100 while cash>0 and pe ...

  6. scala : 类型与类

    scala类型系统:1) 类型与类 在Java里,一直到jdk1.5之前,我们说一个对象的类型(type),都与它的class是一一映射的,通过获取它们的class对象,比如 String.class ...

  7. JS基础循环语句练习

    最近这几天一直在做题做题做题,很恶心,很头疼,都快吐了,但是自己的逻辑还是初见成效的,很久不动脑了,有点锈住了,大家也一起来开发下自己的大脑 有关简单排序的小循环 <script> var ...

  8. HTML基本代码教学片,认识HTML

    今儿头午有点晕晕的感觉,咳咳,甩甩头开课 HTML 定义:超文本标记语言 (记不住的可以这么记:how to make love ! 哈哈,准备开车,粗人一个,长的不行) 其实理解起来很简单,超越文本 ...

  9. Unity3D之AR开发(二)

    上一篇给大家介绍了高通AR的使用,接下来给大家分享一下EasyAR EasyAR引擎简介 EasyAR是做好用的且免费的增强现实(Augmented Reality)引擎,EasyAR为Unity开发 ...

  10. AsciiPic Java视频转成字符画

    AsciiPic Java视频转成字符画 github下载 https://github.com/dejavudwh/AsciiPic 运行截图 //没有做GUI 比较简陋 节省时间 main里的文件 ...