目录:

  1. 简介
    1. Hybrid vs. Others
    2. ionic
    3. CSS框架
  2. 基本布局
    1. 布局模式
    2. 定高条块:.bar
    3. .bar : 位置
    4. .bar : 嵌入子元素
    5. .bar : 嵌入input
    6. 内容:.content和.scroll-content

Hybrid vs. Others

要开发手机App,目前有三种方式:

原生/Native:使用原生SDK开发App。优点不用说,当你有足够的资源,这是最理想的方式;缺点是对不同的 平台要分别开发,成本高、周期长。

原生脚本/NativeScript:将原生API封装成JavaScript接口,这有点像前端的nodejs。NativeScript方式 与原生相比性能损失不大(据称只有10%左右),优点是开发语言统一使用JavaScript,缺点是 要针对不同的平台分别开发。

混合/Hybrid:使用web技术开发App,使用Cordova/PhoneGap之类进行打包封装。优点是采用标准的web技术开发, 避免了不同平台原生开发体系的学习,上手快、效率高;缺点是性能上有一定损失。

ionic属于hybrid开发模式,本质上是将移动web应用与浏览器打包,优点和缺点都很明显。 是否采用这种模式,需要根据具体情况综合考虑。

不过在大多数场景下,如果你已经具备一定的web开发经验,采用这种方式进入移动App开发领域,还是不错的一个选择。 毕竟,将产品低成本地开发出来并更快地推向市场,有时是最重要的事情。

ionic

ionic是一个强大的混合式/hybridHTML5移动开发框架,特点是使用标准的HTML、 CSS和JavaScript,开发跨平台(目前支持:Android、iOS,计划支持:Windows Phone、Firefox OS) 的原生App应用:

ionic主要包括三个部分:

CSS框架 - 提供原生App质感的CSS样式模拟。ionic这部分的实现使用了ionicons图标样式库。

JavaScript框架 - 提供移动Web应用开发框架。ionic基于AngularJS基础框架开发,因此 自然地遵循AngularJS的框架约束;此外,ionic使用AngularJS UI Router实现前端路由。

命令行/CLI - 命令行工具集用来简化应用的开发、构造和仿真运行。ionic命令行工具使用了 Cordova,依赖于平台SDK(Android & iOS)实现将移动web项目打包成原生app。

由于ionic使用了HTML5和CSS3的一些新规范,所以要求 iOS7+/ Android4.1+。 在低于这些版本的手机上使用ionic开发的应用,有时会发生莫名其妙的问题。

CSS框架

如果你对AngularJS这样的东西不感兴趣,可以只使用ionic的CSS框架:直接在HTML中引入 ionic.css就可以了。

ionic的CSS框架主要提供预定义的CSS类,来帮助我们快速构建适用于手机端的UI。 ionic的预定义CSS类主要分四个方面:

基本布局类

ionic将手机页面的布局模式基本抽象为三块:头、内容、尾。基本布局类提供了 这几个区域的CSS类。

颜色和图标类

ionic定义了几个配色方案CSS类,并使用ionicons提供的字体图标类。

界面组件类

ionic定义了丰富的界面组件CSS类,让HTML元素看起来像移动平台的UI组件。

栅格系统类

和Bootstrap一样,ionic也提供了栅格系统。不过ionic的实现是基于CSS3的FlexBox 模型,更为灵活。

布局模式

手机App开发实践中,用户界面通常划分为几个区域 - 标题/header、内容/content和页脚/footer。 微信采用的就是典型的三段布局:

标题区总是位于屏幕顶部,页脚区总是位于屏幕底部,而内容区占据剩余的空间。 ionic使用以下CSS类声明区域性质:

.bar.bar-header- 声明元素为标题区

.bar.bar-footer - 声明元素为页脚区

.content- 声明元素为内容区

定高条块:.bar

样式.bar将元素声明为屏幕上绝对定位的块状区域,具有 固定的高度(44px):

<any class="bar">...</any>

一旦元素应用了.bar样式,就可以继续选用两类预定义样式来进一步 声明元素及其内容的外观:

  1. 同级样式 - 同级样式与.bar应用在同一元素上,声明元素的位置、配色等。
  2. 下级样式 - 下级样式只能应用在.bar的子元素上,声明子元素的大小等特征。

.bar : 位置

ionic使用以下样式定义条块的位置:

.bar-header - 置顶

.bar-subheader - header之下置顶

.bar-footer - 置底

.bar-subfooter - footer之上置底

在腾讯新闻App中,你可以看到,使用了三个条块:标题、副标题、页脚:

.bar : 嵌入子元素

在ionic中,有三种.bar子元素的样式是预定义的:

标题文字 - 对包含标题文字的元素应用.title样式,通常使用h1元素:

<any class="bar">
    <any class="title">…</any>
</any>

按钮 - 对用作按钮的元素,应用.button样式,通常使用button 或a元素作为按钮。注意按钮将使用.bar的配色方案:

<any class="bar">
    <any class="button">…</any>
</any>

工具栏 - 工具栏包含一组按钮。对用作工具栏的元素,应用.button-bar样式,通常 使用div元素作为工具栏:

<any class="bar">
    <any class="button-bar">…</any>
</any>

.bar : 嵌入input

一种常见的UI模式是在标题栏中嵌入搜索栏,比如大众点评:

在.bar元素中嵌入input元素,需要注意两点:

  1. 在条块元素上应用.item-input-inset样式

  2. 将input包裹在应用.item-input-wrapper样式的元素内 这是因为,在ionic的实现中,.bar中的.input 样式定义如下:

     .bar.item-input-inset{
         .item-input-wrapper{
             .input{
                 ...
             }
         }
     }

内容:.content和.scroll-content

ionic预定义了两个内容容器样式:

.content - 流式定位,内容元素在文档流中按顺序定位

.scroll-content - 绝对定位,内容元素占满整个屏幕 这两种样式都可以使用以下样式进一步确定位置及范围:

参考资料:http://www.dwz.cn/2uN9lK

ionic入门之基本布局的更多相关文章

  1. Ionic 入门与实战之第三章:Ionic 项目结构以及路由配置

    原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第三章,主要对 Ionic 的项目结构作了介绍,并讲解了Ionic 中的路由概念以及相关配置. 原文发表于我的技术博客 1. Ioni ...

  2. Ionic 入门与实战之第二章第二节:Ionic 环境搭建之 Ionic Lab 使用

    原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第二章第二节,主要对 Ionic Lab 工具作了介绍,并讲解了其使用方法,这也是一个开发 Ionic 比较好的调试工具. 原文发表于 ...

  3. Ionic 入门与实战之第一章:Ionic 介绍与相关学习资源

    原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第一章,主要对 Ionic 的概念.发展历程.适配的移动平台等知识进行了介绍,并分享了 Ionic 相关的学习资源. 原文发表于我的技 ...

  4. Ionic 入门与实战之第二章第一节:Ionic 环境搭建之开发环境配置

    原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第二章第一节,主要对 Ionic 的开发环境配置做了简要的介绍,本文介绍的开发环境为 Mac 系统,Windows 系统基本类似,少许 ...

  5. ionic 入门创建第一个应用demo

    一.ionic卸载 1.清除旧版本的ionic框架 npm uninstall -g ionic npm uninstall -g cordova npm cache clear npm cache ...

  6. ionic入门之AngularJS扩展基本布局

    目录: 标题栏 : ion-header-bar 页脚栏 : ion-footer-bar header/footer : 样式及内容 内容区 : ion-content 滚动框 : ion-scro ...

  7. Ionic入门二:网格(Grid)页面布局

    ionic 的网格(Grid)和其他大部分框架有所不同,它采用了弹性盒子模型(Flexible Box Model) .而且在移动端,基本上的手机都支持.row 样式指定行,col 样式指定列. 1. ...

  8. 前端入门5-CSS弹性布局flex

    本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 声明 本系列文章内容全部梳理自以下四个来源: <HTML5权威指南> <JavaScript权威指南> MD ...

  9. WPF新手快速入门系列 1.布局

    [概要] 该系列文章主要描述,新手如何快速上手做wpf开发.看过网上部分的教程,主要讲述的是介绍控件.这并没有问题,但是没有把自己的使用经验也完整的描述出来. 所以特此编写此系列文章希望能帮助到,因为 ...

随机推荐

  1. Oracle中merge into的使用 (转)

    该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据. ORACLE 9i 中,使用此命令必须同时指定UPDATE 和INSERT 关键词,ORACLE 10g 做了如下改动. 1.ins ...

  2. 数据库 版本号是 661,打不开。此server支持 655 和更早的版本号。不支持降级路径

    "数据库 的版本号为 661,无法打开.此server支持 655 版及更低版本号. 不支持降级路径" 出现这种问题,通常是由于数据库版本号不同造成的. 我们能够用以下的语句查询数 ...

  3. C++中的class (2)

    class Father { protected void methodA(){ //do something } private void methodB(){//do something } } ...

  4. csdn仍是&quot;待定&quot;对?

    正如标题,我的博客会审查,?我们见证.如此反复.考虑到该博客平台的变化.              看来,这次最终逃脱被"待审核",看来再也不用受这个困扰了,希望以后CSDN可以在 ...

  5. CodeForces 396C 树状数组 + DFS

    本主题开始看到以为段树或树状数组,但是,对于一个节点的有疑问的所有子节点的加权,这一条件被视为树的根,像 然后1号是肯定在第一层中,然后建立一个单向侧倒查,然后记录下来 其中每个节点 层,终于 两个节 ...

  6. Java得到年在一个季度的错误的第一天

    1.错误叙述性说明 Exception in thread "main" java.lang.IllegalArgumentException: Cannot format giv ...

  7. Android 通过应用程序来设置系统的日期和时间中的

    Android 通过应用程序来设置系统的日期和时间中的 android 2.3 android 4.0 测试可行,刚需ROOT权限. import java.io.DataOutputStream; ...

  8. Android与server通信中的方法(TCP)高效的安全完整

    我以前一直使用sockets实现emulator和PC进行通讯,卡了几天,最后请教其它人最终能够连接了.  错误原因是在IP和port,IP要用本机IP(在CMD输入ipconfig.注意:每次开机本 ...

  9. Hsql中In没有1000的限制

    SELECT * FROM user , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ...

  10. SAP ABAP 它已被释放TR(或任务),减少的变化TR(任务),删除释放TR(任务)

    有时,我们会遇到将是一个TR以下任务task发布,然后想改变,或不想转移TR. 或想删除已释放TR. 研究发现后面,TR(任务)存储在数据库表汇的相应数据:E070(变化 & 交通系统: 求/ ...