ionic button笔记
源码文件:_button.scss 和 _button-bar.scss,以及_variables.scss(66行-163行)。
按钮是手机app不可或缺的一部分,不同风格的app,需要的按钮多种多样,按钮的设置涉及按钮的大小、颜色、状态等。下面将对ionic的按钮样式做一一笔记。
ionic button样式
ionic默认提供9种颜色风格:
$light: #fff !default;
$stable: #f8f8f8 !default;
$positive: #4a87ee !default;
$calm: #43cee6 !default;
$balanced: #66cc33 !default;
$energized: #f0b840 !default;
$assertive: #ef4e3a !default;
$royal: #8a6de9 !default;
$dark: #444 !default;
使用如下所示:
<button class="button">
Default
</button>
<button class="button button-light">
button-light
</button>
<button class="button button-stable">
button-stable
</button>
<button class="button button-positive">
button-positive
</button>
<button class="button button-calm">
button-calm
</button>
<button class="button button-balanced">
button-balanced
</button>
<button class="button button-energized">
button-energized
</button>
<button class="button button-assertive">
button-assertive
</button>
<button class="button button-royal">
button-royal
</button>
<button class="button button-dark">
button-dark
</button>
效果图如下:
按钮风格首先定义了基础的.button,以及根据不同的颜色风格,定义不同ative行为特效。.button基础样式部分代码如下:
// _button.scss 第7行 - 30行
.button {
// set the color defaults
@include button-style($button-default-bg, $button-default-border, $button- default-active-bg, $button-default-active-border, $button-default-text);
position: relative;
display: inline-block;
margin: 0;
padding: 0 $button-padding;
min-width: ($button-padding * 3) + $button-font-size;
min-height: $button-height + 5px;
border-width: $button-border-width;
border-style: solid;
border-radius: $button-border-radius;
vertical-align: top;
text-align: center;
text-overflow: ellipsis;
font-size: $button-font-size;
line-height: $button-height - $button-border-width + 1px;
cursor: pointer;
另外,根据不同的颜色样式的active的效果也不一样,如positive颜色样式的active效果如下:
$button-positive-bg: $positive !default;
$button-positive-text: #fff !default;
$button-positive-border: darken($positive, 15%) !default;
$button-positive-active-bg: darken($positive, 15%) !default;
$button-positive-active-border: darken($positive, 15%) !default;
字体颜色为白色(#fff),边框颜色加深15%;当按钮按下时,背景颜色加深15%。其它颜色样式的active效果类似。
Block Buttons & Full Width Block Buttons
通常按钮的宽度是由text长度+左右padding值决定的,所以很难满足100%宽度的填充父容器。然而,ionic提供了block级的button样式(Block Buttons & Full Width Block Buttons)。这两类Buttons的代码如下:
.button-block {
display: block;
clear: both;
&:after {
clear: both;
}
}
.button-full,
.button-full > .button {
display: block;
margin-right: 0;
margin-left: 0;
border-right-width: 0;
border-left-width: 0;
border-radius: 0;
}
button.button-block,
button.button-full,
.button-full > button.button,
input.button.button-block {
width: 100%;
}
示例如下:
<button class="button button-block button-positive">
Block Button
</button>
<button class="button button-full button-positive">
Full Width Block Button
</button>
效果图:
从上面可以看出,这两者的相同点在于display: block,而Full Width Block Buttons删除左右边框和边框半径(border-radius);Block Buttons保留着padding,让元素间有点呼吸空隙,而Full Width Bloc Buttons不包含padding值。
button大小
除了正常大小之外,ionic提供两种不同的Sizes: button-large、button-small
.button-small {
padding: 2px $button-small-padding 1px;
min-width: $button-small-height;
min-height: $button-small-height + 2;
font-size: $button-small-font-size;
line-height: $button-small-height - $button-border-width - 1;
.icon:before,
&.icon:before,
&.icon-left:before,
&.icon-right:before {
font-size: $button-small-icon-size;
line-height: $button-small-icon-size + 3;
margin-top: 3px;
}
}
.button-large {
padding: 0 $button-large-padding;
min-width: ($button-large-padding * 3) + $button-large-font-size;
min-height: $button-large-height + 5;
font-size: $button-large-font-size;
line-height: $button-large-height - $button-border-width;
.icon:before,
&.icon:before,
&.icon-left:before,
&.icon-right:before {
padding-bottom: ($button-border-width * 2);
font-size: $button-large-icon-size;
line-height: $button-large-height - ($button-border-width * 2) - 1;
}
}
示例代码:
<button class="button button-small button-assertive">
Small Button
</button>
<button class="button">
Default Button
</button>
<button class="button button-large button-positive">
Large Button
</button>
<button class="button button-block button-small button-assertive">
Small Button
</button>
<button class="button button-block">
Default Button
</button>
<button class="button button-block button-large button-positive">
Large Button
</button>
效果图:
两者主要的区别在于:padding、min-width、min-height、font-size 和 line-height。
Outlined Button & Clear Button
这两种button,都是无背景、字体颜色为button样式颜色,其中clear button是无边框的,源代码如下:
button-clear {
@include button-clear($button-default-border);
@include transition(opacity .1s);
padding: 0 $button-clear-padding;
max-height: $button-height;
border-color: transparent;
background: none;
box-shadow: none;
&.active,
&.activated {
opacity: 0.3;
}
}
.button-outline {
@include button-outline($button-default-border);
@include transition(opacity .1s);
background: none;
box-shadow: none;
}
示例代码:
<button class="button button-outline button-positive">
Outlined Button
</button>
<button class="button button-clear button-positive">
Clear Button
</button>
效果图:
Icon Buttons
一个按钮只有冷冷的文字显得没有生气,这时添加个icon,会使app的效果更上一个台阶。其中你可以使用ionic提供的Ionicons,或者其它类型的icon。
同时,虽然我们能够在button中添加icon子元素,但这样做会增加DOM元素,增加DOM载入负担,所以ionic提供了Icon Buttons样式。
使用示例:
<button class="button">
<i class="icon ion-loading-c"></i> Loading...
</button>
<button class="button icon-left ion-home">Home</button>
<button class="button icon-left ion-star button-positive">Favorites</button>
<a class="button icon-right ion-chevron-right button-calm">Learn More</a>
<a class="button icon-left ion-chevron-left button-clear button-dark">Back</a>
<button class="button icon ion-gear-a"></button>
<a class="button button-icon icon ion-settings"></a>
<a class="button button-outline icon-right ion-navicon button-balanced">Reorder</a>
效果图:
不错吧,不仅可以只显示icon,也可以icon+text;不仅可以左边显示,可以右边显示icon。
header、footer下button的使用
button可以使用在app的各个空间中,如在header中使用,在app头部左右各增加一个button,代码如下:
<div class="bar bar-header">
<button class="button icon ion-navicon"></button>
<h1 class="title">Header Buttons</h1>
<button class="button">Edit</button>
</div>
效果图:
其中,以上的button样式基本都可以应用其中。
a button
此外,ionic提供了链接a的button效果,源代码:
a.button {
text-decoration: none;
}
Button Bar
ionic提供了类似Bootstrap按钮组.btn-group效果,源代码如下:
/**
* Button Bar
* --------------------------------------------------
*/
.button-bar {
@include display-flex();
@include flex(1);
width: 100%;
&.button-bar-inline {
display: block;
width: auto;
@include clearfix();
> .button {
width: auto;
display: inline-block;
float: left;
}
}
}
.button-bar > .button {
@include flex(1);
display: block;
overflow: hidden;
padding: 0 16px;
width: 0;
border-width: 1px 0px 1px 1px;
border-radius: 0;
text-align: center;
text-overflow: ellipsis;
white-space: nowrap;
&:before,
.icon:before {
line-height: 44px;
}
&:first-child {
border-radius: 2px 0px 0px 2px;
}
&:last-child {
border-right-width: 1px;
border-radius: 0px 2px 2px 0px;
}
}
示例代码:
<div class="button-bar">
<a class="button">First</a>
<a class="button">Second</a>
<a class="button">Third</a>
</div>
其中按钮组是一个block组件,100%宽度;
排除第一个和最后一个按钮,其它按钮都取消圆角设置;
第一个按钮的左上角和左下角保留圆角设置;
最后一个按钮保留右上角和右下角圆角设置。
除了最后一个按钮之外,其它的border-width: 1px 0px 1px 1px;;
最后一个按钮再补上最右边的边框: border-right-width: 1px;。
ionic button笔记的更多相关文章
- Ionic开发笔记
Ionic 开发笔记 记录开发中遇到的一些问题 ion-side-menu,使所有顶部导航标题居中 <!-- 添加 align-title="center" 使顶部导航标题居 ...
- Ionic学习笔记5_动态组件指令
1. 模态对话框 : $ionicModal 模态对话框常用来供用户进行选择或编辑,在模态对话框关闭之前,其他 的用户交互行为被阻止 .操作模态对象返回结果,模态对象的方法提前定制. 三个步骤 1.声 ...
- Ionic学习笔记4_ionic路由(页面切换)
1.1. ionic路由机制: 状态 1.2. ion-nav-view <body ng-controller="firstCtrl"> <a class= ...
- Ionic学习笔记3_ionic指令简单布局
1) 添加引用类库(ionic样式和ionic js文件) 2) 标题栏,页脚栏,内容区 3) Js引入ionic类库,添加页面操作方法和对象 4) 数据初始化 5) Html页面 ...
- Ionic学习笔记1_基本布局
<body> <!-- 头部 --> bar里嵌入子元素:title,button,button-bar和 inpu ...
- Ionic 学习笔记
本文为原创,转载请注明出处: cnzt 文章:cnzt-p http://www.cnblogs.com/zt-blog/p/7831153.html 注: 本篇学习笔记基于Ionic 3 ...
- ionic 开发笔记
1.AngularJS 外部的控制器(DOM 事件.外部的回调函数如 jQuery UI 空间等)调用了 AngularJS 函数之后,必须调用$apply.在这种情况下,你需要命令 AngularJ ...
- Ionic学习笔记三 Gulp在ionic中的使用
简介 Gulp是一个基于流的自动化构建器. 安装 npm config set registry http://registry.npm.taobao.org ---最好用国内源 npm instal ...
- ionic 项目笔记
最近公司在用ionic 做 微站,项目中难免遇到一些问题.总结如下: 1. 改了Slidebox 动态绑定图片时,页面会显示一片空白,改变窗口大小的时候,图片就出来了,说明动态绑定图片时, ...
随机推荐
- 深入浅出OOP(五): C#访问修饰符(Public/Private/Protected/Internal/Sealed/Constants)
访问修饰符(或者叫访问控制符)是面向对象语言的特性之一,用于对类.类成员函数.类成员变量进行访问控制.同时,访问控制符也是语法保留关键字,用于封装组件. Public, Private, Protec ...
- phoneGap2.9+eclipse开发环境和helloword案例
不同机器安装和使用各不相同,这里也只是记录一下自己机器上面的使用过程. android安装环境前面的文章有些,这里不再说,直接上phoneGap的过程.因为phoneGap2.9.1需要安装nodej ...
- 网站标题ico那些事
浏览器打开一个网页都会有一个标题,用来显示当前页面的相关内容,如网站名称或者一篇文章的大标题,而定义它应该显示啥的话完全由HTML中title标签的内容决定. 如我们的大博客园:
- 3-MSP430引脚中断
为了写一篇文章做铺垫--提醒着自己,,,,,, 这两天一直在寻找 #pragma vector = PORT1_VECTOR __interrupt void P1_Interrupt()//P1口中 ...
- javaweb学习总结(十五)——JSP基础语法
任何语言都有自己的语法,JAVA中有,JSP虽然是在JAVA上的一种应用,但是依然有其自己扩充的语法,而且在JSP中,所有的JAVA语句都可以使用. 一.JSP模版元素 JSP页面中的HTML内容称之 ...
- 使用AJAX填充<select>标签下拉项,没有显示指定的option项
newCarInfo.js代码如下: $(function() { // 获取燃油种类 url = "basicFuelType_queryAll.action"; ...
- android: Android Notification
Notification即通知,用于在通知栏显示提示信息. 在较新的版本中(API level > 11),Notification类中的一些方法被Android声明deprecated(弃用 ...
- Directx11教程(14) D3D11管线(2)
下面我们来了解一些GPU memory的知识,主要参考资料:http://fgiesen.wordpress.com/0211/07/02/a-trip-through-the-graphics-pi ...
- 兼容iOS 10 资料整理
1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大改重构,这让开发者也体会到UserN ...
- GTD中定位篇
一:为什么要定位? 每天我们的大脑涌现很多想法和要处理很多事情,如果我们没有一套流模式处理这些想法和事情,我们大脑将会处于混战忙碌中,很快就被淹没. 定位的目的: 就是有一套流模式有序的分界我们想法和 ...