CSS3单页面垂直固定导航的例子

越来越多的开发者喜欢将单页面尤其像产品介绍页面设计成用一个简单的导航条关联的页面各个重要部分(节点)。本例中,一个页面由多个重要节点组成,在页面一侧会垂直展示多个简单的导航远点,滑上圆点会展示对应节点部分的名称,点击页面会滚动到对应的节点部分,而导航条位置固定不变。

当屏幕足够小时(如手机移动设备),会在屏幕右下角展示一个图标,触控图标,则会展开导航菜单,点击菜单页面会滚动到对应的节点,效果非常酷。

我们的导航条是一个无序列表ul,包含在nav.cd-vertical-nav内,通过连接a#section1关联到对应的节点。元素button.cd-nav-trigger是用来作为小屏幕设备上的用来触发菜单的按钮。section.cd-section就是用来对应导航节点的内容。
<nav class="cd-vertical-nav">
    <ul>
        <li><a href="#section1" class="active"><span class="label">Intro</span></a></li>
        <li><a href="#section2"><span class="label">Events</span></a></li>
        <!-- additional navigation items here -->
    </ul>
</nav>
 
<button class="cd-nav-trigger cd-image-replace">Open navigation<span aria-hidden="true"></span></button>
 
<section id="section1" class="cd-section">
    <div class="content-wrapper">
        <h1>垂直固定导航</h1>
        <a href="#section2" class="cd-scroll-down cd-image-replace">scroll down</a>
    </div>
</section>
 
<section id="section2" class="cd-section">
    <div class="content-wrapper">
        <!-- section content here -->
    </div>
</section>
CSS
HTML结构部署好后,我们要为页面添加必要的CSS样式。在非常小的屏幕下(视图宽度小于800px),我们将.cd-nav-trigger和<nav>的位置固定position: fixed在页面右下角。当点击或者触摸.cd-nav-trigger时,我们使用CSS3来做一个平滑的过渡动画使之有一个展开导航菜单的动画。
.cd-nav-trigger {
  display: block;
  position: fixed;
  z-index: 2;
  bottom: 30px;
  right: 5%;
}
 
.cd-vertical-nav {
  position: fixed;
  z-index: 1;
  right: 5%;
  bottom: 30px;
  transform: scale(0);
  transform-origin: right bottom;
  transition: transform 0.2s;
}
.cd-vertical-nav.open {
  transform: scale(1);
}
那么在大的屏幕设备上,我们首先是要 Modernizr 来检测当前使用的设备是否支持触屏,在非触控屏上会有鼠标滑上的效果。我们将右侧的垂直导航条设置为固定的高度和宽度,并将其固定在页面右侧。默认右侧导航之显示几个圆点,当鼠标滑上圆点时,导航条会打开,可以选择导航菜单。
@media only screen and (min-width: 800px) {
  .cd-vertical-nav {
    right: 0;
    top: 0;
    height: 100vh;
    width: 90px;
  }
  .cd-vertical-nav::before {
    /* this is the navigation background */
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.8);
    transform: translateX(100%);
    transition: transform 0.4s;
  }
  .no-touch .cd-vertical-nav:hover::before, 
  .touch .cd-vertical-nav::before {
    transform: translateX(0);
  }
  .cd-vertical-nav .label {
    display: block;
    transform: translateX(100%);
    transition: transform 0.4s;
  }
  .no-touch .cd-vertical-nav:hover .label, 
  .touch .cd-vertical-nav .label {
    transform: translateX(0);
  }
}
为了创建圆点和图标,可以使用::after和::before来为a元素添加伪类。
@media only screen and (min-width: 800px) {
  .cd-vertical-nav a {
    position: relative;
    padding: 3em 0 0;
    margin: 1.4em auto;
  }
  .cd-vertical-nav a::before, 
  .cd-vertical-nav a::after {
    /* used to create the filled circle and the background icon */
    content: '';
    position: absolute;
    left: 50%;
    transition: transform 0.4s 0s;
  }
  .cd-vertical-nav a::before {
    /* filled circle */
    top: 0;
    height: 32px;
    width: 32px;
    border-radius: 50%;
    background: #eaf2e3;
    transform: translateX(-50%) scale(0.25);
  }
  .cd-vertical-nav a::after {
    /* icon */
    top: 8px;
    height: 16px;
    width: 16px;
    background: url(../img/cd-nav-icons.svg) no-repeat;
    transform: translateX(-50%) scale(0);
  }
  .no-touch .cd-vertical-nav:hover a::before, 
  .no-touch .cd-vertical-nav:hover a::after, 
  .touch .cd-vertical-nav li:nth-of-type(n) a::before, 
  .touch .cd-vertical-nav li:nth-of-type(n) a::after {
    transform: translateX(-50%) scale(1);
  }
}
当然到这里效果已经实现了,但是要实现点击导航菜单时页面做平滑滚动效果则需要借助jQuery来实现滚动动画。本例在下载源码包里已经打包了包含的全部jQuery代码,请大家下载后查看,本文不再描述。

时间: 2024-09-28 09:18:53

CSS3单页面垂直固定导航的例子的相关文章

jQuery EasyUI页面布局加导航菜单例子

  说明   上图导航栏由两部分构成,由accordion和tree两个控件实现.   1.     这个由accordion控件实现,能实现展开.折叠效果.   2.     这个是一个tree(树形)控件. accordion(分类)控件代码 分 类控件允许用户使用多面板,但在同一时间只会显示一个.每个面板都内建支持展开和折叠功能.点击一个面板的标题将会展开或折叠面板主体.面板内容 可以通过指定的'href'属性使用ajax方式读取面板内容.用户可以定义一个被默认选中的面板,如果未指定,那么

国外优秀的网站设计:创意大导航单页面网站设计

在国外优秀的设计网站中,开始流行一种这样的Web创意设计风格:整站由一个单一页面组成,通过设置锚点的方式,利用JavaScript技术,实现网站内容的滑动导航.这种创意十足的Web设计效果,可以很大程度上给人一种流畅华丽的动画震撼,沉醉于其美妙的操作设计的同时,更为网站设计者的构造灵感而折服,这里就为你搜集了10个创意大导航单页面网站设计. WeBleedDesign Gavin Castleton Two24Studios DesignSpam JP3Design MadeToKill Cla

从零开始搭建自己的VueJS2.0+ElementUI单页面网站(二、编写导航页)

前言 在从零开始搭建自己的VueJS2.0+ElementUI单页面网站(一.环境搭建)一文中我们已经配置好了开发所需要的各种环境,在这一篇博文中我们正式进入开发.对于一个单页面应用来说,导航页是至关重要的一个页面,所有的组件都会在这个页面里进行显示.接下来我们就开始进行导航页的开发. 正文 创建导航页组件 我们在src目录下新建一个文件夹,名为components,今后我们的组件都会放在这个文件夹中.在components目录下新建一个Navi目录,在Navi目录中新建一个名为Navi.vue

jQuery页面侧边固定悬浮导航代码(带关闭按钮)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

PushState+Ajax实现简单的单页面应用SPA例子

单页面应用(Single Page Application)简称SPA,使用SPA构建的应用优点有用户体验好.速度快,内容的改变不需要重新加载整个页面,避免了不必要的跳转和重复渲染,从而相对减轻了服务器压力,SPA在WEB移动端应用非常广泛. 我们在上一篇文章Javascript实现前端简单路由中提到的前端路由,可以在不刷新整个页面的情况下,通过变换地址栏的hash来实现页面局部加载. 今天我要给大家介绍的是使用HTML5的PushState+ajax实现不刷新整个页面,而地址栏变换,页面局部刷

CSS3与页面布局学习总结(四)——页面布局大全

一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能如下: 1.1.1.向上移动 当多个元素同时从标准流中脱离开来时,如果前一个元素的宽度为100%宽度,后面的元素通过负边距可以实现上移.当负的边距超过自身的宽度将上移,只要没有超过自身宽度就不会上移,示例如下: <!DOCTYPE html> <html> <head> &

推荐7款超棒的单页面网站设计模板 关键是免费!

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 之前我们推荐过Bootstrap的实用开发教程和8款HTML5实现的特效和应用,反映非常强烈,很多前端爱好者纷纷要求多分享些类似的教程和模板.今天我们推荐的这7套单页面网站设计模板不仅带有独立的在线演示,并且全部免费下载!如果你也喜欢我们的素材教程,请加入我们的极客标签吧! 响应式的单页面网站模板 - Brushed Brushed 是一款单

网站单页面优化六大技巧

之前做过一段时间的单页面优化,优化的技巧说不上高明,但切切实实的感受到了单页面优化所需要的技巧十分的多,尤其是对主要的几个方面显得尤为重要.下面分六个方面给大家介绍一下我们需要优化的几个方面. 1.重要标签的优化. 对于标签的优化我们主要说的是title标签.keywords标签和description标签,当然还有一些其他标签的优化,例如h1,h2标签的优化,alt标签的优化等.在单页面中这几个标签就显得尤为重要,这是提升网站关键词密度和权重的主要阵地. A.首先当然是title标签,无论是搜

采用单页面做淘宝客赚佣金的思路

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 随着淘宝的壮大,像推销员员一样的淘宝客也在逐渐壮大,而且这个队伍也随着新手的加入越来越庞杂.当年第一批采用淘宝API建站的人可谓大赚了一笔,但是随着这种高度重复的页面的出现,让搜索引擎不得不开始发飙了,一些API的站被K的不成样子,也着实打击了很大一批人的信心.于是,在各种网赚论坛或者站长论坛随处可见谩骂之声,有人骂百度太不人道,有人骂掉单,