知识有时也需温故知新嘛,本次做一次bs插件梳理。

$.support.transition

通过判断自定义元素是否支持WebkitTransition、MozTransition、OTransition和transition来判断当前浏览器是否支持transition这个css3属性

Modal

  1. 从UI功能角度来说,点击某个元素来触发弹出一个对话框。在插件第一次加载的时候,用body监听所有data-toggle="modal"属性元素。一来达到事件绑定的目的,而来为后续异步加入同属性元素做准备。
  2. 一个对话框就对应需要将其关闭的功能,modal实现是将改方法放在构造器中去实现,一来每个modal都有自己独立的关闭系统,互相不冲突。二来对于原型继承的方式,如何能让每个实例拥有属于自己的一片天。选用构造器而不是原型中为他们布置,提供了一套不错的思路。

scrollspy

  1. 页面加载完成之后为当前页面上面所有拥有data-spy="scroll"属性的元素执行scrollspy方法,实际是进行初始化构建。
  2. 从UI功能角度来说,scrollspy分为两个部分:其一、点击上面导航栏里面的元素,能够快速链接到对应的内容;其二、滚动侧边栏,可以让对应的导航栏标题高亮。直观感受这两者必须要存在某种联系,制作这类UI插件则需要从这两者联系出发。
  3. scrollspy提供了一种关联思路:通过html属性关联,导航栏里面拥有内容部分头部的id哈希值。而内容框则拥有导航栏的id哈希值。其他解析工作交给插件去完成。
  4. 在scrollspy的构造器部分依然为导航栏绑定click事件,为侧边栏绑定了scroll事件。滚动侧边栏,则是让滚动的高度与内容框内具体内容距离父元素的高度进行比较,进而得出让导航栏的哪个元素高亮。
  5. 我们可以看到其中一个问题,就是采用a标签链接的方式,会对scroll造成两次触发。同时也会修改url。撇开修改url,这也是如此关联的一种通病了。

tab

  1. tab和scrollspy的UI展现类似,对于导航栏和内容框的关联关系也是使用html属性id哈希值进行关联。
  2. 高亮部分有两个:导航栏;内容框。
  3. 让之前高亮的元素(拥有active类)去掉高亮,让需要高亮的元素进行高亮操作(添加active类)。

tooltip

  1. 作为一种小型UI插件,tooltip没有默认初始化步骤,要使用的时候需要开发人员自行调用。
  2. 在Tooltip构造器中可以看出此时的构造器已经充当了一个原型方法init的启动器。对于更多事件的绑定与监听则放在原型init方法里面。较之modal和scrollspy,传入实例中独立的元素来达到在原型方法里绑定自己独立的事件,可以看到这种写法,相当于将构造器的绑定方法进行了一层封装,并将封装内容塞在原型里面,使得构造器更加苗条。
  3. 此插件另外一个核心内容就是让提示定位到具体元素上面。从定位元素获取offsetWidth、offsetHeight和相对视口的top和left再去定位提示元素。

collapse

  1. 从UI功能来讲,折叠的使用时非常广泛地,折叠方式也是多种多样的。bs一系列插件在关联关系的处理上基本一致。
  2. 使用高度判断是否添加类,相当繁琐,推荐collapse的做法跟tab基本是一致的。

carousel

  1. 轮播插件式比较依赖结构和样式的。
  2. 构造器中为元素绑定mouseenter和mouseleave事件。
  3. 轮播存在prev、next、to等操作。carousel将三种操作抽出公共的slide方法进行处理。
  4. 关于pause和cycle操作,基本采用清除定时器和重启定时器的方式完成。

其他bs的插件并不常用,这里没有列出。

读源码,角度不同,获取收获也不同吧。

bootstrap插件思路整理的更多相关文章

  1. Bootstrap插件的使用

    昨天,我偶然间发现了它——BootStrap插件,它是一一套功能强大的前端组件.说起来,我跟这插件还真算得上有缘,我本来并不是去找这个插件的,我本来是找BootStarp Paginator这个分页插 ...

  2. bootstrap插件学习-bootstrap.dropdown.js

    bootstrap插件学习-bootstrap.dropdown.js 先看bootstrap.dropdown.js的结构 var toggle = '[data-toggle="drop ...

  3. bootstrap插件学习-bootstrap.modal.js

    bootstrap插件学习-bootstrap.modal.js 先从bootstrap.modal.js的结构看起. function($){ var Modal = function(){} // ...

  4. Angular2发布思路(整理官网Deployment页面)

    本文是按着ng2官网的高级内容“Deployment”的思路整理得出的,原文虽然在angular2的中文站下挂着,截止目前却还是英文版未翻译,笔者就在这里结合自己的理解给出原文的一点点整理.这是原文地 ...

  5. Bootstrap -- 插件: 按钮状态、折叠样式、轮播样式

    Bootstrap -- 插件: 按钮状态.折叠样式.轮播样式 1. 按钮(Button)插件:可以添加进一些交互,比如控制按钮状态. 如需向按钮添加加载状态,只需要简单地向 button 元素添加 ...

  6. Bootstrap -- 插件: 提示工具、弹出框、 警告框消息

    Bootstrap -- 插件: 提示工具.弹出框. 警告框消息 1. 提示工具(Tooltip)插件:根据需求生成内容和标记. 使用提示工具: <!DOCTYPE html> <h ...

  7. Bootstrap -- 插件: 模态框、滚动监听、标签页

    Bootstrap -- 插件: 模态框.滚动监听.标签页 1. 模态框(Modal): 覆盖在父窗体上的子窗体. 使用模态框: <!DOCTYPE html> <html> ...

  8. BootStrap插件

    站点引用 Bootstrap 插件的方式有两种: 单独引用:使用 Bootstrap 的个别的 *.js 文件.一些插件和 CSS 组件依赖于其他插件.如果您单独引用插件,请先确保弄清这些插件之间的依 ...

  9. 使用Ajax+jQuery来实现前端收到的数据在console上显示+简单的主页设计与bootstrap插件实现图片轮播

    1.实现前端输入的数据在console上显示 上一篇是解决了在前端的输入信息在cygwin上显示,这次要给前台们能看见的数据,因为数据库里插入的数据少,所以写的语句翻来覆去就那几个词,emmm···当 ...

随机推荐

  1. 1.iOS直播ijkplayer(第一周)

    准备工作: 1.使用的B站的开源框架ijkplayer ,下载地址: https://github.com/Bilibili/ijkplayer ijkplayer 是一个基于 ffplay 的轻量级 ...

  2. [置顶]PADS PCB功能使用技巧系列之NO.001- 如何走蛇形线?

    蛇形线是布线过程中常用的一种走线方式,其主要目的是为了调节延时满足系统时序设计要求,但是设计者应该有这样的认识:蛇形线会破坏信号质量,改变传输延时,布线时要尽量避免使用,因此一块PCB上的蛇形线越多并 ...

  3. [Xpand] Error 1 Invalid option '6' for /langversion; must be ISO-1, ISO-2, 3, 4, 5 or Default

    原因是用的vs2015 默认用了c#6 ,但是在没安装.net 4.6 环境下编译失败. 解决办法很简单,修改 6 为 5 做降级就可以了. 1.nuget install DotNetCompile ...

  4. centos 安装和配置 rabbitmq

    centos 安装 rabbitmq 1.rabbitmq是erlang语言开发的,安装前首先需要安装erlang# yum install erlang -y // 直接安装可能报错,# yum i ...

  5. C语言-数据类型

    数据类型 -基本数据类型 --char 字符型 --int  整型 --浮点型 ---float ---double -指针类型 --void* -空类型 -构架类型 --数组[] --结构体 str ...

  6. html+css实现简易下拉菜单

    <!DOCTYPE html> <html> <head> <style> div { width:100px; height:40px; overfl ...

  7. (转)Linux服务器调优

    Linux内核参数 http://space.itpub.net/17283404/viewspace-694350 net.ipv4.tcp_syncookies = 1 表示开启SYN Cooki ...

  8. art虚拟机启动问题分析

    欢迎转载opendevkit文章, 文章原始地址: http://www.opendevkit.com/?e=69 Attempt to invoke native method in non-sta ...

  9. 奇妙的动态代理:EF中返回的对象为什么序列化失败

    今天有如鹏的学生遇到一个问题:把一个对象保存到Session中(进程外Session)后,Web服务器重启,当从Session读取这个对象的时候报错,提示是一个“T_Users”后面跟着一大串数字的类 ...

  10. JDBC学习1:详解JDBC使用

    什么是JDBC JDBC(Java Database Connectivity),即Java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供同一访问,它由一组用Java ...