在网上经常可以看到一些效果非常酷的隐藏侧边栏菜单效果。隐藏侧边栏作为一种新的菜单布局方式已经被越来越多的人所接受,它给用户一种全新的体验。特别是在移动手机等小屏幕设备上,隐藏侧边栏就显得特别有用。它不会占用多余的空间,只有在需要的时候才显示出来。

隐藏侧边栏菜单经常被使用在移动手机和一些触摸屏设备上。隐藏侧边栏最大的好处是不占用空间,并且只使用少量的javascript和CSS就可以制作出一个隐藏侧边栏效果。

隐藏侧边栏菜单经常是以一个jQuery插件的形式出现,在这篇文章中,我们将使用CSS3 transition 和 animation以及少量的jQuery代码来制作一个效果非常酷的隐藏侧边栏特效。

HTML结构

隐藏侧边栏菜单的HTML结构和普通的菜单的HTML结构稍微有一点不同。我们要关注下面的是三元素:

Container:这是整个页面的包裹容器,它会将隐藏侧边栏菜单和其它页面元素全部包裹起来。

Canvas:这个div是包裹隐藏侧边栏和其它元素的二级容器。

Navigation:这个div是隐藏侧边栏的包裹容器。

基本的HTML结构如下:

//Sliding Navigation Content Here

下面是添加了菜单项和页面其它元素的代码:

MENU

  • HOME

  • ABOUT US

    • OUR TEAM

    • OUR SERVICES

  • PORTFOLIO

    • WEB DESIGN

    • GRAPHIC DESIGN

  • CONTACT

Off Canvas Sliding Navigation

Transition effect for off-canvas views with sliding navigation

← Back to the Article

以下是一些要注意的事项:

div#nav中包含了一个带ID #toggle的无序列表。这个ID在后面用于侧边栏的选择和滑动效果。

每个无序列表中都有一个div元素,在div中包含了带font awesome图标的span元素以及它们各自的超链接元素。

如果无序列表中又包含了一个无序列表,就添加一个(+)字体图标。在后面会使用jQuery来使菜单在展开时显示 (-)的字体图标。

带有class为toggle-nav的超链接元素是我们的汉堡包图标。后面会使用jQuery来使它隐藏和展开侧边栏菜单。

CSS样式

首先是设置一些通用样式:

html,body{background: #f3efe0;}

h1, h2, h3{text-align: center;}

h1{

font-family: 'Raleway', Arial, sans-serif;

font-weight: 700;

font-size: 45px;

margin-top: 15px;

color: #38935f;

}

h3{

font-family: 'Raleway', Arial, sans-serif;

font-weight: 400;

font-size: 25px;

margin-top: 15px;

color: #918e84;

}

下面要给包裹容器一些样式。#container设置为宽100%,孤独为100vh,100vh表示整个设备的高度,vh测量单位可以参考这里。同时超出画板的元素要隐藏起来。

#container {

width: 100%;

height: 100vh;

position: relative;

overflow: hidden;

}

下面是#canvas的样式。同样设置为100%宽度和100%高度,定位设置为相对定位方式。然后添加一些transition 和 transform样式,为后面的jQuery调用做准备。

#canvas {

width: 100%;

height: 100%;

padding: 5.5% 0;

position: relative;

-webkit-transform:translateX(0);

-moz-transform:translateX(0);

-ms-transform:translateX(0);

-o-transform:translateX(0);

transform:translateX(0);

-webkit-transition:.5s ease all;

-moz-transition:.5s ease all;

-o-transition:.5s ease all;

transition:.5s ease all;

}

接下来是#nav元素。它使用绝对定位,离屏幕左侧-300px,这样初始时它是看不见的。同时添加一些transition 和一个旋转-90度的transform效果,通过这个设置来制作侧边栏在3D空间中旋转90度的平滑过渡效果。

#nav {

width: 300px;

height: 100%;

background: #38935f;

position: absolute;

left: -300px;

top: 0;

-webkit-transition:.5s ease all;

-moz-transition:.5s ease all;

-o-transition:.5s ease all;

transition:.5s ease all;

/* By default, rotate the menu 90deg inwards */

-webkit-transform:rotateY(-90deg);

-moz-transform:rotateY(-90deg);

-ms-transform:rotateY(-90deg);

-o-transform:rotateY(-90deg);

transform:rotateY(-90deg);

}

我们还需要一些样式来制作滑动侧边栏效果。下面的CSS样式包含显示列表父元素、隐藏子菜单、背景颜色、菜单图标和加号减号的字体图标的样式。这些样式将在后面用jQuery来管理。

#toggle {

list-style: none;

margin-top: 40px;

}

#toggle div:hover {

background: rgba(0,0,0,0.2);

-webkit-box-shadow:inset 0 -1px rgba(0,0,0,0);

-moz-box-shadow:inset 0 -1px rgba(0,0,0,0);

box-shadow:inset 0 -1px rgba(0,0,0,0);

color: #fff;

}

#toggle div.active {

background: #1f9d55;

}

#toggle div {

cursor: pointer;

display: block;

border-bottom: 1px solid rgba(0,0,0,0.2);

}

span.menu-icons {

font-size: 20px;

height: 20px;

width: 22px;

float: left;

margin: 11px 0px 10px 37px;

color: #fff;

}

span.the-btn {

float: right;

font-size: 20px;

height: 30px;

width: 43px;

margin-top: 10px;

margin-right: 8px;

padding:0;

color: #fff;

}

#toggle ul {

list-style: disc;

display: none;

color: #fff;

background: rgba(0,0,0,0.2);

-webkit-box-shadow:inset 0 -1px rgba(0,0,0,0);

-moz-box-shadow:inset 0 -1px rgba(0,0,0,0);

box-shadow:inset 0 -1px rgba(0,0,0,0);

}

#toggle li a {

line-height: 41px;

color: #fff;

list-style: circle;

width: 240px;

padding: 0;

margin: 0 0 0 50px;

}

#toggle a {

margin: 0 0 0 47px;

padding: 0;

font-family: 'Lato';

color: #fff;

line-height: 41px;

font-weight: normal;

font-size: 18px;

text-decoration: none;

}

#toggle ul li {

margin-left: 109px;

}

#toggle ul li a:hover{

background: #1f9d55;

}

#toggle ul li a {

margin-left: 0;

}

最后是制作菜单的动画效果。我们使用transform属性,在display-nav class上使菜单在3D空间中平滑过渡。这其实就是一个3D翻转动画效果。

#nav {

width: 300px;

height: 100%;

background: #38935f;

position: absolute;

left: -300px;

top: 0;

-webkit-transition:.5s ease all;

-moz-transition:.5s ease all;

-o-transition:.5s ease all;

transition:.5s ease all;

/* By default, rotate the menu 90deg inwards */

-webkit-transform:rotateY(-90deg);

-moz-transform:rotateY(-90deg);

-ms-transform:rotateY(-90deg);

-o-transform:rotateY(-90deg);

transform:rotateY(-90deg);

}

#container.display-nav #canvas {

-webkit-transform:translateX(300px);

-moz-transform:translateX(300px);

-ms-transform:translateX(300px);

-o-transform:translateX(300px);

transform:translateX(300px);

}

/* transition the menu with perspective on "show-nav" */

#container.display-nav #nav {

-webkit-transform-origin:100% 50%;

-moz-transform-origin:100% 50%;

-ms-transform-origin:100% 50%;

-o-transform-origin:100% 50%;

transform-origin:100% 50%;

-webkit-transform:perspective(600px) rotateY(0deg);

-moz-transform:perspective(600px) rotateY(0deg);

-ms-transform:perspective(600px) rotateY(0deg);

-o-transform:perspective(600px) rotateY(0deg);

transform:perspective(600px) rotateY(0deg);

}

JAVASCRIPT

jQuery代码使用来隐藏和展开侧边栏菜单,这通过toggle-navclass来实现。而具体的隐藏和显示又是通过display-nav class来实现。代码中创建了一个函数用于专门显示和隐藏侧边栏:toggleNavigation。

// Calling the function

$(function() {

$('.toggle-nav').click(function() {

toggleNavigation();

});

});

// The toggleNav function itself

function toggleNavigation() {

if ($('#container').hasClass('display-nav')) {

// Close Nav

$('#container').removeClass('display-nav');

} else {

// Open Nav

$('#container').addClass('display-nav');

}

}

现在我们已经制作出了隐藏侧边栏和它的滑动效果。在jQuery代码中创建了一个变量来引用当前的字体图标元素。

$currIcon=$(this).find(“span.the-btn”)

然后将侧边栏子菜单的中有二级子菜单的都将图标状态改变它为(+)。接着使用toggle class来切换存储在$currIcon中的 (+)或(-)字体图标符号。

// SLiding codes

$("#toggle > li > div").click(function () {

if (false == $(this).next().is(':visible')) {

$('#toggle ul').slideUp();

}

var $currIcon=$(this).find("span.the-btn");

$("span.the-btn").not($currIcon).addClass('fa-plus').removeClass('fa-minus');

$currIcon.toggleClass('fa-minus fa-plus');

$(this).next().slideToggle();

$("#toggle > li > div").removeClass("active");

$(this).addClass('active');

});

小结

到此我们就成功的制作出一个效果非常酷的隐藏侧边栏特效。你可以发挥想象制作出更酷的效果。希望这篇文章对你有所帮助。

html左侧隐藏菜单栏,如何制作一个炫酷的隐藏侧边栏菜单相关推荐

  1. 元旦到了,手把手教你用 Python 制作一个炫酷烟花秀

    大家好,我是小张, 今天是2021 的最后一天,到了这个时间点,部分小伙伴已经开始复盘这一年的得与失.比如今年增加了多少技能点,看了多少本书,写了多少篇文章或者年前的小目标实现进度大概多少等等:做一个 ...

  2. Web前端——用CSS的常用样式制作一个炫酷的按钮

    文章目录 笔记:CSS的常用样式 炫酷按钮效果实现 笔记:CSS的常用样式 边框以及弧度样式 border-width:边框的线条宽度. border-style:边框的样式,例如 solid实现 d ...

  3. html表单下拉美化教程,html5和css3炫酷select下拉菜单美化效果

    html5和css3炫酷select下拉菜单美化效果 发布日期:2015-10-20 11:11 来源: 标签: 网页技术 CSS教程 html5+css3 select下拉菜单美化 这是一款使用ht ...

  4. Flutter 制作一个具有酷炫液体滑动效果的酷炫入门页面

    本文主要介绍如何使用 Flutter 制作一个具有酷炫液体滑动效果的酷炫入门页面 我将向您展示如何使用 Flutter 制作一个具有酷炫液体滑动效果的酷炫入门页面,所以不用多说,让我们开始吧.在本课程 ...

  5. Excel也能完爆BI工具,仅6个步骤就能制作动态炫酷看板

    点击上方 蓝字 关注我们 当老板.业务向你要一份数据的时候,如果你只给出一份苍白无力的原始数据的话,那你就输了,是一个"取数工具人"无疑了!也别怪别人把咱当做"查数姑&q ...

  6. 【Doxygen】为项目生成一个炫酷的说明文档

    [Doxygen]为项目生成一个炫酷的说明文档 目录 [Doxygen]为项目生成一个炫酷的说明文档 1 Doxygen简介 2 安装 Doxygen 3 基本使用方式 3.1 从命令行生成 3.1. ...

  7. 如何做一个炫酷的动画网站-css实现图片上下浮动效果

    目前网站制作技术已经非常成熟.所以要实现一个炫酷的动画网站还是非常容易,现在通过js和css就都能实现.直接css就能实现各种效果,下面我们来通过一个小动画看看如何用css来实现让你的网站图片上下浮动 ...

  8. python实现动态壁纸_流弊了!竟然用Python做一个炫酷的小姐姐动态壁纸

    原标题:流弊了!竟然用Python做一个炫酷的小姐姐动态壁纸 公众号关注 " 菜鸟学Python" 设为 "星标",每天带你玩转Python! (女神IU,图片 ...

  9. 一个炫酷的仿雷达扫描和扩散效果——自定义View就是这么简单

    高仿雷达扫描效果和仿水波纹中心扩散效果,手把手教你撸一个炫酷的自定义view. 于亚豪的博客地址: blog.csdn.net/androidstar- 我们先看效果图吧 Markdown Markd ...

最新文章

  1. linux c 常用函数
  2. 网页视频播放开发总结
  3. 相同update语句在MySQL,Oracle的不同表现(r12笔记第30天)
  4. python 如何遍历文件夹下所有图片/文件? os.walk() os.listdir()
  5. P1262_美帝的间谍网络被我部捕获!
  6. MongoDB入门_MongoDB安装与配置
  7. vuescroll使用文档
  8. 找呀志_ContentResolver操作ContentProvider数据
  9. CDH集群安装配置(五)- Cloudera Manager Server
  10. Android之AndroidManifest.xml文件解析和权限集合
  11. 前端学习(702):while循环
  12. 一些上流的CSS3图片样式
  13. 上dj是什么意思_火花塞上的每个编码是什么意思
  14. Oracle视频教程从入门到精通
  15. 用html5画卡通人物源代码,用canvas画一个卡通人物!!
  16. [Chatter] 错误处理的安全保证等级
  17. 运营技巧|如何把产品运营好?
  18. mysql表文件与结构_MySQL文件结构、逻辑架构及sql执行流程分析
  19. 详解物联网常用协议:IIC和RS485通信协议
  20. 今天又get到一个小技能,collect_set函数

热门文章

  1. 双系统(win8.1+ubuntu14.04)删除win下分区导致grub rescue解决方案
  2. (Object detection)目标检测从入门到精通——第二部分
  3. 海上瓶子下有东西吗_放置在车内的饮用水,经过暴晒后,还能喝吗?有异味,是毒素吗?...
  4. onmounted vue3_Vue2和Vue3使用层面上的区别总结
  5. Facebook广告费用如何出价?
  6. 联想台式主机拆机教程_联想发布全新刃9000台式主机:搭载英伟达最新显卡+8999元...
  7. io hang linux 原理,Linux 避免IO hang
  8. 读书笔记——数据压缩入门(柯尔特·麦克安利斯)中
  9. 吴恩达|机器学习作业目录
  10. WPF在代码中创建DataTemplate时候的异常