JavaScript 温故: 制作一个sidebar

茗玉
• 阅读 2029

sidebar是一种常用类型的导航组件,它可从页面旁侧弹出,覆盖在正常内容上。

假设你的正常内容为:

    <div id="main">
         Placeholder<p>
         Placeholder<p>
         Placeholder<p>
    </div>

现在我们可以在内容内加入sidebar。其内有链接到Home和About。并加入一个按钮,可以打开sidebar,代码如下:

    <div id="mySidenav" class="sidebar">
      <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>
      <a href="#a">Home</a>
      <a href="#b">About</a>
    </div>
    
    <button onclick="openNav()">open sidebar</button><p>
    <div id="main">
         Placeholder<p>
         Placeholder<p>
         Placeholder<p>
    </div>
    <style>
    
    .sidebar {
        height: 100%; 
        width: 0; 
        position: fixed; 
        z-index: 1; 
        top: 0;
        left: 0;
        background-color: #111; 
        overflow-x: hidden;
        padding-top: 60px; 
        transition: 0.5s; 
    }
    .sidebar a {
        padding: 4px 4px 4px 32px;
        text-decoration: none;
        color: #818181;
        display: block;
        transition: 0.3s
    }
    
    .sidebar a:hover{
        color: #f1f1f1;
    }
    .sidebar .closebtn {
        position: absolute;
        top: 10px;
        right: 10px;
    }
    
    </style>
    <script>
        function openNav() {
        document.getElementById("mySidenav").style.width = "150px";
    }
    
    
    function closeNav() {
        document.getElementById("mySidenav").style.width = "0";
    }
    
    </script>
    

要点在于:

  1. 默认情况下,sidebar是一个div内置任何html,且width为0,因此不可见

  2. 当需要使用sidebar时,可以使用函数设置其width为一个宽度,因此它变得可见

  3. 虽然它变得可见,但是因为z-index为1,因此不会引发主要内容的重新渲染和计算新的位置,而是覆盖其上

点赞
收藏
评论区
推荐文章
Karen110 Karen110
4年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
皮卡皮卡皮 皮卡皮卡皮
4年前
了解什么是 TypeScript
内容纲要了解什么是TypeScriptTypeScript基本语法TypeScript介绍TypeScript是什么TypeScript是JavaScript的强类型版本。然后在编译期去掉类型和特有语法,生成纯粹的JavaScript代码。由于最终在浏览器中运行的仍然是JavaScript,所以TypeScript并
晴空闲云 晴空闲云
3年前
javascript实践教程-01-javascript介绍
本节目标1.了解javascript是什么。2.了解javascript能干什么。内容摘要本篇介绍了javascript是什么,为什么要用javascript,ECMAScript标准是什么等。阅读时间大约510分钟。javascript是什么?javascript是世界上最流行的脚本语言,因为你在电脑、手机、平板上浏览的所有的网页,以及无数基于HT
待兔 待兔
1年前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
梦
4年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
Souleigh ✨ Souleigh ✨
4年前
前端性能优化 - 雅虎军规
无论是在工作中,还是在面试中,web前端性能的优化都是很重要的,那么我们进行优化需要从哪些方面入手呢?可以遵循雅虎的前端优化35条军规,这样对于优化有一个比较清晰的方向.35条军规1.尽量减少HTTP请求个数——须权衡2.使用CDN(内容分发网络)3.为文件头指定Expires或CacheControl,使内容具有缓存性。4.避免空的
Stella981 Stella981
3年前
CococsCreator 常用UI组件(Canvas、Widget、Button、Layout、EditBox、RichText、ScrollView)(第十三篇)
一、Canvas组件这个Canvas组件在前面篇章有讲过的。!在这里插入图片描述(https://oscimg.oschina.net/oscnet/up7e35da59f73f899db7689319ddd07379.png)属性说明DesignResolution设计分辨率(内容生产者在制作场景时使
Easter79 Easter79
3年前
Subime使用笔记(持续跟进)
Subime使用笔记常用插件PackageControlEmmetCSSFormat格式化CSS代码插件DocBlockr快速添加代码注释插件SideBar增强侧边
Stella981 Stella981
3年前
Jquery_artDialog对话框弹出
artDialog是一个基于javascript编写的对话框组件,它拥有精致的界面与友好的接口l  自适应内容artDialog的特殊UI框架能够适应内容变化,甚至连外部程序动态插入的内容它仍然能自适应,因此你不必去考虑消息内容尺寸使用它。它的消息容器甚至能够根据宽度让文本居中或居左对齐——这一切全是XHTMLCSS原生实现。
Wesley13 Wesley13
3年前
Java scirpt 简介
javascript简介:  JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。基本特点:  JavaScri
Stella981 Stella981
3年前
React 第一个小游戏(井字棋)知识关键点
1、React是一个声明式,高效且灵活的用于构建用户界面的JavaScript库通过使用组件来告诉React我们希望在屏幕上看到什么。当数据发生变化时,React会高效的更新并重新渲染我们的组件2、render返回了一个React元素,这是一种对渲染内容的轻量级描述。大多数的React开发者使用了一种名为"JSX"的特