轻松构建响应式麦哲伦导航(五)

在现代网页设计中,响应式导航栏是提升用户体验的重要组成部分。Foundation 框架提供了一个强大的工具——麦哲伦(Magellan)导航,可以帮助开发者轻松实现这一目标。本文将详细介绍如何创建和自定义麦哲伦导航,包括头部工具条、内边距调整、选项设置、标签、表单元素等。

创建麦哲伦导航

麦哲伦导航是一个动态的导航索引,可以根据用户的滚动位置自动更新。要创建一个基本的麦哲伦导航,你需要遵循以下步骤:

HTML 结构

首先,在页面中添加一个包含 data-magellan-expedition="fixed" 属性的 <div> 元素。这个属性告诉 Foundation 该导航栏是固定的,即当用户滚动页面时,导航栏会保持在顶部。

<div data-magellan-expedition="fixed">
  <dl class="sub-nav">
    <dd data-magellan-arrival="page1"><a href="#page1">Page 1</a></dd>
    <dd data-magellan-arrival="page2"><a href="#page2">Page 2</a></dd>
  </dl>
</div>

接下来,为每个目标页面添加相应的锚点。这些锚点使用 data-magellan-destination 和 name 属性来标识。

<h3 data-magellan-destination="page1">Page 1</h3>
<a name="page1"></a>

<!-- 页面内容 -->

<h3 data-magellan-destination="page2">Page 2</h3>
<a name="page2"></a>

初始化 Foundation JS

最后,确保在页面底部初始化 Foundation JS,以便导航功能生效。

<script>
  $(document).ready(function() {
    $(document).foundation();
  });
</script>

麦哲伦导航头部工具条

如果你想让麦哲伦导航看起来更像一个传统的头部工具条,可以使用 Foundation 的顶部栏组件。以下是一个示例:

<div data-magellan-expedition="fixed">
  <nav class="top-bar" data-topbar>
    <section class="top-bar-section">
      <ul class="left">
        <li data-magellan-arrival="page1"><a href="#page1">Page 1</a></li>
        <li data-magellan-arrival="page2"><a href="#page2">Page 2</a></li>
      </ul>
    </section>
  </nav>
</div>

调整麦哲伦导航内边距

默认情况下,麦哲伦导航的 <div> 元素有 10px 的内边距。如果你希望移除这个内边距,可以通过自定义 CSS 来实现:

[data-magellan-expedition], [data-magellan-expedition-clone] {
  padding: 0;
}

麦哲伦导航选项

麦哲伦导航提供了多个选项,可以通过 data-options 属性进行配置。以下是一些常用的选项及其默认值:

  • active_class:指定激活链接的类,默认为 active。
  • threshold:指定导航在什么时候需要固定位置,默认为 0。
  • destination_threshold:设定导航链接显示为激活时导航列表距离顶部的值,默认为 20。
  • fixed_top:指定导航条距离头部的像素值,默认为 0。

例如,你可以这样设置导航选项:

<div data-magellan-expedition="fixed" data-options="destination_threshold:60">
  <!-- 导航内容 -->
</div>

表单元素

标签

在表单中使用 <label> 元素来设置标签。标签可以添加 for 属性和 id 属性,以便用户点击标签时获取输入框焦点。


<form>
  <label for="name">Input</label>
  <input type="text" placeholder="Name" id="name">
</form>

如果你希望标签右对齐,可以使用 .right 类:

<label class="right">Right-aligned Label</label>

Fieldset

Foundation 渲染 <fieldset> 元素的样式如下:


<form>

<fieldset>

<legend>Fieldset Legend</legend>
    <label>Name</label>
    <input type="text" placeholder="First Name..">
    <label>Email</label>
    <input type="text" placeholder="Enter email..">
  </fieldset>
</form>

错误状态

使用 .error 类来设置错误的标签、输入框、文本框样式:


<form>
  <label class="error">Error</label>
  <input type="text" placeholder="Name.." class="error">
  <small class="error">Wrong input</small>
</form>

输入框大小

使用网格系统的列来设置输入框的大小,例如 .large-6, .medium-6 等:


<form>
  <div class="row">
    <div class="large-10 medium-7 columns">
      <label>large-10 medium-7 (100% on small)</label>
      <input type="text" placeholder="Name">
    </div>
  </div>

  <div class="row">
    <div class="small-5 columns">
      <label>small-5</label>
      <input type="text" placeholder="Name">
    </div>
  </div>
  <div class="row">
    <div class="medium-3 columns">
      <label>medium-3 (100% on small)</label>
      <input type="text" placeholder="Name">
    </div>
  </div>
</form>

相等大小列

以下示例展示了如何创建相等大小的列:


<form>
  <div class="row">
    <div class="medium-4 columns">
      <label>medium-4 (100% on small, stacked)</label>
      <input type="text" placeholder="Name">
    </div>
    <div class="medium-4 columns">
      <label>medium-4 (100% on small, stacked)</label>
      <input type="text" placeholder="Name">
    </div>
    <div class="medium-4 columns">
      <label>medium-4 (100% on small, stacked)</label>
      <input type="text" placeholder="Name">
    </div>
  </div>
</form>

内联标签

如果你希望标签内容显示在输入框的左边而不是上方,可以将标签元素放在输入框左边的不同列上,并使用 .inline 类来设置垂直居中:


<form>
  <div class="row">
    <div class="small-8">
      <div class="row">
        <div class="small-3 columns">
          <label for="name" class="inline right">Name</label>
        </div>
        <div class="small-9 columns">
          <input type="text" id="name" placeholder="First Name..">
        </div>
      </div>
    </div>
  </div>
</form>

前置和后置标签

你可以在 <div class="row collapse"> 中添加前置和后置标签。以下是一个示例:


<form>
  <div class="row">
    <div class="large-6 columns">
      <div class="row collapse prefix-radius">
        <div class="small-3 columns">
          <span class="prefix">Prefix</span>
        </div>
        <div class="small-9 columns">
          <input type="text" placeholder="Value">
        </div>
      </div>
    </div>
    <div class="large-6 columns">
      <div class="row collapse postfix-radius">
        <div class="small-9 columns">
          <input type="text" placeholder="Value">
        </div>
        <div class="small-3 columns">
          <span class="postfix">Postfix</span>
        </div>
      </div>
    </div>
  </div>
</form>

前置和后置标签按钮

你还可以使用 <a> 元素添加 .button 类来设置前置和后置按钮:

<a href="#" class="postfix button">Go</a>

前置和后置标签圆角按钮

以下是带有圆角的前置和后置标签按钮示例:


<form>
  <div class="row">
    <div class="large-6 columns">
      <div class="row collapse prefix-round">
        <div class="small-3 columns">
          <a href="#" class="button prefix">Go</a>
        </div>
        <div class="small-9 columns">
          <input type="text" placeholder="Value">
        </div>
      </div>
    </div>
  </div>
</form>

总结

通过本文的介绍,你应该已经掌握了如何使用 Foundation 框架创建和自定义麦哲伦导航。麦哲伦导航不仅能够提升用户体验,还能让你的网站看起来更加专业和现代化。希望这些技巧能帮助你在未来的项目中更好地利用 Foundation 框架。