序言

Bootstrap的JavaScript插件是以JQuery为基础,提供了全新的功能并且还可以扩展现有的Bootstrap组件。通过添加data attribute(data 属性)可以轻松的使用这些插件,当然你也可以使用编程方式的API来使用。

为了使用Bootstrap插件,我们需要添加Bootstrap.js或者Bootstrap.min.js文件到项目中。这两个文件包含了所有的Bootstrap插件,推荐引用Bootstrap.min.js。当然你也可以包含指定的插件来定制化Bootstrap.js,已达到更好的加载速度。

Data属性 VS 编程API

Bootstrap提供了完全通过HTML标记的方式来使用插件,这意味着,你可以不写任何JavaScript代码,事实上这也是Bootstrap推荐的使用方式。

举个栗子,若要使Alert组件支持关闭功能,你可以通过添加data-dismiss="alert"属性到按钮(Botton)或者链接(A)元素上,如下代码所示:

  1. <div class="alert alert-danger">
  2.     <button data-dismiss="alert" class="close" type="button">x</button>
  3.     <strong>警告</strong>10秒敌人到达
  4. </div>

当然,你也可以通过编程方式的API来实现同样的功能:

  1. <div class="alert alert-danger" id="myalert">
  2.     <button data-dismiss="alert" class="close" type="button" onclick="$('#myalert').alert('close')">x</button>
  3.     <strong>警告</strong>10秒敌人到达
  4. </div>

下拉菜单(dropdown.js)

使用dropdown插件(增强交互性),你可以将下拉菜单添加到绝大多数的Bootstrap组件上,比如navbar、tabs等。注:将下拉菜单触发器和下拉菜单都包裹在 .dropdown 里,或者另一个声明了 position: relative; 的元素中

如下是一个地域的菜单,通过Razor引擎动态绑定菜单元素:

  1. <div class="form-group">
  2.             @Html.LabelFor(model => model.TerritoryId, new { @class = "control-label col-md-2" })
  3.             @Html.HiddenFor(model => model.TerritoryId)
  4.             <div class="col-md-10">
  5.                 <div id="territorydropdown" class="dropdown">
  6.                     <button id="territorybutton" class="btn btn-sm btn-info" data-toggle="dropdown">@Model.Territory.TerritoryDescription</button>
  7.                     <ul id="territories" class="dropdown-menu">
  8.                         @foreach (var item in ViewBag.TerritoryId)
  9.                         {
  10.                             <li><a href="#" tabindex="-1" data-value="@item.Value">@item.Text</a></li>
  11.                         }
  12.                     </ul>
  13.                 </div>
  14.             </div>
  15.         </div>

注意:通过添加data属性:data-toggle="dropdown" 到Button或者Anchor上,可以切换dropdown下拉菜单,增加了交互性。其中菜单的<a>元素设置tabindex=-1,这样做是为了防止元素成为tab次序的一部分。

模态框(modal.js)

模态框以弹出框的形式可以为用户提供信息亦或者在此之中完成表单提交功能。Bootstrap的模态框本质上有3部分组成:模态框的头、体和一组放置于底部的按钮。你可以在模态框的Body中添加任何标准的HTML标记,包括Text或者嵌入的Youtube视频。

一般来说,务必将模态框的 HTML 代码放在文档的最高层级内(也就是说,尽量作为 body 标签的直接子元素),以避免其他组件影响模态框的展现和/或功能。

如下即为一个标准的模态框,包含Header、Body、Footer:

将下面这段HTML标记放在视图的Top或者Bottom:

  1. <div class="modal fade" id="deleteConfirmationModal" tabindex="-1" role="dialog" aria-hidden="true">
  2.     <div class="modal-dialog">
  3.         <div class="modal-content">
  4.             <div class="modal-header">
  5.                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  6.                 <h4 class="modal-title">删除</h4>
  7.             </div>
  8.             <div class="modal-body">
  9.                 <p>即将删除 '@Model.CompanyName'. </p>
  10.                 <p>
  11.                     <strong>你确定要继续吗</strong>
  12.                 </p>
  13.                 @using (Html.BeginForm("Delete", "Customers", FormMethod.Post, new { @id = "delete-form", role = "form" }))
  14.                 {
  15.                     @Html.HiddenFor(m => m.CustomerId)
  16.                     @Html.AntiForgeryToken()
  17.                 }
  18.             </div>
  19.             <div class="modal-footer">
  20.                 <button type="button" class="btn btn-default" onclick="$('#delete-form').submit();">是.删除</button>
  21.                 <button type="button" class="btn btn-primary" data-dismiss="modal">取消</button>
  22.             </div>
  23.         </div>
  24.     </div>
  25. </div>

注意:通过在Button上添加data属性:data-dismiss="modal"可以实现对模态框的关闭,当然你也可以使用编程方式API来完成:

  1. <button type="button" class="btn btn-primary" onclick="$('#deleteConfirmationModal').modal('hide')">取消</button>

为了展示模态框,我们可以不写任何JavaScript代码,通过添加data-toggle="modal"属性到Button或者Anchor元素上即可,同时,为了表示展示哪一个模态框,需要通过data-target来指定模态框的Id。

  1. <a href="#" data-toggle="modal" data-target="#deleteConfirmationModal">Delete</a>

同样,也可以使用编程方式API来打开一个模态框:

  1. $(document).ready(function () {
  2. $('#deleteConfirmationModal').modal('show');
  3. });

标签页(tab.js)

Tabs可以使用在大的表单上,通过Tabs分割成若干部分显示局部信息,比如在Northwind数据库中存在Customer顾客信息,它包含了基本信息和地址,可以通过Tabs进行Split,如下所示:

要使用Tabs也是非常简单的:首先创建标准的无序列表<ul>元素,需要为它的class设置为nav nav-tabs 或者nav nav-pills。其中<li>包含的<a>元素即为Tab元素,需要设置其data-toggle为tab或者pill属性以及点击它指向的<div>内容:

  1. <ul id="customertab" class="nav nav-tabs">
  2.     <li class="active"><a href="#info" data-toggle="tab">Customer Info</a></li>
  3.     <li><a href="#address" data-toggle="tab">Address</a></li>
  4. </ul>

为了设置Tabs的内容,需要创建一个父<div>元素并设置class为tab-content,在父的div容器中为每一个Tab内容创建div元素,并设置class为tab-pane和标识的Id,通过添加active来激活哪一个Tab内容的显示。

  1. <div class="tab-content well">
  2. <div class="tab-pane active" id="info">
  3. Customer Info
  4. </div>
  5. <div class="tab-pane" id="address">
  6. Customer Address
  7. </div>
  8. </div>

当然也可以通过编程方式的API来激活:

  1. $(document).ready(function () {
  2. $('.nav-tabs a[href="#address"]').tab('show');
  3. });

工具提示(tooltip.js)

Tooltip能为用户提供额外的信息,Boostrap Tooltip能被用在各种元素上,比如Anchor:

  1. <a data-toggle="tooltip" data-placement="top" data-original-title="这是提示内容" href="#" >工具提示?</a>

你可以添加data-toggle="tooltip"来使用tooltip,当然你也可以设置内容的显示位置,通过添加data-placement属性来实现,Bootstrap为我们提供了4种位置:

  • top
  • bottom
  • left
  • right

最后,通过设置data-original-title设置了需要显示的Title。

注意:为了性能的考虑,Tooltip的data-api是可选的,这意味着你必须手动初始化tooltip插件:

  1. <script type="text/javascript">
  2. $(document).ready(function () {
  3. $('[data-toggle="tooltip"]').tooltip();
  4. });
  5. </script>

弹出框(popover.js)

弹出框和Tooltip类似,都可以为用户提供额外的信息,但弹出框可以展示更多的信息,比如允许我们展示一个Header和Content,如下所示:

  1. <a data-content="关于基础建设问题需要有具体的研讨和商量...." data-placement="bottom" title="" data-toggle="popover" href="#" data-original-title="转至百度">城市规划</a>

和Tooltip一样,为了性能的考虑,data-api是可选的,这意味着你必须手动初始化popover插件:

  1. <script type="text/javascript">
  2. $(document).ready(function () {
  3. $('[data-toggle="popover"]').popover();
  4. });
  5. </script>

显示的结果如下所示:

手风琴组件(collapse.js)

手风琴组件有若干panel groups组成,每一个panel group依次包含了若干header和content 元素,最常见的使用场景就是FAQ,如下所示:

为了使用手风琴组件,需要对Panel Heading中的<a>设置data-toggle="collapse"和点击它展开的容器(Div)Id,具体如下所示:

  1. <div class="row">
  2.         <div class="panel-group" id="accordion">
  3.             <div class="panel panel-default">
  4.                 <div class="panel-heading">
  5.                     <h4 class="panel-title">
  6.                         <a data-toggle="collapse" data-parent="#accordion"
  7.                            href="#questionOne">
  8.                             问题 1:什么是 Microsoft MVP 奖励?
  9.                         </a>
  10.                     </h4>
  11.                 </div>
  12.                 <div id="questionOne" class="panel-collapse collapse in">
  13.                     <div class="panel-body">
  14.                         解答 1:Microsoft 最有价值专家 (MVP) 奖励是一项针对 Microsoft 技术社区杰出成员的年度奖励,根据 Microsoft 技术社区的成员在过去 12 个月内对 Microsoft 相关离线和在线技术社区所作贡献的大小而确定。
  15.                     </div>
  16.                 </div>
  17.             </div>
  18.             <div class="panel panel-default">
  19.                 <div class="panel-heading">
  20.                     <h4 class="panel-title">
  21.                         <a data-toggle="collapse" data-parent="#accordion"
  22.                            href="#questionTwo">
  23.                             问题 2:MVP 奖励存在的意义何在?
  24.                         </a>
  25.                     </h4>
  26.                 </div>
  27.                 <div id="questionTwo" class="panel-collapse collapse">
  28.                     <div class="panel-body">
  29.                         解答 2:我们相信,技术社区可以促进自由且客观的知识交流,因此可以构建出一个可靠、独立、真实且可使每个人获益的专业知识来源。Microsoft MVP 奖励旨在表彰那些能积极与其他技术社区成员分享自身知识的全球杰出技术社区领导者。
  30.                     </div>
  31.                 </div>
  32.             </div>
  33.         </div>
  34.     </div>

旋转木马组件(carousel.js)

Carousel它本质上是一个幻灯片,循环展示不同的元素,通常展示的是图片,就像旋转木马一样。你可以在许多网站上看到这种组件,要使用它也是非常方便的:

  • 将Carousel组件被包含在一个class为carousel以及data-ride为"carousel"的<div>元素中。
  • 在上述容器里添加一个有序列表<ol>,它将渲染成小圆点代表当前激活的幻灯片(显示在右下角)。
  • 紧接着,添加一个class为carousel-inner的<div>,这个<div>容器包含了实际的幻灯片
  • 然后,添加左右箭头能让用户自由滑动幻灯片
  • 最后,设置滑动切换的时间间隔,通过设置data- interval来实现。当然也可以通过编程方式API来实现
  1. $('#myCarousel').carousel({
  2. interval: 10000
  3. })

将下面HTML标识放在View中即可:

<div class="container-full">
<div id="myCarousel" class="carousel" data-ride="carousel" data-interval="10000">
<!-- 指示灯 -->
<ol class="carousel-indicators">
<li data-target="#myCarousel" data-slide-to="0" class="active"></li>
<li data-target="#myCarousel" data-slide-to="1"></li>
<li data-target="#myCarousel" data-slide-to="2"></li>
</ol>
<div class="carousel-inner">
<div class="item active">
<img src="@Url.Content("~/Images/slide1.jpg")" alt="First slide">
<div class="container">
<div class="carousel-caption">
<h1>Unto all said together great in image.</h1>
<p>Won't saw light to void brought fifth was brought god abundantly for you waters life seasons he after replenish beast. Creepeth beginning.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">Read more</a></p>
</div>
</div>
</div>
<div class="item">
<img src="@Url.Content("~/Images/slide2.jpg")" alt="Second slide">
<div class="container">
<div class="carousel-caption"> <h1>Fowl, land him sixth moving.</h1>
<p>Morning wherein which. Fourth man life saying own creeping. Said sixth given.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">Learn more</a></p>
</div>
</div>
</div>
<div class="item">
<img src="@Url.Content("~/Images/slide3.jpg")" alt="Third slide">
<div class="container">
<div class="carousel-caption">
<h1>Far far away, behind the word mountains.</h1>
<p>A small river named Duden flows by their place and supplies it with the necessary.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">See all</a></p>
</div>
</div>
</div>
</div>
<a class="left carousel-control" href="#myCarousel" data-slide="prev"><span class="glyphicon glyphicon-chevron-left"></span></a>
<a class="right carousel-control" href="#myCarousel" data-slide="next"><span class="glyphicon glyphicon-chevron-right"></span></a>
</div>
</div>

展示的效果如下:

小结

在这篇博客中介绍了常见的Bootstrap插件,通过使用数据属性和编程方式的API来使用这些插件,更多插件访问:http://v3.bootcss.com/javascript/ 获取。

本博客为木宛城主原创,基于Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名木宛城主(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。
 

ASP.NET MVC使用Bootstrap系列(4)——使用JavaScript插件的更多相关文章

  1. ASP.NET MVC使用Bootstrap系列(3)——使用Bootstrap 组件

    阅读目录 Bootstrap 导航条 列表组 徽章 媒体对象 页头 路径导航 分页 输入框组 按钮式下拉菜单 警告框 进度条 小结 Bootstrap为我们提供了十几种的可复用组件,包括字体图标.下拉 ...

  2. ASP.NET MVC使用Bootstrap系列(5)——创建ASP.NET MVC Bootstrap Helpers

    阅读目录 序言 内置的HTML Helpers 创建自定义的Helpers 使用静态方法创建Helpers 使用扩展方法创建Helpers 创建Fluent Helpers 创建自动闭合的Helper ...

  3. ASP.NET MVC使用Bootstrap系列(1)——开始使用Bootstrap

    阅读目录 Bootstrap结构介绍 在ASP.NET MVC 项目中添加Bootstrap文件 为网站创建Layout布局页 使用捆绑打包和压缩来提升网站性能 在Bootstrap项目中使用捆绑打包 ...

  4. Asp.net Mvc模块化开发系列(目录)

    模块化开发是非常重要的,模块化开发是个系统性问题,为此我觉得有必须要写一个系列的文章才能基本说的清楚 那又为什么要写一个目录呢? 其一.是对我昨天承诺写一个系列新的文章的回应 其二.是先写出一个大纲, ...

  5. [ASP.NET MVC] 使用Bootstrap套件

    [ASP.NET MVC] 使用Bootstrap套件 前言 在开发Web项目的时候,除了一些天赋异禀的开发人员之外,大多数的开发人员应该都跟我一样,对于如何建构出「美观」的用户接口而感到困扰.这时除 ...

  6. ASP.NET MVC框架开发系列课程 (webcast视频下载)

    课程讲师: 赵劼 MSDN特邀讲师 赵劼(网名“老赵”.英文名“Jeffrey Zhao”,技术博客为http://jeffreyzhao.cnblogs.com),微软最有价值专家(ASP.NET ...

  7. 开篇ASP.NET MVC 权限管理系列

    开篇 [快乐编程系列之ASP.NET MVC 权限管理系列]一.开篇   用了好长一段时间的ASP.NET MVC,感觉MVC真的是很好用,最近一年左右做了两个中小型项目,觉得还是很多地方不是很熟悉的 ...

  8. ASP.NET MVC使用Bootstrap系统(2)——使用Bootstrap CSS和HTML元素

    阅读目录 Bootstrap 栅格(Grid)系统 Bootstrap HTML元素 Bootstrap 验证样式 ASP.NET MVC创建包含Bootstrap样式编辑模板 小结 Bootstra ...

  9. Knockout.js, Asp.Net MVC and Bootstrap 前端设计

    原文地址:http://ddmvc4.codeplex.com/ 原文名称:Design and Develop a website using ASP.NET MVC 4, EF, Knockout ...

随机推荐

  1. 【uoj264】 NOIP2016—蚯蚓

    http://uoj.ac/problem/264 (题目链接) 题意 n条蚯蚓,时间为m.每单位时间要可以将最长的蚯蚓切成len/2和len-len/2两份,长度为0的蚯蚓不会消失,因为每单位时间所 ...

  2. Jenkins从2.x新建Job时多了一个文件夹的功能(注意事项)

    这个job如果在一个文件夹里面,那么想要的URL就会改变,默认会带上这个文件夹上去,所以在用[参数化构建插件]的时候要留意这个点.获取的URL将会不一样.

  3. 关于git SSH Key的 生成

    最近刚接触git,简直就是一小白用户,所以决定自己记录一些东西,以备不时之需 系统环境:Windows 1.首先下载git,http://git-scm.com/download/ 2.正常安装git ...

  4. Spring表单参数绑定中对“is”开头的boolean类型字段的的处理

    之前在新浪微博上面发了一个微薄: 弱弱的发现在定义boolean类型的时候最好不要使用“is”开头,可以避免一些问题哦 然后有一些朋友朋友问我为什么,当时比较忙,现在写篇文章举一个例子,回复一下这个问 ...

  5. Tyvj P1175 机器人

    P1175 机器人 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 设a,b是给定的正整数.现有一机器人沿着一个有n级的楼梯上下.机器人每上升一次,恰好上升a ...

  6. chmod权限设置

    一.其语法格式为:chmod [who] [opt] [mode] 文件/目录名 1.其中who表示对象,是以下字母中的一个或组合: u:表示文件所有者 g:表示同组用户 o:表示其它用户 a:表示所 ...

  7. Error=Bias+Variance

    首先 Error = Bias + Variance Error反映的是整个模型的准确度,Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,Variance反映的是模型每一次输 ...

  8. 个人作业—Week3

    博客阅读体会 阅读了十几位软件工程师前辈的博文,了解了前辈们作为一名软件工程师的成长经历,我有一些感触. 这十几位前辈们的经历有着很大的差别,有的科班出身,有的则完全自学成才.不同的经历使得前辈们看问 ...

  9. SSM的各个配置文件

    SqlMapConfig.xml文件:(这是带了mybatis的分页插件的配置) <?xml version="1.0" encoding="UTF-8" ...

  10. [转发]dsdt解决睡眠唤醒死机

    登录 注册 首页 热门话题 最新发布   简单模式 详细模式 dsdt解决睡眠唤醒死机 Leave a reply 首先,感谢x5115x提供了一个相对比较完整的THINKPAD T410在MAC下的 ...