一、左侧使用ul和li标签来实现菜单栏的效果
<template> <div class="container"> <el-container> <el-aside width="350px" class="aside"> <ul> <li>账号注册 <ul> <el-link :underline="false"><li @click='lookUp("#header1")'
:class="{active: nowId === '#header1' ? isActive : ''}">企业注册</li></el-link><br/> <el-link :underline="false"><li @click='lookUp("#header2")'
:class="{active: nowId === '#header2' ? isActive : ''}">用户注册</li></el-link> </ul> </li> </ul> </el-aside> <el-main class="main"> <div id="header1" class="header1"> <div class="firstTitle">一、准备工作</div><br> <div class="contentStyle"> 系统操作前,需先打开浏览器,进入药品物联网供应保障管理平台登录页面。<br/> </div> <div class="secondTitle"> 1. 已有账号</div><br> 如果已有账号,输入用户名和密码,点击[登录],成功登录系统。<br/> <el-image :src="require('@/assets/images/manualPic/login.png')" fit="fill"></el-image> </div> <div id="header2" class="header2"> <div class="secondTitle"> 2. 没有账号</div><br> 如果没有账号,需要点击[免费注册],进行账号注册。<br/> <el-image :src="require('@/assets/images/manualPic/register.png')" fit="fill"/> </div> <el-card class="box-card" shadow="hover"> <el-link :underline="false"> <el-tooltip content="返回首页" placement="top"> <span class="el-icon-thumb" @click="backToIndex"></span> </el-tooltip> </el-link> </el-card> </el-main> </el-container> </div> </template>
注意:
1)、通过el-aside标签的width属性来控制侧边栏的宽度。
2)、使用el-link标签使菜单有可点击的效果,鼠标放上去变成小手。通过将underline属性值设置为false去掉下划线。
3)、通过class的属性绑定来实现是否激活的效果,代码如下:
:class="{active: nowId === '#header1' ? isActive : ''}"
data数据模型中isActive设置为true
active的样式:
.active{
color: #409EFF;
}
4)、el-image引入图片需要使用require。
5)、返回首页的效果的实现:使用el-card实现悬浮的效果,使用el-link来实现可点击的效果,使用el-tooltip实现消息提示,里面放一个elementUI的icon。
样式如下:
.box-card { /*让小手居中显示*/ display: flex; justify-content: center; align-items: center; /*设置圆形的大小和定位*/ height: 60px; 60px; border-radius: 50%; position: fixed; bottom: 35px; right: 15px; /*padding-left: 20px;*/ /*float: right;*/ /*设置圆形的背景色和阴影*/ background-color: #f2f5f6; box-shadow: 0 0 6px rgba(0,0,0, .12); /*手表放上去时光标的形状*/ cursor: pointer; span{ /*设置小手的大小*/ font-size: 30px; /*color: #1989fa;*/ } }
6)、ul去掉前面的点:
ul{ list-style-type: none; }
二、侧边栏和主体区域实现滚动条效果
.aside{ height: calc(100vh-52px); overflow-y:scroll; background-color: ghostwhite; // 鬼白 } .main{ height: calc(100vh-52px); // 取消浏览器的滚动条,只需修改主体区域的高度即可,将整个视口的高度减去顶部导航条的高度即可 /*-webkit-overflow-scrolling: touch;*/ overflow-y:scroll; }
注意:要有高度属性,1vh = 1%,vh表示视口高度viewpoint height;1vw = 1%,vw表示视口宽度viewpoint width,
overflow : scroll ; /*任何时候都强制显示滚动条*/ overflow : auto ; /*需要的时候会出现滚动条*/ overflow-x: auto ; /*控制X方向的滚动条*/ overflow-y: auto ; /*控制Y方向的滚动条*/
还可以使用-webkit-overflow-scrolling属性来实现滚动效果,
-webkit-overflow-scrolling 属性控制元素在移动设备上是否使用滚动回弹效果.
auto: 使用普通滚动, 当手指从触摸屏上移开,滚动会立即停止。
touch: 使用具有回弹效果的滚动, 当手指从触摸屏上移开,内容会继续保持一段时间的滚动效果。继续滚动的速度和持续的时间和滚动手势的强烈程度成正比。同时也会创建一个新的堆栈上下文。
三、vue中实现锚点定位跳转
methods: { lookUp(id){ this.nowId = id document.querySelector(id).scrollIntoView(true); }, backToIndex(){ this.$router.push('index') // 编程式导航 } }
其中:
document.querySelector(“要返回地方的id”).scrollIntoView(true);
HTML5选择了scrollIntoView() 作为标准方法,scrollIntoView()可以在所有的HTML元素上调用。
通过滚动浏览器窗口或某个容器元素,调用元素就可以出现在视窗中。
如果给该方法传入true作为参数,或者不传入任何参数,那么 窗口滚动之后会让调动元素顶部和视窗顶部尽可能齐平。
如果给该方法传入false作为参数,调用元素会尽可能全部出现在视口中(可能的话,调用元素的底部会与视口的顶部齐平)不过顶部不一定齐平。
效果如下: