vue实现导航器效果【vue+less+适配效果】
剑阁峥嵘而崔嵬,一夫当关,万夫莫开 🏆 @蜀道难
🔎 了解博主
- 📢 个人简介: 哈喽!小伙伴们,我是水香木鱼,水瓶座一枚 😜 来自于黑龙江 庆安
- 🏡 本站首页: 水香木鱼
- 🚀 博客主页: 陈春波 👉 开源博客模板【纯前端开发-
Vue3
+TS
+Ant Design of Vue
】,来 Star⭐Gitee吧 ! 拥有属于我们自己的 Blog。 - 🎨 系列专栏:后台管理系统
- 📖 人生格言: 生活是一面镜子。 你对它笑, 它就对你笑; 你对它哭, 它也对你哭。
- 🌏 小目标: 成为前端布道师
本期带来的是导航器效果
直奔主题
👇
📑 文章内容
1、内容区域
<div class="block">
<div class="title" ref="anchor0">平台硬件</div>
<div class="content">
<div class="outer44"></div>
</div>
</div>
<div class="block">
<div class="title" ref="anchor1">平台软件</div>
<div class="content">
<div class="outer44"></div>
</div>
</div>
<div class="block">
<div class="title" ref="anchor2">解决方案</div>
<div class="content">
<div class="outer44"></div>
</div>
</div>
<div class="block">
<div class="title" ref="anchor3">核心优势</div>
<div class="content">
<div class="outer44"></div>
</div>
</div>
2、导航器 event 区域
- scrollTo:(点击事件)
- ‘anchor0’:(关联内容区域,显示对应的导航内容)
- el-icon-monitor:(为element icon图标),可在main.js 中全局引入,即可使用。【不限于i标签,可在p、span等标签中使用】
<div class="nav-fixed">
<div class="flex-row" @click="scrollTo('anchor0')">
<i class="el-icon-monitor"></i><span>平台硬件</span>
</div>
<div class="flex-row" @click="scrollTo('anchor1')">
<i class="el-icon-data-analysis"></i><span>平台软件</span>
</div>
<div class="flex-row" @click="scrollTo('anchor2')">
<i class="el-icon-key"></i><span>解决方案</span>
</div>
<div class="flex-row" @click="scrollTo('anchor3')">
<i class="el-icon-thumb"></i><span>核心优势</span>
</div>
</div>
3、less样式
关键代码,都是最基础的,小伙伴们 自行去研究 注释。木鱼在这就不过多的介绍了
注意:本次演示样式部分 已经附加 👩🚀适配代码【可用于后台管理系统适配】
详细请移步 vue后台管理做适配的最佳方案,你知道吗?
// 关键样式代码
.nav-fixed {
z-index: 999;
position: fixed;
bottom: 198 / @remvw;
right: 2.8%;
width: 44 / @remvw;
& > div {
padding: 8 / @remvw;
border-radius: 6 / @remvw;
background-color: #ec8bc9;
color: #fff;
position: absolute;
cursor: pointer;//小手状态
top: 0;
opacity: 0.6;//透明度
i {
font-size: 28 / @remvw;
}
span {
display: none;//隐藏
padding-left: 6 / @remvw;
font-size: 14 / @remvw;
font-weight: 550;
}
}
// 移到到图标上的效果【默认只显示icon 图标】
& > div:hover {
left: -62 / @remvw;//鼠标移入 将i 和span 标签变成 水平拉长【图标和文字都显示】
opacity: 1;
span {
display: inline-block;
}
}
// 背景颜色
& > div:nth-child(2) {
top: 44 / @remvw;
background-color: #e58b8c;
}
& > div:nth-child(3) {
top: 88 / @remvw;
background-color: #8aa3f3;
}
& > div:nth-child(4) {
top: 132 / @remvw;
background-color: #96dc8b;
}
}
4、scrollIntoView
【关键】
作用:将调用它的元素滚动到浏览器窗口的可见区域。
- behavior:‘smooth’ 平滑过渡
- block:start 顶部、end 尾部
<script>
export default {
methods: {
scrollTo(anchor) {
// 选中ref
this.$refs[anchor].scrollIntoView({
behavior: "smooth", // 平滑过渡
block: "start", // 上边框与视窗顶部平齐。start、end 可选 默认值
});
},
},
};
</script>
5、源码部分
视口部分:
<!--index.vue-->
<template>
<div class="page">
<div class="block">
<div class="title" ref="anchor0">平台硬件</div>
<div class="content">
<div class="outer44"></div>
</div>
</div>
<div class="block">
<div class="title" ref="anchor1">平台软件</div>
<div class="content">
<div class="outer44"></div>
</div>
</div>
<div class="block">
<div class="title" ref="anchor2">解决方案</div>
<div class="content">
<div class="outer44"></div>
</div>
</div>
<div class="block">
<div class="title" ref="anchor3">核心优势</div>
<div class="content">
<div class="outer44"></div>
</div>
</div>
<!-- 导航器 -->
<div class="nav-fixed">
<div class="flex-row" @click="scrollTo('anchor0')">
<i class="el-icon-monitor"></i><span>平台硬件</span>
</div>
<div class="flex-row" @click="scrollTo('anchor1')">
<i class="el-icon-data-analysis"></i><span>平台软件</span>
</div>
<div class="flex-row" @click="scrollTo('anchor2')">
<i class="el-icon-key"></i><span>解决方案</span>
</div>
<div class="flex-row" @click="scrollTo('anchor3')">
<i class="el-icon-thumb"></i><span>核心优势</span>
</div>
</div>
</div>
</template>
<script>
export default {
methods: {
scrollTo(anchor) {
// 选中ref
this.$refs[anchor].scrollIntoView({
behavior: "smooth", // 平滑过渡
block: "start", // 上边框与视窗顶部平齐。默认值
});
},
},
};
</script>
<style scoped lang="less" src="@/assets/css/aiplatform.less" />
样式部分:
//index.less
@remvw: 1366/100vw;// 一📢适配关键代码
.page {
position: relative;
width: 100%;
background-color: rgba(255, 255, 255, 1);
.block {
width: 88%;
margin: 20 / @remvw auto;
.title {
overflow-wrap: break-word;
color: #424656;
font-size: 32 / @remvw;
font-family: PingFangSC-Medium;
white-space: nowrap;
line-height: 45 / @remvw;
text-align: center;
}
.content {
margin-top: 31 / @remvw;
background-color: #eeeff4;
padding: 10 / @remvw;
.outer44 {
height: 1020 / @remvw;
background: #fff;
width: 100%;
position: relative;
padding: 38 / @remvw 20 / @remvw;
}
}
}
.mt-20 {
margin-top: 20 / @remvw;
}
// 关键样式代码
.nav-fixed {
z-index: 999;
position: fixed;
bottom: 198 / @remvw;
right: 2.8%;
width: 44 / @remvw;
& > div {
padding: 8 / @remvw;
border-radius: 6 / @remvw;
background-color: #ec8bc9;
color: #fff;
position: absolute;
cursor: pointer;
top: 0;
opacity: 0.6;
i {
font-size: 28 / @remvw;
}
span {
display: none;
padding-left: 6 / @remvw;
font-size: 14 / @remvw;
font-weight: 550;
}
}
// 移到到图标上的效果
& > div:hover {
left: -62 / @remvw;
opacity: 1;
span {
display: inline-block;
}
}
// 背景颜色
& > div:nth-child(2) {
top: 44 / @remvw;
background-color: #e58b8c;
}
& > div:nth-child(3) {
top: 88 / @remvw;
background-color: #8aa3f3;
}
& > div:nth-child(4) {
top: 132 / @remvw;
background-color: #96dc8b;
}
}
}
博主致谢
非常感谢小伙伴们阅读到结尾,本期的文章就分享到这里,总结了
(vue实现导航器效果【vue+less+适配效果】)
,希望可以帮到大家,谢谢。
👉 如果你觉得本篇文章有帮助到您,鼓励一下木鱼吧! 点击
【关注+点赞+收藏+评论+转发
】支持一下哟
😛 您的支持就是我更新的最大动力。👇
往期精彩
前端开发:颜色代码速查表【英文颜色、HEX格式、RGB格式】