首页 > 其他分享 >vue 实现锚点点位

vue 实现锚点点位

时间:2023-04-03 14:44:06浏览次数:27  
标签:vue title 实现 height 点点 item background margin scroll

<template>  <div class="container">   <!-- <el-row>   <el-col :span="3">     <el-menu         default-active="2"         class="el-menu-vertical-demo"         @open="handleOpen"         @close="handleClose">         <el-submenu index="1">           <template slot="title">             <h4>导航一</h4>           </template>           <el-menu-item-group>             <el-menu-item index="1-1" ><a href="#1" rel="external nofollow" >选项1</a></el-menu-item>             <el-menu-item index="1-2" ><a href="#2" rel="external nofollow" >选项2</a></el-menu-item>           </el-menu-item-group>             <el-menu-item index="1-3" ><a href="#3" rel="external nofollow" >选项3</a></el-menu-item>           </el-menu-item-group>           <el-submenu index="1-4">             <template slot="title"><a href="#4" rel="external nofollow" >选项4</a></template>             <el-menu-item index="1-4-1">选项1</el-menu-item>           </el-submenu>         </el-submenu>         <el-menu-item index="2">           <span slot="title">导航二</span>         </el-menu-item>         <el-menu-item index="3" disabled>           <span slot="title">导航三</span>         </el-menu-item>         <el-menu-item index="4">           <span slot="title">导航四</span>         </el-menu-item>       </el-menu>     </el-col>   <el-col :span="21">      <el-form  label-width="100%">           <div class="info" id="1">             <el-input  placeholder="请输入内容"></el-input>             <el-input  placeholder="请输入内容"></el-input>             <el-input placeholder="请输入内容"></el-input>             <el-input  placeholder="请输入内容"></el-input>             <el-input  placeholder="请输入内容"></el-input>             <el-input placeholder="请输入内容"></el-input>           </div>           <br>           <div class="info" id="2">             <el-input  placeholder="请输入内容"></el-input>             <el-input placeholder="请输入内容"></el-input>             <el-input  placeholder="请输入内容"></el-input>             <el-input  placeholder="请输入内容"></el-input>             <el-input  placeholder="请输入内容"></el-input>             <el-input placeholder="请输入内容"></el-input>           </div>           <br>           <div class="info" id="3">             <el-input  placeholder="请输入内容"></el-input>             <el-input  placeholder="请输入内容"></el-input>             <el-input  placeholder="请输入内容"></el-input>             <el-input  placeholder="请输入内容"></el-input>             <el-input  placeholder="请输入内容"></el-input>             <el-input placeholder="请输入内容"></el-input>           </div>                     <div class="info" id="4">             <el-input  placeholder="请输入内容"></el-input>             <el-input  placeholder="请输入内容"></el-input>             <el-input  placeholder="请输入内容"></el-input>             <el-input  placeholder="请输入内容"></el-input>             <el-input  placeholder="请输入内容"></el-input>             <el-input placeholder="请输入内容"></el-input>           </div>
          </el-form>   </el-col>   </el-row> -->   <el-row>   <el-col :span="3">       <div class="list">       <ul>         <li v-for="(item,index) in title_list" :key="index">         <span ref="spans" :style="{color: activeStep === index ? '#1987e1' : '#000000'}"         @click="jump(index)">         {{item.title}}         </span>         </li>       </ul>     </div>  </el-col>   <el-col :span="21">     <div class="result" @scroll="onScroll" >       <div class="scroll-item"><span>第一</span></div>       <div class="scroll-item"><span>第二</span></div>       <div class="scroll-item"><span>第三</span></div>       <div class="scroll-item"><span>第四</span></div>       <div class="scroll-item"><span>第五</span></div>     </div>   </el-col>   </el-row>  </div> </template>



<script>    export default {     methods:{     jump(index) {       var items = document.querySelectorAll(".scroll-item");       for (var i = 0; i < items.length; i++) {         if (index === i) {           items[i].scrollIntoView({             block: "start",//默认跳转到顶部             behavior: "smooth"//滚动的速度           });         }       }     },     onScroll(e) {       let scrollItems = document.querySelectorAll(".scroll-item");       for (let i = scrollItems.length - 1; i >= 0; i--) {         // 判断滚动条滚动距离是否大于当前滚动项可滚动距离         let judge =           e.target.scrollTop >=           scrollItems[i].offsetTop - scrollItems[0].offsetTop;         if (judge) {           this.activeStep = i;           break;         }       }     },       },   data() {     return {       activeStep :0,       title_list:[         {title:'第一'},         {title:'第二'},                 {title:'第三'},         {title:'第四'},         {title:'第五'},         ]     }   }
    // methods: {     //   handleOpen(key, keyPath) {     //     console.log(key, keyPath);     //   },     //   handleClose(key, keyPath) {     //     console.log(key, keyPath);     //   }     // }    }   </script> <style> .el-row {   margin-bottom: 20px;   &:last-child {     margin-bottom: 0;   } } .el-col {   border-radius: 4px; } .bg-purple-dark {   background: #99a9bf; } .bg-purple {   background: #d3dce6; } .bg-purple-light {   background: #e5e9f2; } .grid-content {   border-radius: 4px;   min-height: 36px; } .row-bg {   padding: 10px 0;   background-color: #f9fafc; }


/* .list {   width: 140px;   height: 240px;   margin-bottom: 20px;   background: pink;   position:fixed;   right:20px;   top:300px; } */ ul {   width:140px;   height: 40px;   line-height: 40px;   list-style: none; } li {   /* float: left; */   font-size: 30px; } li>span {   cursor:pointer; } .result {   /* width: 100%; */   height: 500px;   overflow: scroll; } .scroll-item {   width: 100%;   height: 500px;   margin-top:20px;   background: yellow; } .scroll-item>span {   font-size: 40px; } .scroll-item:first-child {   height:1000px;   margin-top: 0; } .scroll-item:last-child {   height: 500px; }
</style>

标签:vue,title,实现,height,点点,item,background,margin,scroll
From: https://www.cnblogs.com/lajf/p/17283007.html

相关文章

  • 实现一个函数用来解析 URL 的 querystring
    实现如下效果consturl="https://xxxx.com?a=3&b=4&c=5&name=1+1=2";//解析后得到qs如下constqs={a:3,b:4,c:5,name:'1+1=2'};纯碎使用 javascript 完成解析函数,而不利用浏览器DOM特性API,代码如下所示,细节在注释中体现functionparse(url......
  • vue3路由跳转params传参接收不到
      这样路由可以跳转过去,但接收到了params是一个空对象。 解决方法由于之前的params传参在页面刷新之后,参数会丢失,所以vue将这种方法移除了。vue推荐的路由跳转传参方法:1.使用query传递参数2.使用vuex、pinia对参数进行存储3.使用HistoryAPI方式传递和接收  ......
  • 实现一个无限累加的 sum 函数
    实现一个sum函数如下所示:sum(1,2,3).valueOf();//6sum(2,3)(2).valueOf();//7sum(1)(2)(3)(4).valueOf();//10sum(2)(4,1)(2).valueOf();//9sum(1)(2)(3)(4)(5)(6).valueOf();//21可以这样functionsum(...args){//allArgs收集所有的argsleta......
  • vue3 ant-Design-vue提交按钮放在表单外提交,自定义提交按钮
    <template><a-formref="urlEditRef":model="urlEditInfo"name="urlEdit_rule"layout="vertical"><a-form-itemlabel="跳转链接"name="longUrl":rules=&qu......
  • java稀疏数组实现实例
    没有原理讲解,仅记录一个实现代码,作为参考和笔记使用如题,稀疏数组仅在原始数组有效数据较少的情况下起压缩空间的作用实现过程:首先为了方便查看和确认,封装一个打印二维数组的方法publicstaticvoidprintArray(int[][]arrays){for(int[]array:arrays){......
  • Synchronized实现原理,你知道多少?
    1.synchronized的作用是什么 synchronized也叫作同步锁,解决的是多个线程之间对资源的访问一致性。换句话说,就是保证在同一时刻,被synchronized修饰的方法或代码块只有一个线程在执行,其他线程必须等待,解决并发安全问题。其可以支持原子性、可见性和有序性。三大特性的说明2.sync......
  • vue中使用nprogress优化导航条和请求数据的时候进行加载中显示
    以下内容仅供学习使用先进行安装npminstall--savenprogress或者yarnaddnprogress在你封装的request.js中使用importNProgressfrom'nprogress'import'nprogress/nprogress.css'在axios.interceptors.request.use(config=>{},请求开始的时候使用NProgres......
  • Vue监听器~~~~
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=......
  • Vue3中修改父组件传递到子组件中的值
    Vue3中修改父组件传递到子组件中的值1.大家都知道,vue是具有单向数据流的传递特性。当你在子组件中修改父组件传递过来的数据的时候,控制台就会报出错误,说不让你对父组件传递的值进行修改。2.那么,尤大大为了解决这个问题,在vue3的时候给我们提供了一个新的思路:v-model来实现父传子,并......
  • canvas 实现水印功能
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-......