全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

xmlplus组件设计系列之按钮(2)

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

使用原生按钮组件

在 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)  # 好了  # 按扭  # 来看看  # 自定义  # 开源  # 就可以  # 的是  # 是一个  # 发现了  # 你是  # 去了  # 还可以  # 你可以  # 你就  # 让我们  # 为你  # 我们可以  # 你对  # 因为它  # 可供 


相关文章: 深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  常州企业网站制作公司,全国继续教育网怎么登录?  建站主机空间推荐 高性价比配置与快速部署方案解析  建站主机选哪种环境更利于SEO优化?  C++如何编写函数模板?(泛型编程入门)  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  如何在搬瓦工VPS快速搭建网站?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  建站之星安全性能如何?防护体系能否抵御黑客入侵?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  重庆市网站制作公司,重庆招聘网站哪个好?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  如何在阿里云高效完成企业建站全流程?  如何通过宝塔面板实现本地网站访问?  如何在建站宝盒中设置产品搜索功能?  建站之星各版本价格是多少?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  网站制作公司排行榜,抖音怎样做个人官方网站  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  建站之星ASP如何实现CMS高效搭建与安全管理?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  如何解决ASP生成WAP建站中文乱码问题?  制作表格网站有哪些,线上表格怎么弄?  建站之星代理平台如何选择最佳方案?  网站代码制作软件有哪些,如何生成自己网站的代码?  如何选择高效便捷的WAP商城建站系统?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  如何高效配置香港服务器实现快速建站?  如何基于云服务器快速搭建个人网站?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  如何通过VPS搭建网站快速盈利?  如何将凡科建站内容保存为本地文件?  网站制作企业,网站的banner和导航栏是指什么?  网站制作免费,什么网站能看正片电影?  如何通过虚拟主机快速完成网站搭建?  建站主机如何选?性能与价格怎样平衡?  外贸公司网站制作哪家好,maersk船公司官网?  如何选择高效稳定的ISP建站解决方案?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  宿州网站制作公司兴策,安徽省低保查询网站?  c# 在高并发场景下,委托和接口调用的性能对比  官网网站制作腾讯审核要多久,联想路由器newifi官网  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  视频网站app制作软件,有什么好的视频聊天网站或者软件?  如何快速生成可下载的建站源码工具?  如何高效生成建站之星成品网站源码?  西安专业网站制作公司有哪些,陕西省建行官方网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。