除了图标以外,按钮也许是最简单的组件了,现在来看看如何定义按钮组件。

使用原生按钮组件
在 xmlplus 中,HTML 元素也以组件的方式存在。所以,你可以直接通过使用 button 标签或者 input 标签来使用按钮组件。如下示例所示:
Example: {
xml: "<div id='example'>\
<button>Default</button>\
<input type='submit'>Primary</input>\
</div>"
}
虽然原生按钮外观不那么吸引人,但原生按钮未经特殊包装,所以渲染起来最快,执行效率最高。
使用 Bootstrap 样式的按钮
如果你的项目在视觉上没有特别要求的话。使用 Bootstrap 样式来定义按钮组件是一个好主意。按传统方式使用 Bootstrap 按扭,你需要像下面这样使用。
<button type="button" class="btn btn-default">Default</button> <button type="button" class="btn btn-primary">Primary</button> <button type="button" class="btn btn-success">Success</button>
请认真观察,你是不是觉得它给你的比你要求的要多。你不但发现了好多的 type=button,还发现了好多的 btn。现在下面给出一个组件,它基于 Bootstrap 样式,但它明显地简化了按钮的使用方式。
Button: {
xml: "<button type='button' class='btn'/>",
fun: function (sys, items, opts) {
this.addClass("btn-" + opts.type);
}
}
此按钮组件封装了原始按钮需要重复书写的内容,在使用时,仅需提供 type 属性即可指明目标按钮,使用起来更为便捷。下面给出的是新按钮组件的使用方式。
<Button type='default'>Default</Button> <Button type='primary'>Primary</Button> <Button type='success'>Success</Button>
带有图标的按钮
按钮上除了文字外,还可以附带图标。合适的图标可以使按扭的使用意图更加生动直观。这里以 EasyUI 的图标按钮为例来说明如何封装并使用图标按钮。我们首先来看看,EasyUI 图标按钮的原始使用方式。
<div style="padding:5px 0;"> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="easyui-linkbutton" data-options="iconCls:'icon-add'">Add</a> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="easyui-linkbutton" data-options="iconCls:'icon-remove'">Remove</a> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="easyui-linkbutton" data-options="iconCls:'icon-save'">Save</a> </div>
与上一节对 Bootstrap 按钮的封装类似,通过观察提炼出重复出现的部分,将变化的部分以接口形式展现。上面的按钮仅图标类型名和文本是可变的,所以我们可以做出如下的设计:
Button: {
xml: "<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="easyui-linkbutton"/>",
fun: function (sys, items, opts) {
this.attr("data-options" + "iconCls:'icon-" + opts.type);
}
}
下面是新图标的使用方式,它明显比原始的使用方式简洁多了。
<div style="padding:5px 0;"> <Button type='add'>Add</Button> <Button type='remove'>Reomve</Button> <Button type='save'>Save</Button> <Button type='cut'>Cut</Button> </div>
自定义你的按钮组件
使用类似 Bootstrap, EasyUI 等开源框架,可以避免重造轮子。然而,当这些开源项目无法满足你的需求时,你就需要自己动手了。
为简单起见,现在假定上述 Bootstrap 框架并不存在,那么如何设计一套上述的按钮?这样的实践是非常有意义的,它有助于你举一反三。
现在让我们重新对上面的按钮组件作观察。你会发现,Bootstrap 设计了一些可以组合的样式类,其中 btn 是每一个按钮都需要的,另外像 btn-default、btn-primary 等等都根据需要与 btn 形成组合样式类。好了,根据这个思路,我们就可以设计出如下的组件框架。
Button: {
css: "#btn { 这里是按钮基本的样式 }\
#default { 这里是default样式 }\
#primary { 这里是primary样式 }",
xml: "<button type='button'/>",
fun: function (sys, items, opts) {
this.addClass("#btn #" + opts.type, this);
}
}
上述的设计思路与前面直接使用 Bootstrap 样式定义按钮不同点在于,前者已经为你定义好了各个全局的样式类,你只需要直接引用就可以了。而此处你需要在按扭组件内部自行定义相关样式类。从封装的角度看,后者的内聚性要强于前者,因为它并不暴露全局类名。下面是该组件的使用示例。
Example: {
xml: "<div id='example'>\
<Button type='default'>Default</Button>\
<Button type='primary'>Primary</Button>\
<Button type='success'>Success</Button>\
</div>"
}
注意,为了简化起见,这里的自定义按钮组件略去了 hover、active 样式,所以与 Bootstrap 按钮有些不一样。
本系列文章基于 xmlplus 框架。如果你对 xmlplus 没有多少了解,可以访问 www.xmlplus.cn。这里有详尽的入门文档可供参考。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# xmlplus
# 按钮
# xmlplus组件设计系列之网格(DataGrid)(10)
# xmlplus组件设计系列之文本框(TextBox)(3)
# xmlplus组件设计系列之选项卡(Tabbar)(5)
# xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
# xmlplus组件设计系列之路由(ViewStack)(7)
# xmlplus组件设计系列之分隔框(DividedBox)(8)
# xmlplus组件设计系列之树(Tree)(9)
# xmlplus组件设计系列之列表(4)
# xmlplus组件设计系列之图标(ICON)(1)
# 好了
# 按扭
# 来看看
# 自定义
# 开源
# 就可以
# 的是
# 是一个
# 发现了
# 你是
# 去了
# 还可以
# 你可以
# 你就
# 让我们
# 为你
# 我们可以
# 你对
# 因为它
# 可供
相关文章:
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
制作网页的网站有哪些,电脑上怎么做网页?
设计网站制作公司有哪些,制作网页教程?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
建站之星后台密码如何安全设置与找回?
网站代码制作软件有哪些,如何生成自己网站的代码?
如何通过西部建站助手安装IIS服务器?
如何通过免费商城建站系统源码自定义网站主题与功能?
建站之星安装后如何自定义网站颜色与字体?
已有域名和空间,如何快速搭建网站?
如何在服务器上三步完成建站并提升流量?
制作旅游网站html,怎样注册旅游网站?
电商网站制作公司有哪些,1688网是什么意思?
如何高效配置IIS服务器搭建网站?
如何在宝塔面板中修改默认建站目录?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
建站之星如何快速更换网站模板?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
动图在线制作网站有哪些,滑动动图图集怎么做?
香港网站服务器数量如何影响SEO优化效果?
如何使用Golang安装API文档生成工具_快速生成接口文档
,sp开头的版面叫什么?
如何在IIS7上新建站点并设置安全权限?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
如何快速搭建支持数据库操作的智能建站平台?
如何在万网开始建站?分步指南解析
网站制作费用多少钱,一个网站的运营,需要哪些费用?
如何在腾讯云免费申请建站?
音响网站制作视频教程,隆霸音响官方网站?
建站之星后台管理系统如何操作?
专业商城网站制作公司有哪些,pi商城官网是哪个?
如何零基础在云服务器搭建WordPress站点?
*服务器网站为何频现安全漏洞?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
建站主机选购指南与交易推荐:核心配置解析
如何在Windows服务器上快速搭建网站?
一键网站制作软件,义乌购一件代发流程?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
C#如何使用XPathNavigator高效查询XML
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
如何快速查询域名建站关键信息?
如何在自有机房高效搭建专业网站?
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
建站之星展会模板:智能建站与自助搭建高效解决方案
如何在橙子建站中快速调整背景颜色?
*请认真填写需求信息,我们会在24小时内与您取得联系。