vue 锚点定位
vue 锚点定位
<template>
<div class="details">
<div class="wrapper w">
<div class="benefit">
<div class="benfit-left">
//这个是页签
<div class="benefit-cell" ref="searchBar" :class="{'fixed': searchBarFixed}">
<div class="benefit-cell-title tabs">
<div class="wrapper-tab">
<span class="tab" :class="{'active1':index==current}" v-for="(item,index) in nav" v-on:click="tabSelect(index)">{{item.text}}</span>
<div v-if="searchBarFixed" class="insure-btn" @click="goInsured(detailsData.code)">立即投保</div>
</div>
</div>
</div>
//第一部分
<div class="benefit-cell" ref="introduce">
<div class="benefit-cell-content">
<!--todo:产品介绍-->
<div class="wrapper" v-html="detailsData.content"></div>
</div>
</div>
//第二部分
<div class="benefit-cell" ref="problem">
<div class="benefit-cell-title">
<h4>常见问题</h4>
<a class="benefit-cell-detail" v-if="subLink.notice_more" @click="goDetails(subLink.notice_more.key,subLink.notice_more.title,detailsData.id)">{{subLink.notice_more.title}}</a>
</div>
<div class="benefit-cell-content">
<!--todo:常见问题-->
<div class="wrapper" v-html="detailsData.notice"></div>
</div>
</div>
//第三部分
<div class="benefit-cell" ref="claims">
<div class="benefit-cell-title">
<h4>理赔说明</h4>
<a class="benefit-cell-detail" v-if="subLink.claim_notice" @click="goDetails(subLink.claim_notice.key,subLink.claim_notice.title,detailsData.id)">{{subLink.claim_notice.title}}</a>
</div>
<div class="benefit-cell-content">
<!--todo:理赔内容-->
<el-steps :active="contentClaims.length" align-center style="margin:60px 0">
<el-step :title="item.title" :description="item.info" v-for="(item,index) in contentClaims" :key="index"></el-step>
</el-steps>
</div>
<div class="benefit-cell-content" style="min-height:600px">
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import urls from "@/api/urls";
let offsetTop, problemTop, claimsTop;
export default {
components: {
"bg-header": header
},
data() {
return {
detailsData: {},
productType: '',
defaultAvatar,
current: 0,
subLink: '',
insureNotes: {},
searchBarFixed: false,
nav: [{
text: '产品介绍',
target: '#introduce'
}, {
text: '常见问题',
target: '#problem'
}, {
text: '理赔说明',
target: '#claims'
}],
code:'',
contentClaims:[]
}
},
created() {
this.id = this.$route.query.id
this.getInfo()
},
mounted() {
window.addEventListener("scroll", this.handleScroll);//页面加载的时候调滚动的方法
},
methods: {
handleScroll() { //滚动的方法
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; //这里的判断是为了兼容各个浏览器
offsetTop = this.$refs.searchBar.offsetTop;
problemTop = this.$refs.problem.offsetTop;
claimsTop = this.$refs.claims.offsetTop;
if(scrollTop > offsetTop) {
this.searchBarFixed = true;
} else {
this.searchBarFixed = false;
}
if(scrollTop >= problemTop && scrollTop < claimsTop) {
this.current = 1;
} else if(scrollTop >= claimsTop) {
this.current = 2;
} else {
this.current = 0;
}
console.log(offsetTop)
},
tabSelect(index) { //tab切换的方法
this.current = index;
// 锚点实时切换
let stepTop =
this.$refs.introduce.offsetTop
let buyTop =
this.$refs.problem.offsetTop
let evaluateTop =
this.$refs.claims.offsetTop
console.log(stepTop)
switch(index) {
case 0:
if(!document.documentElement.scrollTop){ //这里的判断是为了兼容各个浏览器
document.body.scrollTop = stepTop
}else{
document.documentElement.scrollTop = stepTop
}
break
case 1:
if(!document.documentElement.scrollTop){
document.body.scrollTop = buyTop
}else{
document.documentElement.scrollTop = buyTop
}
break
case 2:
if(!document.documentElement.scrollTop){
document.body.scrollTop = evaluateTop
}else{
document.documentElement.scrollTop = evaluateTop
}
break
default:
break
}
},
}
};
</script>
<style scoped lang="less">
@import "../../assets/css/mixins";
.fixed {
position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 10;
background: #fff;
box-shadow: 2px 0px 20px rgba(0, 0, 0, 0.3);
.tabs {
width: 1200px;
margin:0 auto;
}
}
</style>
vue 锚点定位的更多相关文章
- vue滑动吸顶以及锚点定位
Vue项目中需要实现滑动吸顶以及锚点定位功能.template代码如下: <template> <div class="main"> <div id= ...
- html中设置锚点定位的几种常见方法(#号定位)
在html中设置锚点定位我知道的有几种方法,在此和大家分享一下: 1.使用id定位: <a href="#1F">锚点1</a> <div id=&q ...
- 【TRICK】解决锚点定位向下浮动Xpx问题
1. 问题描述 页面滚动后,菜单栏会固定在页头,当锚点定位时,菜单会遮盖部分定位后的内容,所以需要在锚点定位后自动向下漂移Xpx. 2. 解决办法 a. 利用空div 占位,如下: <a hre ...
- 当锚点定位遇上position: fixed
<!DOCTYPE html><html> <head> <title>当锚点定位遇上position: fixed</title> < ...
- Android tabLayout+recyclerView实现锚点定位
原文链接:https://mp.weixin.qq.com/s/L3o2i3WTmg1ScXEYDS8YCg 在上一篇文章 Android 实现锚点定位中,我们介绍了tablayout+scrollV ...
- Android 实现锚点定位
相信做前端的都做过页面锚点定位的功能,通过<a href="#head"> 去设置页面内锚点定位跳转. 本篇文章就使用tablayout.scrollview来实现an ...
- 锚点定位,jquery定位到页面指定位置
jquery锚点定位 $('body,html').animate({scrollTop: $('#ter1').offset().top}, 500);#ter1是你要定位的id对象,500是0.5 ...
- js实现锚点定位
js实现锚点定位的原理是,算出定位的标签距离顶部的高度,点击触发标签,重新赋值滚动条的高度到达指定位置. <!DOCTYPE html> <html> <head> ...
- html锚点定位不准确问题
问题描述 当顶部固定时,点击锚点,会跳转到锚点以下. <style> #one,#two,#three{ height: 500px; } #top{ position: fixed; h ...
随机推荐
- C#操作IIS服务
进入正题:先从使用角度来讲解IIS操作,然后再深入到具体的IIS服务底层原理. [1]前提掌握要点: (1).IIS到目前经历了四个版本分别为 IIS4.0 IIS5.0 IIS6.0 IIS7.0, ...
- php基础-----常量const和define的区别
1.常量是一个简单的标识符,在脚本运行期间,值不可改变,默认大小写敏感. 答:使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数.另外const在编译时要比def ...
- NOI 2015 寿司晚宴 (状压DP+分组背包)
题目大意:两个人从2~n中随意取几个数(不取也算作一种方案),被一个人取过的数不能被另一个人再取.两个人合法的取法是,其中一个人取的任何数必须与另一个人取的每一个数都互质,求所有合法的方案数 (数据范 ...
- [luogu4259 SCOI2003] 严格N元树 (高精 计数dp)
题目描述 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该树中最底层的节点深度为d(根的深度为0),那么我们称它为一棵深度为d的严格n元树.例如,深度为2的严格2元树有三个, ...
- [luogu 2568] GCD (欧拉函数)
题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入输出格式 输入格式: 一个整数N 输出格式: 答案 输入样例#1: 4 输出样例#1: 4 ...
- Struts(19)Struts集成
Struts2 MVC架构 模型视图控制器(Model View Controller)或MVC,MVC是俗称.是一种软件设计模式,用于开发Web应用程序.模型 - 视图 - 控制器模式是由下面三个部 ...
- cocos2d-x 中XML解析与数据存储
一不小心就玩了一周的游戏了.哎.玩的时候时间过得总是这么快... 于是今天决定看一下之前不怎么非常熟悉的XML;(之前做游戏时数据的储存用到过XML,但这块是还有一个同事在做,所以不怎么熟悉), 看了 ...
- Woody的Python学习笔记2
Python多行语句 Python语句中一般以新行作为语句的结束符.但我们能够使用斜杠(\)将一行的语句分为多行显示,例如以下所看到的: total = item_one+\ item_two + \ ...
- javascript 获取指定范围随机数
<script type="text/javascript"> function GetRandomNum(Min,Max){ var Range = Max - Mi ...
- C 语言运算符优先级(记忆口诀)
优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 (表达式)/函数名(形參表) . 成员选择(对象) 对象.成员名 -& ...