fightmaster / fightmaster-bootstrap-bundle
dev-master
2012-08-19 11:42 UTC
Requires
- php: >=5.3.3
- symfony/framework-bundle: >=2.0,<2.2-dev
This package is not auto-updated.
Last update: 2024-09-14 13:20:07 UTC
README
这些是指导Bootstrap插件API开发的顶层设计规则。
DATA-ATTRIBUTE API
我们相信您应该能够仅通过标记API使用Bootstrap提供的所有插件,而无需编写任何JavaScript代码。这是Bootstrap的一等API。
我们承认这并不总是性能最好的,有时可能希望完全关闭此功能。因此,从2.0版开始,我们提供了禁用数据属性API的能力,即解除所有以'data-api'
命名空间在body上绑定的事件。这看起来是这样的
$('body').off('.data-api')
要针对特定插件,只需包含插件名称作为命名空间,以及data-api命名空间,如下所示
$('body').off('.alert.data-api')
PROGRAMATIC API
我们也相信您应该能够仅通过JavaScript API使用Bootstrap提供的所有插件。
所有公共API应该是单一的、可链式的方法,并返回所作用的集合。
$(".btn.danger").button("toggle").addClass("fat")
所有方法都应该接受一个可选的选项对象、一个字符串,用于指定特定方法,或null以启动默认行为
$("#myModal").modal() // initialized with defaults
$("#myModal").modal({ keyboard: false }) // initialized with no keyboard
$("#myModal").modal('show') // initializes and invokes show immediately
OPTIONS
选项应该是稀疏的,并添加通用值。我们应该选择正确的默认值。
所有插件都应该有一个默认对象,可以修改以影响所有实例的默认选项。默认对象可以通过$.fn.plugin.defaults
访问。
$.fn.modal.defaults = { … }
选项定义应采用以下形式
*noun*: *adjective* - describes or modifies a quality of an instance
示例
backdrop: true
keyboard: false
placement: 'top'
EVENTS
所有事件都应有原形和过去分词形式。原形是在动作发生之前触发的,过去分词是在动作完成后触发的。
show | shown
hide | hidden
所有原形事件都应提供preventDefault功能。这提供了停止执行动作的能力。
$('#myModal').on('show', function (e) {
if (!data) return e.preventDefault() // stops modal from being shown
})
CONSTRUCTORS
每个插件应在其Constructor
属性上暴露其原始构造函数,如下所示访问
$.fn.popover.Constructor
DATA ACCESSOR
每个插件在对象中存储调用类的副本。这个类实例可以通过jQuery的数据API直接访问,如下所示
$('[rel=popover]').data('popover') instanceof $.fn.popover.Constructor
DATA ATTRIBUTES
数据属性应采用以下形式
- data-{{verb}}={{plugin}} - 定义主要交互
- data-target || href^=# - 定义在"控制"元素上(如果元素控制除自身之外的元素)
- data-{{noun}} - 定义类实例选项
示例
// control other targets
data-toggle="modal" data-target="#foo"
data-toggle="collapse" data-target="#foo" data-parent="#bar"
// defined on element they control
data-spy="scroll"
data-dismiss="modal"
data-dismiss="alert"
data-toggle="dropdown"
data-toggle="button"
data-toggle="buttons-checkbox"
data-toggle="buttons-radio"