为了账号安全,请及时绑定邮箱和手机立即绑定

玩转Bootstrap(JS插件篇)

  • 在线自定义设置--Bootstrap组件

    在 Bootstrap 组件设置这一部分,提供了公共样式(Common CSS)UI 组件(Components)和 JavaScript 组件(JavaScript components)三个部分,如下图所示:

    <!--此处有图片-->

    每个部分都有对应的列表清单,在自定义配置时候,可以根据自己需求进行选择,比如,我自己的 Bootstrap 框架中,不需要打印样式、code、Glyphicons、等等,那么只需要不选中它们:

    <!--此处有图片-->


  • 自定义Bootstrap

    使用 Bootstrap 框架的不方便:

    很多时候在创建 Web 页面或应用的时,需要自己独立的 UI 界面效果,此时仅仅使用 Bootstrap 框架并不能满足我们自身 UI 的需求,也造成要写很多的样式代码来覆盖 Bootstrap 框架提供的样式代码。如此一来,这也失去使用 Bootstrap 框架的意义。

    很多同学会问,我要使用Bootstrap框架,而且还要让其出来的 UI 界面效果能和满足自己的UI设计效果。

    解决方法:

    在 Bootstrap 框架中提供多种方式来自定义 Bootstrap,让 Bootstrap 框架适合自己的需求,接下来,简单的向大家介绍怎样自定义 Bootstrap 框架。

    自定义Bootstrap框架主要有两种方式来实现:

    1. 使用 CSS 预处理器语言

    2. 使用在线自定义设置

    1.使用 CSS 预处理器语言

    在学习 Bootstrap 框架的使用时,可以看到 Bootstrap 框架中很多组件的 UI 效果都有对应的 LESS 版本和 Sass 版本源码。其实需要自定义 Bootstrap 框架,完全可以在这些组件的 LESS 或 Sass 源码文件上进行修改,然后将修改好的源码重新编译出 bootstrap.css 文件,从而实现适合自己的 UI 界面风格。 

    使用 CSS 预处理器语言来重新定义 Bootstrap 框架有一个前提条件,那就是开发人员会使用 LESS 或 Sass 预处理器语言,否则要在此基础上实现 Bootstrap 框架自定义不是一件容易的事情。不过大家不用担心,就算你不懂 LESS 或 Sass 也不用怕,可以通过在线自定义设置来实现自定义 Bootstrap 框架。

    2.使用在线自定义设置

    在Bootstrap框架的官网为大家提供了一个在线自定义 Bootstrap 框架的配置页面 http://getbootstrap.com/customize/ ,可以通过这里进行配置。

    在线自定义设置主要包括三个部分:

    • Bootstrap 组件

    • Bootstrap 插件

    • Bootstrap 的 LESS 版本变量设置

    我们只需要根据自己的需求设置完成之后,点击最底部的下载按钮就可以得到自定义后的 Bootstrap 框架。


  • 固定定位--声明式触发固定定位

    Affix 插件可以对任何元素进行固定定位,其中比较简单的方法,就是通过自定义属性 data 来触发。其主要包括两个参数:

    1、data-spy:取值 affix,表示元素固定不变的。

    2、data-offset:整数值,比如 90,表示元素 top 和 bottom 的值都是 90px,其包括两种方式:data-offset-top 和 data-offset-bottom。

    • data-offset-top 用来设置元素距离顶部的距离。比如 90,表示元素距离顶部 90px,当用户从顶部向下拖动滚动条,当滚动的距离大于 90px 时,affix 元素不再滚动,就会固定在浏览器窗口顶部。

    • data-offset-bottom 刚好与 data-offset-top 相反。

    具体使用如下:

    <div data-spy="affix" data-offset="90">affix元素</div>

    分开设置 data-offset 值方式:

    <div data-spy="affix" data-offset-top="90" data-offset-bottom="150">affix元素</div>

    我们来看一个简单的示例:

    <nav class="navbar navbar-default" role="navigation">     … </nav> <div class="container">     <div class="row">         <div class="col-md-3" id="sidebarMenu">             <ul class="navnav-pills nav-stacked" data-spy="affix" data-offset-top="20">                      …             </ul>         </div>         <div class="col-md-9">                 …         </div>     </div> </div>

    注意,在 body 要声明滚动监控!!!!!!!!!!

    <body data-spy="scroll" data-target="sidebarMenu">!!!!

    运行效果如下:

    <!--此处有图片-->

    注意,请在宽屏模式下查看效果。据我测试下来,使用声明式,就算设置了 data-offset-top 的值也会失效,需要在样式中给 affix 设置一个top值!!!!!,与 data-offset-top 值相等。data-offset-bottom一样。

    CSS 样式中ul.nav-tabs.affix和 <ul>中 data-offset-top 没有冲突吗

    最新回答 / 筑梦先生

    data-offset-top=125 当页面向上滚动超过125时 ul则不会跟着页面继续滚动。nav-tabs.affix {top:30px}  则是定义ul的页面位置。前者是设置滚动距离,后者是页面top距离


  • 图片轮播--JavaScript触发方法

    默认情况之下,如果 carousel 容器上定义了 data-ride="carousel" 属性页面加载之后就会自动加载轮播图片切换效果。如果没有定义 data-ride 属性,可以通过 JavaScript 方法来触发轮播图片切换。具体使用方法如下:

    $(".carousel").carousel();

    也可以通过容器的 ID 来指定:

    $("#slidershow").carousel();

    carousel() 方法中可以设置具体的参数,如:

    属性名称

    类型

    默认值

    描述

    interval

    number

    5000

    幻灯片轮换的等待时间(毫秒)。如果为false,轮播将不会自动开始循环

    pause

    string

    hover

    默认鼠标悬停留在幻灯片区域即停止播放,离开即开始播放

    wrap

    布尔值

    true

    轮播是否持续循环

    使用时,在初始化插件的时候可以传关相关的参数,如:

    $("#slidershow").carousel({        interval: 3000 });

    实际上,当我们给carousel()方法配置参数之后,轮播效果就能自动切换。但 Bootstrap 框架中的 carousel 插件还给使用者提供了几种特殊的调用方法,简单说明如下:

    • .carousel("cycle"):从左向右循环播放;

    • .carousel("pause"):停止循环播放;

    • .carousel("number"):循环到指定的帧,下标从0开始,类似数组;

    • .carousel("prev"):返回到上一帧;

    • .carousel("next"):下一帧

    例如,前面的调用方法,向前和向后两个按钮还无法正常工作,其实可以通过 .carousel("prev") 和 .carousel("next") 方法让他们能正常工作,代码如下:

    $(function(){     $("#slidershow").carousel({         interval:2000     });      });


  • 片轮播--声明式触轮播图的播放(二)

    除了data-ride="carousel"、data-slide、data-slide-to 以外,轮播组件还支持其他三个自定义属性:

    属性名称

    类型

    默认值

    描述

    data-interval

    number

    5000

    幻灯片轮换的等待时间(毫秒)。如果为false,轮播将不会自动开始循环

    data-pause

    string

    hover

    默认鼠标悬停留在幻灯片区域即停止播放,离开即开始播放

    data-wrap

    布尔值

    true

    轮播是否持续循环

    如下代码实现“轮播不持续循环”和“轮播时间间隔为1秒”。

    <div id="slidershow" class="carousel" data-ride="carousel" data-wrap="false" data-interval="1000">    ...... </div>

    上面三个属性可以在容器元素上定义,也可以在标示符(或左右控制链接)上定义,但是后者定义的优先级比较高。


  • 图片轮播--声明式触轮播图的播放(一)

    触发轮播图的播放方法也有两种,一种是声明式,另外一种是JavaScript方式。首先来看声明式方法。

    声明式方法是通过定义 data 属性来实现,data 属性可以很容易地控制轮播的位置。其主要包括以下几种:

    • data-ride 属性:取值 carousel,并且将其定义在 carousel 上。

    • data-target 属性:取值 carousel 定义的 ID 名或者其他样式识别符,如前面示例所示,取值为“#slidershow”,并且将其定义在轮播图计数器的每个 li 上!!!!!!最重要这个,是用容器的div的id!!!!

    • data-slide 属性:取值包括 prev,next,prev表示向后滚动,next 表示向前滚动。该属性值同样定义在轮播图控制器的 a 链接上,同时设置控制器 href 值为容器 carousel 的 ID 名或其他样式识别符。

    • data-slide-to 属性:用来传递某个帧的下标,比如 data-slide-to="2",可以直接跳转到这个指定的帧(下标从0开始计),同样定义在轮播图计数器的每个 li 上。

    基于上例,设置了自定义的 data 属性之后如下:

    <div id="slidershow" class="carousel" data-ride="carousel"> <!-- 设置图片轮播的顺序 -->     <ol class="carousel-indicators">         <li class="active" data-target="#slidershow" data-slide-to="0"></li>         <li data-target="#slidershow" data-slide-to="1"></li>         <li data-target="#slidershow" data-slide-to="2"></li>         <li data-target="#slidershow" data-slide-to="3"></li>         <li data-target="#slidershow" data-slide-to="4"></li>         <li data-target="#slidershow" data-slide-to="5"></li>     </ol>     <!-- 设置轮播图片 -->     <div class="carousel-inner">     …     </div>     <!-- 设置轮播图片控制器 -->     <a class="left carousel-control" href="#slidershow" role="button" data-slide="prev">         <span class="glyphicon glyphicon-chevron-left"></span>     </a>     <a class="right carousel-control" href="#slidershow" role="button" data-slide="next">         <span class="glyphicon glyphicon-chevron-right"></span>     </a> </div>

    在这里需要注意可以为 #slidershow 层添加 slide 样式,使用图片与图片切换效果有平滑感

    <div id="slidershow" class="carousel slide" data-ride="carousel">   ... </div>

    这样页面一加载就会有轮播效果了且单击向前向后按钮也可以切换图片了:

    <!-- data-ride="carousel" 属性用于标记轮播在页面加载时就开始动画播放,无需使用初始化的js函数 -->

  • 图片轮播--轮播图片的设计(三)

    第四步:设计轮播图片控制器。很多时候轮播图片还具有一个向前播放和向后播放的控制器。在 Carousel 中通过 carousel-control样式配合 left 和 right 来实现。其中left表示向前播放,right表示向后播放。其同样放在carousel容器内:

    <div id="slidershow" class="carousel">     <!-- 设置图片轮播的顺序 -->     <ol class="carousel-indicators">        …     </ol>     <!-- 设置轮播图片 -->     <div class="carousel-inner">         …     </div>     <!-- 设置轮播图片控制器 -->    /div>

    这段代码是放在inner的后面!

    通过两个 a 链接然后在内部定义要显示的小图标,一个是向前,一个是向后。

    这两个图标都显示在图片容器的上面(z-index的值大于carousel-inner的)。

    最终的效果如下:

    <!--此处有图片-->

    上图展示的就是 Bootstrap 框架中 Carousel 插件实现的图片轮播的效果。只是上例展示的仅是设计效果,并不具备动画效果,接下来我们一起来看如何触发其播放效果。

     


  • 图片轮播--轮播图片的设计(二)

    第三步:设计轮播图片播放区。轮播图整个效果中,播放区是最关键的一个区域,这个区域主要用来放置需要轮播的图片。这个区域使用 carousel-inner 样式来控制,而且其同样放置在 carousel 容器内,并且通过 item 容器来放置每张轮播的图片:

    <div id="slidershow" class="carousel">     <!-- 设置图片轮播的顺序 -->   class=">         <li class="active">1</li>         …     </ol>     <!-- 设置轮播图片 -->     <div class=>         <div class=">             <a href="##"><img src="http://images3.c-ctrip.com/rk/201407/ll580x145.jpg" alt=""></a>         </div>         <div class="item">             <a href="##"><img src="http://images3.c-ctrip.com/dj/201408/zj/zj_580145.jpg" alt=""></a>         </div>         …         <div class="item">             <a href="##"><img src="http://images3.c-ctrip.com/dj/201408/zqgq_580145.jpg" alt=""></a>         </div>     </div> </div>

    其主要通过 carousel-inner 来控制其样式呈现。

    运行效果如下:

    <!--此处有图片-->

    上面显示的图片区只实现了图片播放,但很多轮播图片效果,在每个图片上还对应有自己的标题和描述内容。其实 Bootstrap 框架中的 Carousel 也提供类似的效果。只需要在 item 中图片底部添加对应的代码

    <div id="slidershow" class="carousel">     <!-- 设置图片轮播的顺序 -->     <ol class="carousel-indicators">         <li class="active">1</li>     …     </ol>     <!-- 设置轮播图片 -->     <div class="carousel-inner">         <div class="item active">             <a href="##"><img src="http://images3.c-ctrip.com/rk/201407/ll580x145.jpg" alt=""></a>             <!-- 图片对应标题和描述内容 -->            class">                       </div>         </div>     …     </div> </div>

    运行效果如下:

    <!--此处有图片-->


  • 图片轮播--轮播图片的设计(一)

    一个轮播图片主要包括三个部分:

       轮播的图片

       轮播图片的计数器

       轮播图片的控制器

    复杂一点的轮播图片,每个轮播区会带有对应的标题和描述内容。那么在 Bootstrap 框架中,轮播图是如何设计的呢?

    第一步:设计轮播图片的容器。在 Bootstrap 框架中采用 carousel 样式,并且给这个容器定义一个 ID 值,方便后面采用 data 属性来声明触发。

    <div id="slidershow" class="carousel"></div>

    第二步:设计轮播图片计数器。在容器 div.carousel 的内部添加轮播图片计算器,采用 carousel-indicators 样式,其主要功能是显示当前图片的播放顺序(有几张图片就放置几个li),一般采用有顺列表来制作:

    <div id="slidershow" class="carousel"> <!-- 设置图片轮播的顺序 -->     <ol class="carousel-indicators">         <li class="active">1</li>         <li>2</li>         <li>3</li>         <li>4</li>         <li>5</li>         ...     </ol></div>


  • 手风琴--声明式触发手风琴(三)

    第五步,激活手风琴交互行为。要完成交互行为,需要在标题链接中自定义两个属性,一个是data-toggle,并且取值为collapse;另一个是data-target,取值为各个面板内容区的标识符,比如说ID,在这个例子分别是#panel1、#panel2和#panel3:

    <div class="panel panel-accordion panel-default">     <div class="panel-heading">         <h4 class="panel-title"><a href="#panel1" data-toggle="collapse" data-target="#panel1">标题一</a></h4>     </div>     <div class="panel-collapse collapse in" id="panel1">         <div class="panel-body">折叠区内容...</div>     </div> </div>

    到此,实现了单个面板的“显示/隐藏”的切换。但离手风琴效果还略有差距。

    注意:在这个案例中不加入data-target="#panel1"也可以,因为前面已经有了href="#panel1",但如是button按钮作为触发器就必须使用data-target="#panel1"语句了。

    第六步,定义data-parent!!!!!属性,实现点击一个其中一个元素时,关闭所有的折叠区,再打开所单击的区域(如果所单击区域是展示的,则会关闭)。这个data-parent取值与手风琴面板容器的标识符相匹配因为涉及到全部元素的,所以得与div这个大容器中id相匹配!!!比如这个例子是指 #myAccordion:

    <div class="panel-group" id="">     <div class="panel panel-accordion panel-default">         <div class="panel-heading">             <h4 class="panel-title">                 <a href="#panel1" data-toggle="collapse" data-target="#panel1" >标题一</a>             </h4>         </div> …

    最终效果如下:

    <!--此处有图片-->

    通过示例,我们可以看出以下几点:

      使用 panel 的 panel-title 做为触元素,使用panel-body的父元素作为折叠区;   使用一个 panel-group 来包含多个 panel,从而实现手风琴效果;   ;   触发元素需要指定 data-toggle,并且值为 collapse;   触发元素都要指定 data-target属性;   data-target属性的值对应 panel-body 的父元素的ID或者其他样式标识符。

     


  • 手风琴--声明式触发手风琴(二)

    第三步,为了把标题和内容区捆绑在一起,可以通过锚链接的方法,把标题区域和面板区连在一起:

    <div class="panel-group" id="myAccordion">     <div class="panel panel-accordion panel-default">         <div class="panel-heading">             class="panel-title"></h4>         </div>         <div class="panel-collapse" id="panel1">             <div class="panel-body">折叠区内容...</div>         </div>     </div>     <div class="panel panel-accordion panel-default">         <div class="panel-heading">             <h4 class="panel-title"><a href="#panel2">标题二</a></h4>         </div>         <div class="panel-collapse" id="panel2">             <div class="panel-body">折叠区内容...</div>         </div>     </div>     ...... </div>


    第四步,控制面板内容区是否可视。在Bootstrap框架中,如果你想让内容区域不可视,只需要在 panel-collapse 样式上添加 collapse:

    <div class="panel panel-accordion panel-default">     <div class="panel-heading">         <h4 class="panel-title"><a href="#panel1">标题一</a></h4>     </div>     <div class="panel-collapse" id="panel1">         <div class="panel-body">折叠区内容...</div>     </div> </div>

    此时你会看到效果如下图所示:

    <!--此处有图片-->

    每个面板的内容区都被隐藏起来了,变成不可视,但有时候希望默认第一个面板内容是可视的,需要怎么办?其实Bootstrap作者早就为大家做了这方面的考虑,你只需要在collapse基础上再追加 in样式:

    <div class="panel panel-accordion panel-default">     <div class="panel-heading">         <h4 class="panel-title"><a href="#panel1">标题一</a></h4>     </div>     <div class="panel-collapse " id="panel1">         <div class="panel-body">折叠区内容...</div>     </div> </div>


    效果如下:

    <!--此处有图片-->


  • 手风琴--声明式触发手风琴(一)

    触发手风琴可以通过自定义的 data-toggle 属性来触发。其中data-toggle值设置为 collapse,data-target="#折叠区标识符"。接下来我们来看一个简单的示例:(六步)
    第一步,设计一个面板组合,里面有三个折叠区:

    <div class="panel-group" id="myAccordion">     <div class="panel panel-accordion panel-default"></div>     <div class="panel panel-accordion panel-default"></div>     <div class="panel panel-accordion panel-default"></div> </div>

    你将看到这样的一个效果:

    <!--此处有图片-->

    第二步:给面板添加内容,每个面板包括两个部分,第一个是面板标题 panel-heading,并且在这里面添加标题 panel-title。第二个部分是面板内容,也就是折叠区,使用 panel-collapse 样式

    <div class="panel panel-accordion panel-default">     <div class="panel-heading">         <h4 class="panel-title">标题一</h4>     </div>     <div class="panel-collapse">         <div class="panel-body">折叠区内容...</div>     </div> </div> …

    此时你将看到下图这样的效果:

    <!--此处有图片-->


  • 手风琴--手风琴结构

    手风琴最关键的部分,就是每个标题对应有一个内容,在Bootstrap框架中将这两个部分组合起来称为一个panel页板,如右边效果所示,他就有三个panel面板,将这三个面板组合在一起,就是一个面板组合 panel-group,也就是手风琴的结构。如:

    <div class="panel-group" id="accordion">     <div class="panel panel-default">         <div class="panel-heading">             <h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">标题一</a></h4>         </div>         <div id="collapseOne" class="panel-collapse collapse in">             <div class="panel-body">标题一对应的内容</div>         </div>     </div>     <div class="panel panel-default">         <div class="panel-heading">             <h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">标题二</a></h4>         </div>         <div id="collapseTwo" class="panel-collapse collapse">             <div class="panel-body">标题二对应的内容</div>         </div>     </div>     <div class="panel panel-default">         <div class="panel-heading">             <h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#collapseThree">标题三</a></h4>         </div>         <div id="collapseThree" class="panel-collapse collapse">             <div class="panel-body">标题三对应的内容</div>         </div>     </div> </div>

    简单点就是一个触发器和一个折叠区

    <button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#demo">触发器</button> <div id="demo" class="collapse in">折叠区</div>

     


  • 按钮插件--JavaScript用法

    除了上面介绍的属性声明使用方法之外,按钮插件还可以通过调用button函数,然后给button函数传入具体的参数,实现不同的效果。而其中有两个参数是固定不变的,即toggle和reset。其他的都可以随意定义:
    1、切换按钮状态(得到焦点):

    $("#mybutton").button

    2、重新恢复按钮

    $("#mybutton").

    如下代码:

    $(function() {       $("#mybutton").click(function(){          $(this)..delay(1000).{             $(this     });               }); });

    3、任意参数:

    $("#mybutton").button("任意字符参数名")

    上面代码作用:替换 data-任意字符参数名-text 的属性值为“按钮上显示的文本值”。如下代码:

    html:

    <button type="button" data-toggle="button" class="btn btn-primary" id="mybutton" data-complete-text="Loading finished" >确认</button>

    js代码:

     $(function() {       $("#mybutton").click(function(){          $(this).).delay(1000)(function() {             $(this));          });               });  });


举报

0/150
提交
取消
课程须知
本课程适合具有一定前端基础的人员,对HTML和CSS有一定的了解,对于定制Bootstrap的同学需要具备LESS和Sass基础知识。
老师告诉你能学到什么?
1、使用JS自由控制Bootstrap中提供的组件。
意见反馈 邀请有奖 帮助中心 APP下载
官方微信