[Bootstrap]7天深入Bootstrap(5)JavaScript插件
在bs3.X中,提供了12种JavaScript插件,分别是:动画过渡(Transition)、模态弹窗(Modal)、下拉菜单(Dropdown)、滚动侦测(Scrollspy)、选项卡(Tab)、提示 框(Tooltip)、弹出框(Popover)、警告框(Alert)、按钮(Button)、折叠(Collapse)、旋转轮播(Carousel)、定位浮标(Affix)。
由于各种加班,身心疲惫...
动画过渡
源文件:transition.js
使用的动画过渡效果全部使用了 CSS3的语法,所以IE6、IE7、IE8是不能用动画过渡效果。
默认带过渡效果的
- 模态弹窗(Modal)的滑动和渐变效果;
- 选项卡(Tab)的渐变效果;
- 警告框(Alert)的渐变效果;
- 旋转轮播(Carousel)的滑动效果。
源码
js源码
function transitionEnd() {
var el = document.createElement('bootstrap')
var transEndEventNames = {
WebkitTransition: 'webkitTransitionEnd',
MozTransition: 'transitionend',
OTransition: 'oTransitionEnd otransitionend',
transition: 'transitionend'
}
for (var name in transEndEventNames) {
if (el.style[name] !== undefined) {
return { end: transEndEventNames[name] }
}
}
return false // explicit for ie8 ( ._.)
}
transition.js部分源码
通过以上代码判断是否支持动画过渡效果。
CSS源码
.fade {
opacity:; /*100%透明*/
-webkit-transition: opacity .15s linear; /*透明度,匀速变化0.15秒*/
transition: opacity .15s linear;
}
.fade.in { /*应用in样式,表示全部打开*/
opacity:; /*完全不透明*/
}
.modal.fade .modal-dialog {
-webkit-transition: -webkit-transform .3s ease-out; /*减速运行*/
-moz-transition: -moz-transform .3s ease-out;
-o-transition: -o-transform .3s ease-out;
transition: transform .3s ease-out;
-webkit-transform: translate(0, -25%); /*向下移动25%的距离,从而产生向下的 动画视觉*/
-ms-transform: translate(0, -25%);
transform: translate(0, -25%);
}
.modal.in .modal-dialog { /*页面完整显示时,回归到原始位置*/
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
transform: translate(0, 0);
}
fade css
模态弹窗
源文件:modal.js
模态弹窗(也叫popup,Bootstrap里称为Modal)是绝大部分交互式网站都需要的一种功能,一般有以下几种用法:
- 提示信息、警告信息、大文本等;
- 确认提示(多按钮);
- 显示表单元素(一般使用ajax操作等功能);
- 其他需要特殊显示的信息(如单击缩略图时放大图片)。
使用
弹窗组件使用了3层 div容器元素,其分别应用了modal、modal-dialog、modalcontent样式。然后在真正的内容容器modal-content内包括了弹窗 的头(header)、内容(body)、尾(footer)3个部分,分别应用了3个样式:modal-header、modal-body、modal-footer。
使用data-target
<a href="#" class="btn btn-success" data-toggle="modal" data-target=".modal">启动模态框</a>
<div class="modal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">Modal Title</div>
<div class="modal-body">
This is body.
</div>
<div class="modal-footer">
<a href="#" class="btn btn-default" data-dismiss="modal">关闭</a>
<a href="#" class="btn btn-success">保存</a>
</div>
</div>
</div>
</div>
modal
js会控制在弹出modal之前,会加一个.modal-backdrop 用来设为灰色背景。
下拉菜单
源文件:dropdown.js
一般下拉菜单都是在导航条(navbar)和选项卡(tab)上实现。
实现原理:
- 在网页加载的时候,对所有带有datatoggle="dropdown"样式的元素进行事件绑定。
- 用户单击带有data-toggle="dropdown"样式的链接或按钮时,触发JavaScript事件代码。
- Javascript事件代码在父容器(本例是:<li class="dropdown">)上加一个.open样式。
- 默认隐藏的.dropdown-menu菜单在外部有了.open样式后,即可显示出来,从而达到预期的效果。
使用:
- 菜单样式和菜单项保持一致(即按照第4节的要求编写)。
- 被单击的链接或者按钮上需要应用data-toggle="dropdown"样式,以便在初始化的时候JavaScript可以监控单击事件
使用data-target
<a href="#" class="btn btn-default" data-toggle="dropdown" data-target="#d">启动下拉框</a>
<div class="dropdown" id="d">
<a href="#" class="btn btn-default" data-toggle="dropdown">启动下拉框</a>
<ul class="dropdown-menu">
<li><a>菜单1</a></li>
<li><a>菜单2</a></li>
</ul>
</div>
dropdown
滚动侦测
源文件:scrollspy.js
滚动侦测(ScrollSpy)插件是根据滚动的位置自动更新导航 条中相应的导航项
使用:
- 设置滚动容器,即在所要侦测的元素上设置data-target="#selector" data-spy="scroll"属性。
- 设置菜单链接容器,该容器的id(或样式)和data-target 属性所对应的选择符应一致。
- 在菜单容器内,必须有.nav样式的元素,并且在其内部有 li元素,li内包含的a元素才是可以侦测高亮的菜单链接,即符 合.nav li > a这种选择符的条件。
body上用data-spy
<body data-target="#selector" data-spy="scroll">
<div id="selector">
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<ul class="nav navbar-nav">
<li class="active"><a href="#fat">@fat</a></li>
<li><a href="#mdo">@mdo</a></li>
<li class="dropdown">
<a data-toggle="dropdown" class="dropdown-toggle" href="#">Dropdown<b class="caret"></b></a>
<ul class="dropdown-menu">
<li class=""><a href="#one">one</a></li>
<li class=""><a href="#two">two</a></li>
<li class="divider"></li>
<li class=""><a href="#three">three</a></li>
</ul>
</li>
</ul>
</nav>
</div>
<div style="overflow: auto">
<h4 id="fat">@fat</h4>
<p>具体内容</p>
<h4 id="mdo">@mdo</h4><p>具体内容</p>
<h4 id="one">one</h4><p>具体内容</p>
<h4 id="two">two</h4><p>具体内容</p>
<h4 id="three">three</h4><p>具体内容</p>
</div>
<script src="Scripts/jquery-1.9.1.js"></script>
<script src="Scripts/bootstrap.js"></script>
</body>
data-spy
注意:
子菜单虽然会高亮,但不会打开,为了展示效果,需要手 动打开下拉菜单查看。
该插件所需要的导航条只能在拥有.nav样式的ul/li元素上起 作用
选项卡
源文件:tab.js
就像我们平时使用的Windows操作系统里的选项卡设置一样,单击一个选项,下面就显示对应的选项卡面板
使用:
- 选项卡导航和选项卡面板要同时有(但不一定要放在一 起)。
- 导航链接里要设置data-toggle="tab",并且还要设置data-target="选择符"(或href="选择符"),以便单击的时候能找到该选择符所对应的tab-pane面板。
- tab-pane要放在tab-content里面,要有id(或者CSS样式) 并与data-target="选择符"(或href="选择符")一致
<ul class="nav nav-tabs">
<li class="active"><a href="#home" data-toggle="tab">home</a> </li>
<li><a href="#concact" data-toggle="tab">concact</a> </li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="home">
<h3>Home</h3>
</div>
<div class="tab-pane" id="concact">
<h3>concact</h3>
</div>
</div>
nav-tabs
提示框
源文件:tooltip.js
鼠标移动到特定的元素上时,显示相关的提示语。类似于abbr的title功能,不过效果更加漂亮实用。
使用
- 指定的data-toggle="tooltip"属性
- 然后再定义要显示的内容,可以在title也可以用data-original-title
- js初始化.$('[data-toggle="tooltip"]').tooltip();
<a data-toggle="tooltip" class="btn btn-default" title="aaaa" data-placement="bottom">bbbb</a>
<script src="Scripts/jquery-1.9.1.js"></script>
<script src="Scripts/bootstrap.js"></script>
<script>
$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
</script>
tooltip
弹出框
源文件:popover.js
弹出框其实就是一种特殊的提示框,相比来说只是多了一个title标题而已
使用
(弹出框插件的用法和提示框组件几乎一模一样),唯一不一样的就是插件名称以及多余的content字段。而关于自动初始化,也和提示框插件一样,需要手动初始化
- 指定的data-toggle="popover"属性
- 然后再定义要显示的标题,可以在title也可以用data-original-title
- 定义内容,可以在content也可以data-content
- js初始化.$('[data-toggle=popover]').popover();
<a data-toggle="popover" class="btn btn-default" title="aaaa" data-content="ccccc" data-placement="bottom">bbbb</a>
popover
警告框
源文件:alert.js
就是在警告框组件的基础上,提供了 单击x号关闭警告框的功能
使用
<div class="alert alert-danger">
<h3>警告标题</h3>
<hr />
<p>警告内容警告内容</p>
<p>
<button class="btn btn-default" data-dismiss="alert">关闭</button>
</p>
</div>
alert
默认情况下,如果不设置data-target属性,则会关闭x号按钮元素所在的父元素容器,即外部的div元素。只需要保证设置了data-dismiss="alert"即可.
按钮
源文件:button.js
按钮插件提供了一组可以控制按钮多种状态的功能,比如,一个按钮有禁用状态、正在加载状态、正常状态等
使用
禁用状态在这里不再赘述。
正在加载和加载完成控制与显示
<a id="aa" href="#" class="btn btn-default" data-loading-text="正在加载..." data-complete-text="已完成">提交</a>
$('#aa').dblclick(function() {
$('#aa').button('loading');
setTimeout(function () {
$('#aa').button('complete');
}, 2000);
});
$('#aa').click(function() {
$('#aa').button('reset');
});
btn
折叠
源文件:collapse.js
当单击一个触发元素时,在另外一个可折叠区域进行显示(或隐藏),再次单击时可以反转显示状态。(经典的手风琴风格)
使用
<!-- 默认显示折叠区域-->
<a class="btn btn-danger" data-toggle="collapse" data-target="#demo">触发改变</a>
<div id="demo" class="collapse in">折叠区域...</div>
<!-- 默认隐藏折叠区域-->
<button class="btn btn-danger collapsed" data-toggle="collapse" data-target="#demo">按钮</button>
<div id="demo" class="collapse ">折叠区域...</div>
轮播
源文件:carousel.js
旋转轮播(Carousel)这个插件有很多种译法,有人叫轮播,有人叫传送带
<div data-ride="carousel" class="carousel slide" id="carousel-container">
<!-- 图片容器 -->
<div class="carousel-inner">
<div class="item">
<img alt="第一张图" src="A" />
</div>
<div class="item active">
<img alt="第二张图" src="B" />
</div>
<div class="item">
<img alt="第三张图" src="C" />
</div>
</div>
<!-- 圆圈指示符 -->
<ol class="carousel-indicators">
<li data-slide-to="0" data-target="#carousel-container"></li>
<li data-slide-to="1" data-target="#carousel-container"></li>
<li data-slide-to="2" data-target="#carousel-container" class="active"></li>
</ol>
<!-- 左右控制按钮 -->
<a data-slide="prev" href="#carousel-container" class="left carouselcontrol"> <span class="glyphicon glyphicon-chevron-left"></span> </a>
<a data-slide="next" href="#carousel-container" class="right carouselcontrol"> <span class="glyphicon glyphicon-chevron-right"></span> </a>
</div>
带有data-ride="carousel"的div就是轮播插件的容器,容器id为carousel-container,稍后会用到。
还有两个样式,其中carousel样式做样式容器,而slide样式和fade类似,用来定义轮播图片的时候是否有特效.
- carousel-inner样式div内部包含多个含有item的div样式,在 这些内部的div里,定义我们要显示的幻灯图片。
- carousel-indicators样式ol内部定义了一组标示符,用户单 击这些标示符可以直接显示相应的图片,data-slide-to是索引,从0开始.
- 另外两个a链接是一组,用于显示左右箭头,可以改变轮播的方向。这两个元素上定义的data-slide属性值只能是 prev或者next
针对图片,轮播插件还提供了一个字幕说明样式(carousel-caption),紧接着img元素定义即可。示例如下
<div class="item active">
<img src="..." alt="..." />
<div class="carousel-caption">
<h3>标题</h3>
<p>描述...</p>
</div>
</div>
定位浮标
源文件:affix.js
Affix的效果就像其官方网站左边的导航链接一样。
<!—或者分开设置offset -- >
<div data-spy="affix" data-offset-top="60" data-offset-bottom="100" >导航内容 </div>
<!—合并设置offset -- >
<div data-spy="affix" data-offset="60" >导航内容</div>
data-offset-top表示一个完整的新网页,从顶部向下拖动滚动条(也就是网页向上滚动)这个像素以后,
而data-offset-bottom则表示距离最底部还有多少距离(本例60像素)以后,就要开始继续滚动了.
[Bootstrap]7天深入Bootstrap(5)JavaScript插件的更多相关文章
- ASP.NET MVC使用Bootstrap系列(4)——使用JavaScript插件
阅读目录 序言 Data属性 VS 编程API 下拉菜单(dropdown.js) 模态框(modal.js) 标签页(tab.js) 工具提示(tooltip.js) 弹出框(popover.js) ...
- Bootstrap JavaScript插件
在bs3.X中,提供了12种JavaScript插件,分别是:动画过渡(Transition).模态弹窗(Modal).下拉菜单(Dropdown).滚动侦测(Scrollspy).选项卡(Tab ...
- 初学者--bootstrap(五)JavaScript插件(上)----在路上(6)
jQuery 插件为 Bootstrap 的组件赋予了“生命”.可以简单地一次性引入所有插件,或者逐个引入到你的页面中. 一:首先要确认的是,单个还是全部引入: JavaScript 插件可以单个引入 ...
- 推荐13款优秀的Twitter Bootstrap JavaScript插件
Bootstrap是基于HTML,CSS和JavaScript的简洁灵活的流行前端框架及交互组件集,由微博先驱Twitter在2011年8月开源的整套前端解决解决方案,拥有非常完备和详尽的开发文档,有 ...
- Twitter Bootstrap JavaScript插件
Twitter Bootstrap JavaScript插件本文收集了10款非常不错的JavaScript Twitter bootstrap扩展插件,利用Boostrap开发者可以节省大量的时间修复 ...
- python 全栈开发,Day58(bootstrap组件,bootstrap JavaScript 插件,后台模板,图表插件,jQuery插件库,Animate.css,swiper,运行vue项目)
一.bootstrap组件 无数可复用的组件,包括字体图标.下拉菜单.导航.警告框.弹出框等更多功能. 组件和插件的区别? 插件:一个功能,比如js文件 组件:html css js 组件包含插件 面 ...
- 玩转Bootstrap(JS插件篇)-第1章 模态弹出框 :1-1导入JavaScript插件
导入JavaScript插件 Bootstrap除了包含丰富的Web组件之外,如前面介绍的下拉菜单.按钮组.导航.分页等.他还包括一些JavaScript的插件. Bootstrap的JavaScri ...
- bootstrap导入JavaScript插件
Bootstrap的JavaScript插件可以单独导入到页面中,也可以一次性导入到页面中.因为在Bootstrap中的JavaScript插件都是依赖于jQuery库,所以不论是单独导入还一次性导入 ...
- Bootstrap支持的JavaScript插件
1.导入JavaScript插件 Bootstrap除了包含丰富的Web组件之外,如前面介绍的下拉菜单.按钮组.导航.分页等.他还包括一些JavaScript的插件. Bootstrap的JavaSc ...
随机推荐
- sublime3 配置node build环境
折腾了很久,原来如此简单 1.package control 安装nodejs 2.修改Nodejs.sublime-settings文件,将nodejs路径修改成自己的 3.sublime tex ...
- python数据结构之二叉树的实现
树的定义 树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样.树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形 ...
- Activity intent经常使用的 FLAG
Intent.FLAG_ACTIVITY_NEW_TASK 默认的跳转类型,会重新创建一个新的Activity,不过与这种情况,比方说Task1中有A,B,C三个Activity,此时在C中启动D的话 ...
- 【C#|.NET】lock(this)其实是个坑
这里不考虑分布式或者多台负载均衡的情况只考虑单台机器,多台服务器可以使用分布式锁.出于线程安全的原因,很多种场景大家可能看代码中看到lock的出现,尤其是在资金类的处理环节. 但是lock(this) ...
- 修饰者模式(装饰者模式,Decoration)
1. 装饰者模式,动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更加有弹性的替代方案. 2.组合和继承的区别 继承.继承是给一个类添加行为的比较有效的途径.通过使用继承,可以使得子类在拥有 ...
- fflua更新-增加对引用的支持
简介: fflua 发布了有段时间了,很多网友都用了,并且提供了一些很好的反馈.其中一个就是c++接口注册到lua中时,对引用的支持.这样使用起来更加方便. 原有方式: fflua 中注册c++的类用 ...
- 8个经典HTML5 3D动画赏析
HTML5技术已经越来越被我们所接受,特别是一些3D的动画特效.本文介绍的8个HTML5 3D动画并没有特别华丽的界面,但是比较实用,涉及到3D图片.3D图表.3D按钮等方面,一起来看看. 1.HTM ...
- ux.form.field.Verify 验证码控件
//验证码控件 Ext.define('ux.form.field.Verify', { extend: 'Ext.container.Container', alias: ['widget.fiel ...
- Mysql 导入数据,推荐Source命令,太快了
http://jingyan.baidu.com/article/cbf0e500d15c762eab289362.html
- windows7 中开启无线热点
我用的是移动的 CMCC-EDU 上网,但是这个只能在一个设备上登陆,那么问题就来了,当我电脑需要用网,手机也想要用网(不用 2/3/4G)该怎么办? 电脑操作系统:windows7 接下来是开启 w ...