vue 锚点定位

  1. <template>
  2. <div class="details">
  3. <div class="wrapper w">
  4. <div class="benefit">
  5. <div class="benfit-left">
  6. //这个是页签
  7. <div class="benefit-cell" ref="searchBar" :class="{'fixed': searchBarFixed}">
  8. <div class="benefit-cell-title tabs">
  9. <div class="wrapper-tab">
  10. <span class="tab" :class="{'active1':index==current}" v-for="(item,index) in nav" v-on:click="tabSelect(index)">{{item.text}}</span>
  11. <div v-if="searchBarFixed" class="insure-btn" @click="goInsured(detailsData.code)">立即投保</div>
  12. </div>
  13. </div>
  14. </div>
  15. //第一部分
  16. <div class="benefit-cell" ref="introduce">
  17. <div class="benefit-cell-content">
  18. <!--todo:产品介绍-->
  19. <div class="wrapper" v-html="detailsData.content"></div>
  20. </div>
  21. </div>
  22. //第二部分
  23. <div class="benefit-cell" ref="problem">
  24. <div class="benefit-cell-title">
  25. <h4>常见问题</h4>
  26. <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>
  27. </div>
  28. <div class="benefit-cell-content">
  29. <!--todo:常见问题-->
  30. <div class="wrapper" v-html="detailsData.notice"></div>
  31. </div>
  32. </div>
  33. //第三部分
  34. <div class="benefit-cell" ref="claims">
  35. <div class="benefit-cell-title">
  36. <h4>理赔说明</h4>
  37. <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>
  38. </div>
  39. <div class="benefit-cell-content">
  40. <!--todo:理赔内容-->
  41. <el-steps :active="contentClaims.length" align-center style="margin:60px 0">
  42. <el-step :title="item.title" :description="item.info" v-for="(item,index) in contentClaims" :key="index"></el-step>
  43. </el-steps>
  44. </div>
  45. <div class="benefit-cell-content" style="min-height:600px">
  46. </div>
  47. </div>
  48. </div>
  49. </div>
  50. </div>
  51. </div>
  52. </template>
  53. <script>
  54. import urls from "@/api/urls";
  55. let offsetTop, problemTop, claimsTop;
  56. export default {
  57. components: {
  58. "bg-header": header
  59. },
  60. data() {
  61. return {
  62. detailsData: {},
  63. productType: '',
  64. defaultAvatar,
  65. current: 0,
  66. subLink: '',
  67. insureNotes: {},
  68. searchBarFixed: false,
  69. nav: [{
  70. text: '产品介绍',
  71. target: '#introduce'
  72. }, {
  73. text: '常见问题',
  74. target: '#problem'
  75. }, {
  76. text: '理赔说明',
  77. target: '#claims'
  78. }],
  79. code:'',
  80. contentClaims:[]
  81. }
  82. },
  83. created() {
  84. this.id = this.$route.query.id
  85. this.getInfo()
  86. },
  87. mounted() {
  88. window.addEventListener("scroll", this.handleScroll);//页面加载的时候调滚动的方法
  89. },
  90. methods: {
  91. handleScroll() { //滚动的方法
  92. var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; //这里的判断是为了兼容各个浏览器
  93. offsetTop = this.$refs.searchBar.offsetTop;
  94. problemTop = this.$refs.problem.offsetTop;
  95. claimsTop = this.$refs.claims.offsetTop;
  96. if(scrollTop > offsetTop) {
  97. this.searchBarFixed = true;
  98. } else {
  99. this.searchBarFixed = false;
  100. }
  101. if(scrollTop >= problemTop && scrollTop < claimsTop) {
  102. this.current = 1;
  103. } else if(scrollTop >= claimsTop) {
  104. this.current = 2;
  105. } else {
  106. this.current = 0;
  107. }
  108. console.log(offsetTop)
  109. },
  110. tabSelect(index) { //tab切换的方法
  111. this.current = index;
  112. // 锚点实时切换
  113. let stepTop =
  114. this.$refs.introduce.offsetTop
  115. let buyTop =
  116. this.$refs.problem.offsetTop
  117. let evaluateTop =
  118. this.$refs.claims.offsetTop
  119. console.log(stepTop)
  120. switch(index) {
  121. case 0:
  122. if(!document.documentElement.scrollTop){ //这里的判断是为了兼容各个浏览器
  123. document.body.scrollTop = stepTop
  124. }else{
  125. document.documentElement.scrollTop = stepTop
  126. }
  127. break
  128. case 1:
  129. if(!document.documentElement.scrollTop){
  130. document.body.scrollTop = buyTop
  131. }else{
  132. document.documentElement.scrollTop = buyTop
  133. }
  134. break
  135. case 2:
  136. if(!document.documentElement.scrollTop){
  137. document.body.scrollTop = evaluateTop
  138. }else{
  139. document.documentElement.scrollTop = evaluateTop
  140. }
  141. break
  142. default:
  143. break
  144. }
  145. },
  146. }
  147. };
  148. </script>
  149. <style scoped lang="less">
  150. @import "../../assets/css/mixins";
  151. .fixed {
  152. position: fixed;
  153. top: 0;
  154. left: 0;
  155. width: 100%;
  156. z-index: 10;
  157. background: #fff;
  158. box-shadow: 2px 0px 20px rgba(0, 0, 0, 0.3);
  159. .tabs {
  160. width: 1200px;
  161. margin:0 auto;
  162. }
  163. }
  164. </style>

vue 锚点定位的更多相关文章

  1. vue滑动吸顶以及锚点定位

    Vue项目中需要实现滑动吸顶以及锚点定位功能.template代码如下: <template> <div class="main"> <div id= ...

  2. html中设置锚点定位的几种常见方法(#号定位)

    在html中设置锚点定位我知道的有几种方法,在此和大家分享一下: 1.使用id定位: <a href="#1F">锚点1</a> <div id=&q ...

  3. 【TRICK】解决锚点定位向下浮动Xpx问题

    1. 问题描述 页面滚动后,菜单栏会固定在页头,当锚点定位时,菜单会遮盖部分定位后的内容,所以需要在锚点定位后自动向下漂移Xpx. 2. 解决办法 a. 利用空div 占位,如下: <a hre ...

  4. 当锚点定位遇上position: fixed

    <!DOCTYPE html><html> <head> <title>当锚点定位遇上position: fixed</title> < ...

  5. Android tabLayout+recyclerView实现锚点定位

    原文链接:https://mp.weixin.qq.com/s/L3o2i3WTmg1ScXEYDS8YCg 在上一篇文章 Android 实现锚点定位中,我们介绍了tablayout+scrollV ...

  6. Android 实现锚点定位

    相信做前端的都做过页面锚点定位的功能,通过<a href="#head"> 去设置页面内锚点定位跳转. 本篇文章就使用tablayout.scrollview来实现an ...

  7. 锚点定位,jquery定位到页面指定位置

    jquery锚点定位 $('body,html').animate({scrollTop: $('#ter1').offset().top}, 500);#ter1是你要定位的id对象,500是0.5 ...

  8. js实现锚点定位

    js实现锚点定位的原理是,算出定位的标签距离顶部的高度,点击触发标签,重新赋值滚动条的高度到达指定位置. <!DOCTYPE html> <html> <head> ...

  9. html锚点定位不准确问题

    问题描述 当顶部固定时,点击锚点,会跳转到锚点以下. <style> #one,#two,#three{ height: 500px; } #top{ position: fixed; h ...

随机推荐

  1. deploy springboot to tomcat

    1    在 Eclipse 中建立新的web项目[ABC],之后 转成Maven项目. 2   创建 class   Application 3  修改POM 4  修改web.xml 5  exp ...

  2. 『转』How to Think About Your Career

    开始工作的伊始,逐渐转载及阅读Medium上知名华裔设计师Julie Zhuo的文章,这是她在medium上的介绍:Product design VP @ Facebook. Lover of foo ...

  3. HDU 1009 FatMouse' Trade【贪心】

    解题思路:一只老鼠共有m的猫粮,给出n个房间,每一间房间可以用f[i]的猫粮换取w[i]的豆,问老鼠最多能够获得豆的数量 sum 即每一间房间的豆的单价为v[i]=f[i]/w[i],要想买到最多的豆 ...

  4. UVA340-Master-Mind Hints(紫书例题3.4)

    MasterMind is a game for two players. One of them, Designer, selects a secret code. The other, Break ...

  5. selenium chrome.options禁止加载图片和js

    #新建一个选项卡 from selenium import webdriver options = webdriver.ChromeOptions() #禁止加载图片 prefs = { 'profi ...

  6. WinServer-IIS-压缩及缓存

    静态内容压缩: 默认10s内有2个客户端一起请求服务器的话,服务器就会把相关的静态内容压缩返回 动态内容压缩: 默认IIS的程序域最高可以占用CPU90%的资源,这个可以通过命令行修改 缓存和内核缓存 ...

  7. Linux内核源码情景分析-wait()、schedule()

    父进程执行wait4,并调用schedule切换到子进程: wait4(child, NULL, 0, NULL); 像其它系统调用一样.wait4()在内核中的入口是sys_wait4().代码例如 ...

  8. MySQL 创建表时,设置时间字段自己主动插入当前时间

    MySQL 创建表时,设置时间字段自己主动插入当前时间 DROP TABLE IF EXISTS `CONTENT`; CREATE TABLE `CONTENT` ( `ID` char(20) N ...

  9. hello world to php( mac 配置 xmapp virtual host)

    一.安装xmapp.安装完以后查看,服务是否都能启动(数据库和server) 二.配置自己的virtualhost       1.系统host文件加入server的域名(在浏览器中输入域名后会先通过 ...

  10. C++中对字符串进行插入、替换、删除操作

    #include <iostream> #include <string> using std::cout; using std::endl; using std::strin ...