组件

作为基本构建块的设计模式

Title

标题栏

标题栏固定在整个视区(viewport)的顶部,宽度铺满屏幕。

Title

<header class="bar bar-nav">
  <h1 class="title">Title</h1>
</header>

带有按钮的标题栏

在标题栏中,按钮靠左或者靠右对齐,且可用于标题栏的操作(action)。使用.pull-right 或者.pull-left小工具类(utility classes)使按钮浮动。当然,确保任何浮动的元素都在标题之前。

Title

<header class="bar bar-nav">
  <button class="btn pull-left">
    Left
  </button>
  <button class="btn pull-right">
    Right
  </button>
  <h1 class="title">Title</h1>
</header>

带有图标的标题栏

图标也可以用于工具栏的操作,同样,使用小工具类对图标进行定位。

Title

<header class="bar bar-nav">
  <a class="icon icon-left-nav pull-left"></a>
  <a class="icon icon-compose pull-right"></a>
  <h1 class="title">Title</h1>
</header>

带有链接按钮(link buttons)和图标的标题栏

标题栏中的链接按钮用于移除按钮边框。这种方式可以和图标搭配可以用来模仿原生iOS7的体验。注意使用.btn-nav使按钮更靠近视区的边缘。

Title

<header class="bar bar-nav">
  <button class="btn btn-link btn-nav pull-left">
    <span class="icon icon-left-nav"></span>
    Left
  </button>
  <button class="btn btn-link btn-nav pull-right">
    Right
    <span class="icon icon-right-nav"></span>
  </button>
  <h1 class="title">Title</h1>
</header>

带有分段控件(segmented control)的标题栏

标题栏也可以提供分段控件,可以任意添加按钮到分段控件中去,控件会自适应布局。

<header class="bar bar-nav">
  <button class="btn pull-left">
    Left
  </button>
  <button class="btn pull-right">
    Right
  </button>
  <div class="segmented-control">
    <a class="control-item active">One</a>
    <a class="control-item">Two</a>
    <a class="control-item">Three</a>
  </div>
</header>

底部标签栏

使用.tab-bar调用Ratch图标(Ratchicons)来代表应用中不同的标签。
Ratchet把部分矢量图标封装为一种字体,不需要调用图片——译者注。

<nav class="bar bar-tab">
  <a class="tab-item active" href="#">
    <span class="icon icon-home"></span>
    <span class="tab-label">Home</span>
  </a>
  <a class="tab-item" href="#">
    <span class="icon icon-person"></span>
    <span class="tab-label">Profile</span>
  </a>
  <a class="tab-item" href="#">
    <span class="icon icon-star-filled"></span>
    <span class="tab-label">Favorites</span>
  </a>
  <a class="tab-item" href="#">
    <span class="icon icon-search"></span>
    <span class="tab-label">Search</span>
  </a>
  <a class="tab-item" href="#">
    <span class="icon icon-gear"></span>
    <span class="tab-label">Settings</span>
  </a>
</nav>

注意事项: 记得使用push.js来切换内容。

底部标签栏(使用文字标签)

如果您不想使用图标,仅仅用文字标签也是可以的。文字会适应大小以补充多余的区域。

<nav class="bar bar-tab">
  <a class="tab-item active" href="#">
    Label
  </a>
  <a class="tab-item" href="#">
    Label
  </a>
  <a class="tab-item" href="#">
    Label
  </a>
</nav>

注意事项: 记得使用push.js来切换内容。

标准栏

标准栏是基本的填充元素,可以固定在四个位置。标准栏内部可用来放按钮、图标、分段控件(看下面的例子)。

<!-- Segmented control in standard bar fixed to top -->
<nav class="bar bar-standard">
  <div class="segmented-control">
    <a class="control-item active">Thing one</a>
    <a class="control-item">Thing two</a>
    <a class="control-item">Thing three</a>
  </div>
</nav>

<!-- Block button in standard bar fixed below top bar -->
<div class="bar bar-standard bar-header-secondary">
  <button class="btn btn-block">Block level button</button>
</div>

<!-- Block button in standard bar fixed above the footer -->
<div class="bar bar-standard bar-footer-secondary">
  <button class="btn btn-block">Block level button</button>
</div>

<!-- Icons in standard bar fixed to the bottom of the screen -->
<div class="bar bar-standard bar-footer">
  <a class="icon icon-compose pull-left"></a>
  <a class="icon icon-gear pull-right"></a>
</div>

文字排版

使用"Heading"和一段话作为应用的标题与描述,用.content-padded将文字包裹起来,这部分区域方能展示。

h1. Heading

h2. Heading

h3. Heading

h4. Heading

h5. Heading
h6. Heading

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco.

<div class="content-padded">
  <h1>h1. Heading</h1>
  <h2>h2. Heading</h2>
  <h3>h3. Heading</h3>
  <h4>h4. Heading</h4>
  <h5>h5. Heading</h5>
  <h6>h6. Heading</h6>
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  quis nostrud exercitation ullamco.</p>
</div>

表格视图

表格试图用来组织数据,展示链接集合或者一系列控件。

  • Item 1
  • Item 2
  • Divider
  • Item 3
<ul class="table-view">
  <li class="table-view-cell">Item 1</li>
  <li class="table-view-cell table-view-cell">Item 2</li>
  <li class="table-view-divider">Divider</li>
  <li class="table-view-cell">Item 3</li>
</ul>

带V形箭头(chevrons)的表格视图

V形箭头用来标明有项目与之关联,只需要用.navigate-right或者.navigate-left即可调用V形箭头。

<ul class="table-view">
  <li class="table-view-cell">
    <a class="navigate-right">
      Item 1
    </a>
  </li>
  <li class="table-view-cell">
    <a class="navigate-right">
      Item 2
    </a>
  </li>
  <li class="table-view-cell">
    <a class="navigate-right">
      Item 3
    </a>
  </li>
</ul>

注意事项:为遵从安卓设计规范,安卓下的表格视图没有V形箭头(详见这里)。

带标记(badges)的表格试图

数字标记是展示数据的好方法。

  • Item 1 4
  • Item 2 1
  • Item 3 5
<ul class="table-view">
  <li class="table-view-cell">Item 1 <span class="badge">4</span></li>
  <li class="table-view-cell">Item 2 <span class="badge">1</span></li>
  <li class="table-view-cell">Item 3 <span class="badge">5</span></li>
</ul>

带V形箭头和标记的表格视图

V形箭头和标记可以随意的搭配在依次,他们会自适应进行定位。

<ul class="table-view">
  <li class="table-view-cell">
    <a class="navigate-right">
      <span class="badge">5</span>
      Item 1
    </a>
  </li>
  <li class="table-view-cell">
    <a class="navigate-right">
      <span class="badge">5</span>
      Item 2
    </a>
  </li>
  <li class="table-view-cell">
    <a class="navigate-right">
      <span class="badge">5</span>
      Item 3
    </a>
  </li>
</ul>

带媒体元素(图片)的表格视图

在试图内展示媒体元素很简单,该组件对图片与文字均展示的很完美。.

<ul class="table-view">
  <li class="table-view-cell media">
    <a class="navigate-right">
      <img class="media-object pull-left" src="http://placehold.it/42x42">
      <div class="media-body">
        Item 1
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore. Lorem ipsum dolor sit amet.</p>
      </div>
    </a>
  </li>
  <li class="table-view-cell media">
    <a class="navigate-right">
      <img class="media-object pull-left" src="http://placehold.it/42x42">
      <div class="media-body">
        Item 1
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore. Lorem ipsum dolor sit amet.</p>
      </div>
    </a>
  </li>
  <li class="table-view-cell media">
    <a class="navigate-right">
      <img class="media-object pull-left" src="http://placehold.it/42x42">
      <div class="media-body">
        Item 1
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore. Lorem ipsum dolor sit amet.</p>
      </div>
    </a>
  </li>
</ul>

带媒体元素(图标)的表格试图

当然,Ratch图标也能用在这里,替代图片。

<ul class="table-view">
  <li class="table-view-cell media">
    <a class="navigate-right">
      <span class="media-object pull-left icon icon-trash"></span>
      <div class="media-body">
        Item 1
      </div>
    </a>
  </li>
  <li class="table-view-cell media">
    <a class="navigate-right">
      <span class="media-object pull-left icon icon-gear"></span>
      <div class="media-body">
        Item 2
      </div>
    </a>
  </li>
  <li class="table-view-cell media">
    <a class="navigate-right">
      <span class="media-object pull-left icon icon-pages"></span>
      <div class="media-body">
        Item 3
      </div>
    </a>
  </li>
</ul>

带按钮的表格视图

  • Item 1
  • Item 2
  • Item 3
  • Item 4
<ul class="table-view">
  <li class="table-view-cell">Item 1 <button class="btn">Button</button></li>
  <li class="table-view-cell">Item 2 <button class="btn btn-primary">Button</button></li>
  <li class="table-view-cell">Item 3 <button class="btn btn-positive">Button</button></li>
  <li class="table-view-cell">Item 4 <button class="btn btn-negative">Button</button></li>
</ul>

带开关按钮的表格视图。

  • Item 1
  • Item 2
  • Item 3
<ul class="table-view">
  <li class="table-view-cell">
    Item 1
    <div class="toggle">
      <div class="toggle-handle"></div>
    </div>
  </li>
  <li class="table-view-cell">
    Item 2
    <div class="toggle active">
      <div class="toggle-handle"></div>
    </div>
  </li>
  <li class="table-view-cell">
    Item 3
    <div class="toggle">
      <div class="toggle-handle"></div>
    </div>
  </li>
</ul>

卡片式的表格试图

.card 抱住全部视图元素,现在有了边框和外边距.

  • Item 1
  • Item 2
  • Divider
  • Item 3
  • Item 4
<div class="card">
  <ul class="table-view">
    <li class="table-view-cell">Item 1</li>
    <li class="table-view-cell">Item 2</li>
    <li class="table-view-cell table-view-divider">Divider</li>
    <li class="table-view-cell">Item 3</li>
    <li class="table-view-cell">Item 4</li>
  </ul>
</div>

按钮

有多种不同风格的按钮,对应不同的操作。

<button class="btn">Button</button>
<button class="btn btn-primary">Button</button>
<button class="btn btn-positive">Button</button>
<button class="btn btn-negative">Button</button>
<button class="btn btn-link">Button</button>

<button class="btn btn-outlined">Button</button>
<button class="btn btn-primary btn-outlined">Button</button>
<button class="btn btn-positive btn-outlined">Button</button>
<button class="btn btn-negative btn-outlined">Button</button>

带小图标的按钮

Ratch图标甚至能在按钮内部使用。

<button class="btn">
  <span class="icon icon-search"></span>
  Button
</button>
<button class="btn btn-primary">
  <span class="icon icon-search"></span>
  Button
</button>
<button class="btn btn-positive">
  <span class="icon icon-search"></span>
  Button
</button>
<button class="btn btn-negative">
  <span class="icon icon-search"></span>
  Button
</button>
<button class="btn btn-link">
  <span class="icon icon-left"></span>
  Button
</button>

带标记的按钮

<button class="btn">Badge button <span class="badge">1</span></button>
<button class="btn btn-primary">Badge button <span class="badge badge-primary">1</span></button>
<button class="btn btn-positive">Badge button <span class="badge badge-positive">1</span></button>
<button class="btn btn-negative">Badge button <span class="badge badge-negative">1</span></button>

<button class="btn btn-outlined">Badge button <span class="badge badge-inverted">1</span></button>
<button class="btn btn-outlined btn-primary">Badge button <span class="badge badge-primary badge-inverted">1</span></button>
<button class="btn btn-outlined btn-positive">Badge button <span class="badge badge-positive badge-inverted">1</span></button>
<button class="btn btn-outlined btn-negative">Badge button <span class="badge badge-negative badge-inverted">1</span></button>

大按钮(block buttons)

<button class="btn btn-block">Block button</button>
<button class="btn btn-primary btn-block">Block button</button>
<button class="btn btn-positive btn-block">Block button</button>
<button class="btn btn-negative btn-block">Block button</button>

<button class="btn btn-block btn-outlined">Block button</button>
<button class="btn btn-primary btn-block btn-outlined">Block button</button>
<button class="btn btn-positive btn-block btn-outlined">Block button</button>
<button class="btn btn-negative btn-block btn-outlined">Block button</button>

分段控件

内容部件(Content sections)在需要切入和切出时全部要写入.control-content。然后只需要给每一个内容部件一个ID,并且在分段控件中指向这个ID(锚记链接)即可。

<div class="segmented-control">
  <a class="control-item active" href="#item1mobile">
    Thing one
  </a>
  <a class="control-item" href="#item2mobile">
    Thing two
  </a>
  <a class="control-item" href="#item3mobile">
    Thing three
  </a>
</div>
<div class="card">
  <span id="item1mobile" class="control-content active">Item 1</span>
  <span id="item2mobile" class="control-content">Item 2</span>
  <span id="item3mobile" class="control-content">Item 3</span>
</div>

标记

标记有四种风格,主要用来标明有多少条内容。增加一个.badge-inverted会移除标记的背景色。

1 2 3 4 1 2 3 4
<span class="badge">1</span>
<span class="badge badge-primary">2</span>
<span class="badge badge-positive">3</span>
<span class="badge badge-negative">4</span>

<span class="badge badge-inverted">1</span>
<span class="badge badge-primary badge-inverted">2</span>
<span class="badge badge-positive badge-inverted">3</span>
<span class="badge badge-negative badge-inverted">4</span>

表单

<form>
  <input type="text" placeholder="Full name">
  <input type="search" placeholder="Search">
  <textarea rows="5"></textarea>
  <button class="btn btn-positive btn-block">Choose existing</button>
</form>

带输入组的表单

<form class="input-group">
  <input type="text" placeholder="Full name">
  <input type="email" placeholder="Email">
  <input type="text" placeholder="Username">
</form>

带输入组和标签的表单

<form class="input-group">
  <div class="input-row">
    <label>Full name</label>
    <input type="text" placeholder="Mister Ratchet">
  </div>
  <div class="input-row">
    <label>Email</label>
    <input type="email" placeholder="ratchetframework@gmail.com">
  </div>
  <div class="input-row">
    <label>Username</label>
    <input type="text" placeholder="goRatchet">
  </div>
</form>

开关按钮

开关按钮通过滑动或者轻触来控制。

<div class="toggle active">
  <div class="toggle-handle"></div>
</div>
<div class="toggle">
  <div class="toggle-handle"></div>
</div>

Tpgges.js用来绑定一个返回具体对象的事件,或者解除(fire)一个回调函数。

// Only needed if you want to fire a callback
document
.querySelector('#myToggle')
.addEventListener('toggle', myFunction)

泡芙效果

<div id="popover" class="popover">
  <header class="bar bar-nav">
    <h1 class="title">Popover title</h1>
  </header>
  <ul class="table-view">
    <li class="table-view-cell">Item1</li>
    <li class="table-view-cell">Item2</li>
    <li class="table-view-cell">Item3</li>
    <li class="table-view-cell">Item4</li>
    <li class="table-view-cell">Item5</li>
    <li class="table-view-cell">Item6</li>
    <li class="table-view-cell">Item7</li>
    <li class="table-view-cell">Item8</li>
  </ul>
</div>

泡芙效果展示一种从标题栏落下的效果。设定好标题的超链接,以及泡芙效果的ID,像这样:

<header class="bar bar-nav">
  <a href="#myPopover">
    <h1 class="title">
      Tap title
      <span class="icon icon-caret"></span>
    </h1>
  </a>
</header>

模态窗口

Open modal
<a href="#myModalexample" class="btn">Open modal</a>
<div id="myModalexample" class="modal">
  <header class="bar bar-nav">
    <a class="icon icon-close pull-right" href="#myModalexample"></a>
    <h1 class="title">Modal</h1>
  </header>

  <div class="content">
    <p class="content-padded">The contents of my modal go here. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut.</p>
  </div>
</div>

模态窗口通过链接打开,设定好切换的连接和使用模态窗口的ID。

滑动控件(sliders)

能用与任意数量、任意内容的滑动切换。

Mountain and sky Slide me
Giant mecha
Big Ben
<div class="slider" id="mySlider">
  <div class="slide-group">
    <div class="slide">
      <img src="/assets/img/slide-1.jpg">
      <span class="slide-text">
        <span class="icon icon-left-nav"></span>
        Slide me
      </span>
    </div>
    <div class="slide">
      <img src="/assets/img/slide-2.jpg">
    </div>
    <div class="slide">
      <img src="/assets/img/slide-3.jpg">
    </div>
  </div>
</div>

Sliders.js 用来绑定一个返回具体对象的事件,或者解除(fire)一个回调函数。

// Only needed if you want to fire a callback
document
.querySelector('#mySlider')
.addEventListener('slide', myFunction)

切换(Push)

Push.js是连接Ratchet页面和传统AJAX API的引擎。Push.js监听页面的每一次点击,所以在开发Ragchet项目时必须引入push.js。

<!-- A one.html link -->
<a href="two.html">Two</a>

这段代码使用切换功能,将当前页面的全部内容用two.html的内容替换。同时,该动作也会根据two.html页面的内容换掉或者移除 .bar-nav 和 .bar-tab属性。

在切换过程里,新的页面正在载入时,添加动画效果也非常简单。有三种切换方式可供选择:fade(渐变), slide-in(滑入), or slide-out(滑出)

<!-- An one.html link that animates to two.html -->
<a href="two.html" data-transition="fade">Two</a>

切换的一个示例:

<header class="bar bar-nav">
  <h1 class="title">Push</h1>
</header>
<div class="content">
  <div class="card">
    <ul class="table-view">
      <li class="table-view-cell">
        <a class="navigate-right" href="../two.html" data-transition="slide-in">
Load new page with push
        </a>
      </li>
    </ul>
  </div>
</div>

有某个链接不像被push拦截?试试这个:

<!-- Use data-ignore="push" to prevent the push.js interception -->
<a href="http://www.google.com" data-ignore="push">Google<a>

Push.js 用来绑定一个返回具体对象的事件,或者解除(fire)一个回调函数。

// Only needed if you want to fire a callback
window.addEventListener('push', myFunction);

Ratch图标

在你的应用里使用Ratch图标提升交互性。

<div class="content-padded">
  <span class="icon icon-back"></span>
  <span class="icon icon-bars"></span>
  <span class="icon icon-caret"></span>
  <span class="icon icon-check"></span>
  <span class="icon icon-close"></span>
  <span class="icon icon-code"></span>
  <span class="icon icon-compose"></span>
  <span class="icon icon-download"></span>
  <span class="icon icon-edit"></span>
  <span class="icon icon-forward"></span>
  <span class="icon icon-gear"></span>
  <span class="icon icon-home"></span>
  <span class="icon icon-info"></span>
  <span class="icon icon-list"></span>
  <span class="icon icon-more-vertical"></span>
  <span class="icon icon-more"></span>
  <span class="icon icon-pages"></span>
  <span class="icon icon-pause"></span>
  <span class="icon icon-person"></span>
  <span class="icon icon-play"></span>
  <span class="icon icon-plus"></span>
  <span class="icon icon-refresh"></span>
  <span class="icon icon-search"></span>
  <span class="icon icon-share"></span>
  <span class="icon icon-sound"></span>
  <span class="icon icon-sound2"></span>
  <span class="icon icon-sound3"></span>
  <span class="icon icon-sound4"></span>
  <span class="icon icon-star-filled"></span>
  <span class="icon icon-star"></span>
  <span class="icon icon-stop"></span>
  <span class="icon icon-trash"></span>
  <span class="icon icon-up-nav"></span>
  <span class="icon icon-up"></span>
  <span class="icon icon-right-nav"></span>
  <span class="icon icon-right"></span>
  <span class="icon icon-down-nav"></span>
  <span class="icon icon-down"></span>
  <span class="icon icon-left-nav"></span>
  <span class="icon icon-left"></span>
</div>