Ionic学习笔记1_基本布局

<body>

      <!-- 头部 -->                               bar里嵌入子元素:title,button,button-barinput  

      <div class="bar bar-header bar-dark item-input-inset">                       

                 <h1 class="title">Header</h1>                      布局?  item-input-inset, item-input-wrapper

                 <label class="item-input-wrapper">

            <a class="button button-clear icon ion-search"></a>

                             <input class="light-bg" type="text" placeholder="qingshuru">

                 </label>                 

                 <a class="button button-clear icon ion-ios-gear"></a>                  

      </div>   

      <!-- 二级栏目 -->

      <div class="bar bar-subheader bar-stable">

                 <div class="button-bar">

                             <a class="button button-balanced">button1</a>

                             <a class="button button-clear">button2</a>

                 </div>

      </div>         

      <!-- -->

      <div class="scroll-content has-header has-subheader">

                 <h1 class="title">Content</h1>

      </div>

      <!-- 底部 -->

      <div class="bar bar-footer bar-calm">                      

                 <div class="button-bar">           

                       <i class="icon ion-home" style="font-size:50px;"></i>    声明图标大小及位置

                             <a class="button button-balanced icon icon-right ion-document-text">button3</a>

                             <a class="button button-clear">button4</a>

                 </div>

      </div>

</body>

1.1. .bar

     

标题文字 -.title样式,通常使用h1元素

按钮     -.button样式,通常使用button 或a元素作为按钮

工具栏:  -.button-bar样式,使用div元素作为工具栏

1.1.1. 在.bar元素中嵌入input元素

在标题栏中嵌入搜索栏

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

v 将input包裹在应用.item-input-wrapper样式的元素内

      <div class="bar bar-header bar-energized item-input-inset">

         <a class="button button-clear icon-right ion-android-arrow-dropdown">北京</a>

                 <label class="item-input-wrapper">

                             <input class="light-bg" type="text" placeholder="qingshuru">

                 </label>

      </div>

     <label class="item-input-wrapper">

<a class="button button-clear icon ion-search"></a>

<input class="light-bg" type="text" placeholder="qingshuru">

</label>                 

1.1.2. button

按钮应用.button样式,常使button 或a元素作为按钮

 嵌入图标

               <a class="button"> <i class="icon ion-home"></i>Home </a>

  <a class="button icon-left ion-home"> Home </a>

  <div class="button icon ion-plus"></div>

  <button class="button button-calm button-block">Home</button>           button显示成块元素

²     button-block

               button显示成块元素 <button class="button button-calm button-block">button-light</button>

1.2.  Ionic色彩、图标和边距

前景,背景,边框 及内边距偏移

  

内边距统一为10px

1.3. .content和.scroll-content

<div class="scroll-content has-header padding ">

                 <i class="icon ion-arrow-up-a calm">图标</i>     

                 <i class="icon ion-arrow-up-a balanced"></i>

                 <div class="balanced-bg light">背景 字体</div>                 

                 <div class="padding-left">

    <div class="energized-bg light">偏移</div>

     </div>

</div>

内容容器样式:

 .content – 相对定位

 .scroll-content - 绝对定位,内容元素占满整个屏幕

1.3.1.  .hasheader

 

1.3.2.  .ion 图标

      .icon - 将元素声明为图标

.ion-{icon-name} - 声明要使用的具体图标 ,图标及具体名称,需要访问ionics.com

<any style="font-size:100px;"> 图标的大小:

       <i class="icon ion-search"></i>

</any>

1.3.3.  .list .item

         .list定义列表容器, 使用.item定义列表成员:

容器外观定制 .list元素

边框,缩进,阴影

列表外观定制 .item元素

分组,配色,边框

插入文本、徽章、图标、图像(头像、缩略图或大图)、按钮等各种 样式的元素

设置图文位置排版

简单应用

1)       .item : 嵌入文本

h1~h6/p标签插入不同规格的文本

嵌入文本、徽章

文本可扩展多行,徽章可设置背景及字

2)       .item :嵌入图标

.item元素上声明图标位置。使用.item-icon-left和.item-icon-right声明

.item元素内插入图标 list-inset

3)       .item : 嵌入头像

头像被设置为40x40固定大小 

.item元素上声明头像位置。使用.item-avatar-left和.item-avatar-right声明

.item元素内使用img标签插入头像

4)       .item : 嵌入缩略图

缩略图被定义为80px大小,比头像大,适合新闻图片。

.item元素上声明缩略图位置。缩略图可以位于列表的左侧或右侧,分别使用.item-thumbnail-left和.item-thumbnail-right声明

.item元素内使用img标签插入头像。

img标签放到.item内容的开头!

5)       .item : 嵌入大图 item-image

6)       .item :中使用按钮button

.item上声明按钮位置。可以位于列表的左侧或右侧, 分别使用.item-button-left和.item-button-right声明

.item元素内插入按钮

v  例1文本列表(单列)。  

                        <ul class="list list-inset">

                                   <li class="item">课程</li>

                                   <li class="item">          h1~h6/p标签插入不同规格的文本                 

                                               <h2>国务院常务会议部署推进公司注册资本登记制度改革</h2>

                                               <p>中国青年报</p>

                                   </li>

                                   <!-- 嵌入文本、徽章及徽章背景字 -->                     

                                   <li class="item">

                                               Mega Man  <i class="badge positive-bg light">15</i>

                                   </li> 

                           <li class="item item-button-right">

                <button class="button icon-left ion-home">按钮</button>

                Enter home address

             </li>

        <li class="item">

           <button class="button button-calm button-block">button-light</button>

        </li>

                                   <!-- 嵌入图标图标和文字排版,位置最多只能两图标,文本可扩展徽章多行  -->

                                   <li class="item  item-icon-left  item-icon-right">   

                   <i class="icon ion-location"></i>

                   <h2>入住城市:当前位置 </h2>

                                               <h2>地址 </h2>

                    <i class="icon ion-ios-arrow-right"></i>

             </li>              

                                   <!-- 缩略图位置  -->                                

                                   <li class="item item-thumbnail-left">           

                                               <img src="img/a-1.jpg">

                                               <h2>热点 <i class="badge positive-bg light">15</i> </h2>

                                               <h2>大黄鸭在北京两个月创收超两亿元 今日离京</h2>

                                               <p>中国经营报</p>

                                   </li>  

                                   <!-- 图像位置  -->                                   

            <li class="item item-avatar">                       

                <img src="img/a-1.jpg">

                <h2>Thomasguy</h2>

                <p>真的好好吃啊...</p>

            </li>

                                   <!-- 图片位置  -->                                   

                                   <li class="item item-image">                     

                                               <img src="img/bmw.jpg">

                                   </li>

                       </ul>

 

v  例2使用 div 和 a 显示 item

<div class="list ">   

                 <a  href="#" class="item">课程</a>

                 <a  href="#" class="item">                             

                             <h2>国务院常务会议部署推进公司注册资本登记制度改革</h2>

                             <p>中国青年报</p>

                 </a>

                 <a  href="#" class="item">

                             Mega Man <i class="badge positive-bg aght">15</i>

                 </a>

                               <a class="item item-icon-left" href="#">

                                 <i class="icon ion-person-stalker"></i>         图标

                                 Friends

                                 <span class="badge badge-assertive">0</span>  徽章

                               </a>

                                     <a class="item item-icon-left" href="#">

                                       <i class="icon ion-mic-a"></i>

                                       Record album

                                       <span class="item-note"> Grammy</span>      说明

                                     </a>

<div class="item item-button-right">

    Call Ma

    <button class="button button-positive">      按钮 带图标

      <i class="icon ion-ios-telephone"></i>

    </button>

  </div>

<a class="item item-avatar" href="#">             索罗图

      <img src="venkman.jpg">

      <h2>Venkman</h2>

      <p>Back off, man. I'm a scientist.</p>

</a>

<a class="item item-thumbnail-left" href="#">

      <img src="cover.jpg">

      <h2>Pretty Hate Machine</h2>

      <p>Nine Inch Nails</p>

</a>

</div>

v  列表分隔符 item-divider

使用 item-divider 类来为列表创建分隔符,默认情况下,列表项以不同的背景颜色和字体加粗来区分

v  内嵌列表 list list-inset

与常规列表区别是,它设置了外边距(marign),类似于选项卡。

内嵌列表是没有阴影效果的,滚动时效果会更好

v  例3使用分组

1.3.4.  卡片 card

针对移动端的应用,卡片会根据屏幕大小自适应大小。可以很灵活的控制卡片的显示效果,甚至实现动画效果。卡片一般放在页面顶部,当然也可以实现左右切换的功能. 卡片(card)默认样式带有box-shadow(阴影),由于性能的原因,和他类似的元素像 list list-inset 并没有阴影。如果你有很多的卡片,每个卡片都有很多子元素,建议使用内嵌列表(inset list)。

. card 可以让list和左右有一些边距

. item-divider元素定义list的头和尾

<div class="list card">                                

                                   <div class="item item-divider">                  

                                               I'm a Header in a Card!

                                   </div>

                                   <div class="item item-text-wrap">

                                               This is a basic Card with some text.

                                               <a href="#" class="item item-icon-left">

                                                          <i class="icon ion-home"></i>

                                                          Enter home address

                                               </a>

                                               <a href="#" class="item item-icon-left">

                                                          <i class="icon ion-ios-telephone"></i>

                                                          Enter phone number

                                               </a>

                                               <a href="#" class="item item-icon-left">

                                                          <i class="icon ion-wifi"></i>

                                                          Enter wireless password

                                               </a>

                                   </div>

                                   <div class="item item-divider">

                                               I'm a Footer in a Card!

                                   </div>

                       </div>

卡片展现

开始使用了 list card 元素,并使用了 item-avatar , item-body 元素用于展示图片和文本信息,底部使用 item-divider 类。

<div class="list card">

  <div class="item item-avatar">

    <img src="mcfly.jpg">

    <h2>Marty McFly</h2>

    <p>November 05, 1955</p>

  </div>

  <div class="item item-body">

    <img class="full-image" src="delorean.jpg">

    <p>

      菜鸟教程 -- 学的不仅是技术,更新梦想!<br>

      菜鸟教程 -- 学的不仅是技术,更新梦想!

    </p>

    <p>

      <a href="#" class="subdued">1 喜欢</a>

      <a href="#" class="subdued">5 评论</a>

    </p>

  </div>

  <div class="item tabs tabs-secondary tabs-icon-left">

    <a class="tab-item" href="#">

      <i class="icon ion-thumbsup"></i>喜欢

    </a>

    <a class="tab-item" href="#">

      <i class="icon ion-chatbox"></i> Comment

    </a>

    <a class="tab-item" href="#">

      <i class="icon ion-share"></i>   分享

    </a>

  </div>

</div>

1.3.5.  表单输入

list 类同样可以用于 input 元素。item-input 和 item 类指定了文本框及其标签

1)        item item-input

                           <label class="item item-input">

                                       <i class="icon ion-android-person positive"></i>

                                       <input type="text" placeholder="请输入您的用户名">     placeholder 属性设置输入字段预期值的提示信息

                           </label>

                           <label class="item item-input item-stacked-label">              item-stacked-label堆叠标签通常位于输入框的头部  

                                       <span class="input-label">Email</span>                 输入框属性:input-label

                                       <input type="text" placeholder="me@vucek.com">

                           </label>

  <label class="item item-input item-floating-label">     item-floating-label浮动标签类似于堆叠标签,有一个动画的效果

    <span class="input-label">First Name</span>

    <input type="text" placeholder="First Name">

  </label>

            <label class="item item-input item-input-inset">

                <textarea placeholder="Comments"></textarea>

            </label>

内嵌表单

默认情况下每个输入域宽度都是100%,使用 list list-inset 或 card 类设置表单的内边距(padding), card 类带有阴影。

<div class="list list-inset">

  <label class="item item-input">

    <i class="icon ion-search placeholder-icon"></i>     带图标的输入框

    <input type="text" placeholder="Search">

  </label>

</div>

内嵌输入域

使用 list-inset 设置内嵌实体列表。 使用 item-input-inset 样式可以内嵌一个按钮。

<div class="list">

  <div class="item item-input-inset">

    <label class="item-input-wrapper">

      <input type="text" placeholder="Email">

    </label>

    <button class="button button-small"> Submit </button>

  </div>

</div>

头部输入框

输入框可放置在头部,并可添加提交或取消按钮。

<div class="bar bar-header item-input-inset">

  <label class="item-input-wrapper">

    <i class="icon ion-ios-search placeholder-icon"></i>

    <input type="search" placeholder="搜索">

  </label>

  <button class="button button-clear">

    取消

  </button>

</div>

2)        ionic Toggle(切换开关)

切换开关类似与 HTML 的 checkbox 标签,切换开关可以使用 toggle-assertive 来指定颜色。

<label class="toggle">

   <input type="checkbox">

   <div class="track">

     <div class="handle"></div>

   </div>

</label>

该实例有是多个切换开关列表。注意,每个选项的 item 类后需要添加 item-toggle 类。

<ul class="list">

                           <li class="item item-toggle">

                                       字符计数

                                       <label class="toggle toggle-balanced">

                                                  <input type="checkbox" checked>

                                                  <div class="track">

                                                              <div class="handle"></div>

                                                  </div>

                                       </label>

                           </li>

</ul>

3)        ionic checkbox(复选框)

和普通的 Checkbox 效果上其实相差不大,只是样式上有所不同。

每个选项的 item 类后需要添加 item-checkbox 类。可以使用 checkbox-assertive 来指定颜色。

<ul class="list">

  <li class="item item-checkbox">

     <label class="checkbox">

       <input type="checkbox">

     </label>

     记住密码

  </li>

                           <li class="item item-checkbox item-button-right">

                                       <label class="checkbox">

                                                  <input type="checkbox" checked >

                                       </label>

                                       <h2>Shopping</h2>

             <a class="button button-clear icon ion-ios-arrow-right"></a>

                           </li>

</ul>

4)        ionic 单选框

ionic 当选按钮与标准 type="radio" 的 input元素类似。

每个 item-radio 中的 type="radio" 的 input 元素的 name 属性都相同。radio-icon 类用于是否显示图标。

ionic 在单选项中使用了 <label> 元素,使其更易点击。

                     <div class="list">

                                <div class="item item-divider"><b>请选择支付方式</b></div>

                                 <label class="item item-radio">

                                            <input type="radio" name="group"  value="go" checked="checked">

                                            <div class="item-content">支付宝客户端支付</div>

                                            <i class="radio-icon ion-checkmark balanced"></i>

                                 </label>

                                 <label class="item item-radio">

                                            <input type="radio" name="group"   value="python" >

                                            <div class="item-content">支付宝网页支付</div>

                                            <i class="radio-icon ion-checkmark balanced"></i>

                                 </label>

                     </div>

5)        ionic Range

ionic Range 是一个滑块控件,ionic 为 Range 提供了很多种默认的样式。可以在许多种元素里使用它比如列表或者 Card 。

<div class="range">

  <i class="icon ion-volume-low"></i>

  <input type="range" name="volume">

  <i class="icon ion-volume-high"></i>

</div>

                     <div class="list">

                                 <div class="item item-divider">铃声和提醒</div>

                                 <div class="item range range-positive">

                                            <i class="icon ion-ios-volume-low"></i>

                                            <input type="range" name="volume" min="0" max="100"  value=30>

                                            <i class="icon ion-ios-volume-high"></i>

                                 </div>

                     </div>

6)        ionic select

ionic select 的 select 相比原生的要更加美观些。但是弹出的可选选项样式是浏览器默认的。

在PC电脑的浏览器上,你会看到传统的下拉界面,Android 上会弹出单选按钮选项,iOS 有个滚轮操作界面。

<div class="list">

                                 <label class="item item-input item-select">

                                            <div class="input-label">前端技术</div>

                                            <select>

                                                        <option>HTML</option>

                                                        <option selected>CSS</option>

                                                        <option>JavaScript</option>

                                            </select>

                                 </label>

  <div class="item item-input item-select">

    <div class="input-label"> Lightsaber </div>

    <select>

      <option>Blue</option>

      <option selected="">Green</option>

      <option>Red</option>

    </select>

  </div>

1.3.6.  选项卡 : .tabs

ionic tab(选项卡) 是水平排列的按钮或者链接,用以页面间导航的切换。它可包含文字和图标的组合

 

选项卡容器使用了 tabs 类,每个选项卡使用 tab-item 类。默认情况下,选项卡是文本的,并没有图标。默认情况,选项卡颜色为默认,可设置以下不同颜色样式:tabs-default ,tabs-light ,tabs-stable ,tabs-positive ,tabs-calm ,tabs-balanced ,tabs-energized ,tabs-assertive ,tabs-royal ,tabs-dark。要隐藏选项卡栏,可使用 tabs-item-hide 类。

<ul class="tabs tabs-positive"> tabs-top

                       <li class="tab-item active">Chinese</li>

                       <li class="tab-item">English</li>

                       <li class="tab-item">Japanese</li>

                       <li class="tab-item">Russian</li>

            </ul>

tabs-icon-top顶部图标+文字选项卡。tabs-icon-only可设置只显示图标选项卡,ttabs-icon-left 类可设置左侧图标+文字选项卡。

            <div class="tabs tabs-stable tabs-icon-top">

                       <a class="tab-item active">

                                   <i class="icon ion-ios-home-outline"></i>首页

                       </a>

                       <a class="tab-item">

                                   <i class="icon ion-ios-email-outline"></i>信息

                       </a>

                       <a class="tab-item has-badge">

                                   <i class="icon ion-ios-eye-outline"></i>发现

                                   <i class="badge badge-positive ">12</i>

                       </a>

            </div>

条纹样式选项卡

在带有 tabs 的样式名的元素上添加 tabs-striped 来实现像 Android 风格的 tabs。也可以添加 tabs-top 来实现选项卡在页面顶部。

条纹选项卡颜色可通过 tabs-background-{color} 和 tabs-color-{color} 来控制, {color} 值可以是:default, light, stable, positive, calm, balanced, energized, assertive, royal, 或 dark。

注意:如果要再选项卡上设置头部标题,需要使用 has-tabs-top 类。

            <div class="tabs-striped tabs-top tabs-dark tabs-icon-only  tabs-background-positive tabs-color-light ">

                       <div class="tabs">

                                   <a class="tab-item active" href="#">

                                               <i class="icon ion-ios-telephone"></i> Test

                                   </a>

                                   <a class="tab-item" href="#">

                                               <i class="icon ion-ios-clock"></i> Favorites

                                   </a>

                       </div>

            </div>

1.3.7.  Grid布局

它采用了弹性盒子模型(Flexible Box Model) 。而且在移动端,基本上的手机都支持。row 样式指定行,col 样式指定列。

同等大小网格

带有 row 的样式的元素里如果包含了 col 的样式,col 就会设置为同等大小。如 row 的样式包含了 5 个 col 样式,每个 col 的宽度为 20%。

<div class="row">

                                   <div class="col">.col</div>

                                   <div class="col">.col</div>

                                   <div class="col">.col</div>

                                   <div class="col">1<br>2<br>3<br>4</div>

                       </div>

 

                       <div class="row">

                                   <div class="col col-33 positive-bg">.col</div>指定列宽 

                                   <div class="col col-33 col-offset-33 dark-bg">.col</div> 列可以设置左侧偏移量

                       </div>

 

纵向对齐包含顶部,中间部分,底部,可以应用到每一行的列,或者指定的某列。

                       <div class="row row-top ">   row-center  row-bottom

                                   <div class="col col-top col-50 positive-bg light">

                                               <div>机票</div>

                                   </div>

                                   <div class="col col-25  assertive-bg light">

                <img src="img/a-2.jpg" />

                <br>你好

            </div>

                                   <div class="col col-25  calm-bg light">

                                               <div>用车</div>

                                   </div>

                       </div>

 

<div class="row">

  <div class="col col-top">.col</div>

  <div class="col col-center">.col</div>

  <div class="col col-bottom">.col</div>

  <div class="col">1<br>2<br>3<br>4</div>

</div>

 

响应式网格

手持设备屏幕在切换时,例如横屏,竖屏等。就需要设置每行的网格可以实现根据不同宽度自适应大小。

.responsive-sm    小于手机横屏

.responsive-md   小于平板竖屏

.responsive-lg      小于平板横屏

<div class="row responsive-sm">

  <div class="col">.col</div>

  <div class="col">.col</div>

  <div class="col">.col</div>

  <div class="col">.col</div>

</div>

 

posted on 2016-04-13 19:29  dengzy  阅读(5895)  评论(0编辑  收藏  举报