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%宽度;

  1. 排除第一个和最后一个按钮,其它按钮都取消圆角设置;
  2. 第一个按钮的左上角和左下角保留圆角设置;
  3. 最后一个按钮保留右上角和右下角圆角设置。
  4. 除了最后一个按钮之外,其它的

    ;

    ;

  5. 最后一个按钮再补上最右边的边框:

    ;

ionic提供众多的button样式,通过不同的组合能够构建出不一样的app视觉效果出来。

ionic button笔记

时间: 2024-08-08 13:57:39

ionic button笔记的相关文章

ionic button 一些使用心得

 分类: ionic cordova|phonegap 源码文件:button.scss 和 _button-bar.scss,以及variables.scss(66行-163行). 按钮是手机app不可或缺的一部分,不同风格的app,需要的按钮多种多样,按钮的设置涉及按钮的大小.颜色.状态等.下面将对ionic的按钮样式做一一笔记. ionic button样式 ionic默认提供9种颜色风格: $light:                           #fff !default;

Ionic学习笔记4_ionic路由(页面切换)

1.1.  ionic路由机制: 状态 1.2.  ion-nav-view <body ng-controller="firstCtrl"> <a class="button" ui-sref="map">map</a> <a class="button" ui-sref="music">music</a> <a class="b

Ionic学习笔记1_基本布局

<body> <!-- 头部 -->                               bar里嵌入子元素:title,button,button-bar和 input <div class="bar bar-header bar-dark item-input-inset"> <h1 class="title">Header</h1>                      布局?  item

Ionic学习笔记3_ionic指令简单布局

1)   添加引用类库(ionic样式和ionic js文件) 2)   标题栏,页脚栏,内容区 3)   Js引入ionic类库,添加页面操作方法和对象 4)   数据初始化 5)   Html页面绑定方法和对象 <!DOCTYPE html> <html ng-app="myApp"> <head> <meta charset="UTF-8"> <meta name="viewport"

Ionic学习笔记5_动态组件指令

1. 模态对话框 : $ionicModal 模态对话框常用来供用户进行选择或编辑,在模态对话框关闭之前,其他 的用户交互行为被阻止 .操作模态对象返回结果,模态对象的方法提前定制. 三个步骤 1.声明对话框模板 使用ion-modal-view指令声明对话框模板,对话框模板通常置入 script内以构造内联模板: <script id="a.html" type="text/ng-template"> <ion-modal-view> &l

Ionic学习笔记三 Gulp在ionic中的使用

简介 Gulp是一个基于流的自动化构建器. 安装 npm config set registry http://registry.npm.taobao.org ---最好用国内源 npm install -g gulp npm install --save-dev gulp 创建文件 gulpfile.js var gulp = require('gulp'); gulp.task('default', function() { // place code for your default ta

ionic 项目笔记

最近公司在用ionic 做 微站,项目中难免遇到一些问题.总结如下: 1.       改了Slidebox 动态绑定图片时,页面会显示一片空白,改变窗口大小的时候,图片就出来了,说明动态绑定图片时,需要手动去重绘页面,即调用$ionicSlideBoxDelegate.Update()方法. 2.       SideMenu 控件,使用时在菜单上面点来点去,再次访问已经点击过的菜单 的时候,SideMenu不会缩回去,而且有时候页面点都点不动,需要调用 menu-close 指令强制将菜单关

ionic 学习笔记1

Ionic 介绍 Ionic是一个前端的框架,结合html5,css3和javascript做出类似native app的移动应用,Ionic框架很先进,js部分是基于angular js框架,大量使用css3,版本升级基于bower ionic环境搭建 1.node.js 安装 http://nodejs.org/ 2. sudo npm install -g cordova ionic 3.ionic更新 sudo npm update -g cordova ionic 3.ionic创建工

ionic 开发笔记

1.AngularJS 外部的控制器(DOM 事件.外部的回调函数如 jQuery UI 空间等)调用了 AngularJS 函数之后,必须调用$apply.在这种情况下,你需要命令 AngularJS 刷新自已(模型.视图等), $apply 就是用来做这件事情的.代码举例: 1 var app = angular.module("myApp", []); 2 app.controller('firstController',function($scope){ 3 $scope.na