vue+jquery+lodash实现滑动时顶部悬浮固定效果


Posted in jQuery onApril 28, 2018

本文实例为大家分享了vue实现滑动时顶部悬浮固定效果的具体代码,供大家参考,具体内容如下

这个效果是一个项目中抽出来的一个demo效果。

vue+jquery+lodash实现滑动时顶部悬浮固定效果

前期准备:

1. 引入jQ

<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>

引入lodash.js

npm install lodash -D

fixTop.vue组件的

<template>
 <div class="fixtop2">

  <header class="header" ref="header"></header>

  <div class="nav" ref="nav" :class="{isFixed:isFixed}">
   <div class="box" v-for="(item,index) in list" :key="index">
    {{item.title}}
   </div>
  </div>

  <ul class="content">
   <li v-for="(item,index) in new Array(20)" :key="index">{{index+1}}</li>
  </ul>

 </div>
</template>
<script>
var throttle = require('lodash/throttle'); //从lodash中引入的throttle节流函数
export default {
 name: 'navScroll2',
 data() {
  return {
   list: [
    { title: 'AAAA', id: 1 },
    { title: 'BBBB', id: 2 },
    { title: 'CCCC', id: 3 },
    { title: 'DDDD', id: 4 },
   ],
   isFixed: false, //是否固定的
   throttleScroll: null, //定义一个截流函数的变量
  };
 },
 methods: {
  //滚动的函数
  handleScroll() {
   let h = $(this.$refs.header).outerHeight(); //header的高度
   let wh = $(window).scrollTop(); //滚动的距离的,为什么这里使用的jq,因为不用考虑的什么的兼容问题
   let navH = $(this.$refs.nav).outerHeight(); //nav的高度

   if (wh > h) {
    this.isFixed = true;
   } else {
    this.isFixed = false;
   }
  },
 },

 mounted() {
  //写在掉接口的里面的
  this.$nextTick(() => {
   //这里使用监听的scroll的事件,为什么要使用的节流函数,如果不使用的,页面一直在滚动计算的,这样在
   //使用手机时候,出现非常卡的,隔一段时间计算,大大降低了性能的消耗(具体的好处自己去查资料)
   window.addEventListener('scroll', this.throttleScroll, false);
  });

  this.throttleScroll = throttle(this.handleScroll, 100);
 },
 deactivated() {
  //离开页面需要remove这个监听器,不然还是卡到爆。
  window.removeEventListener('scroll', this.throttleScroll);
 },
};
</script>
<style lang="scss" scoped>
.fixtop2 {
 min-height: 100vh;
}

.header {
 height: 5rem;
 width: 100%;
 background-color: red;
}

.nav {
 display: flex;
 width: 100%;
 background-color: pink;
 &.isFixed {
  position: fixed;
  left: 0;
  top: 0;
  z-index: 9999;
 }
 .box {
  font-size: 0.3rem;
  padding: 0 0.3rem;
  height: 0.9rem;
  line-height: 0.9rem;
  color: #333333;
  flex: 1;
 }
}

.content {
 height: 20rem;
 li {
  width: 100%;
  height: 1rem;
  border-bottom: 1px solid #000;
 }
}
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
Apr 13 jQuery
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
Apr 28 jQuery
Jquery获取radio选中的值
May 05 jQuery
jQuery实现 RadioButton做必选校验功能
Jun 15 jQuery
jquery.validate表单验证插件使用详解
Jun 21 jQuery
jquery实现限制textarea输入字数的方法
Sep 06 jQuery
jQuery实现手机号正则验证输入及自动填充空格功能
Jan 02 jQuery
jquery实现进度条状态展示
Mar 26 jQuery
JavaScript或jQuery 获取option value值方法解析
May 12 jQuery
jQuery 选择方法及$(this)用法实例分析
May 19 jQuery
jQuery开发仿QQ版音乐播放器
Jul 10 jQuery
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 jQuery
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
Apr 27 #jQuery
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
Apr 26 #jQuery
jQuery实现的点击标题文字切换字体效果示例【测试可用】
Apr 26 #jQuery
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
Apr 26 #jQuery
jQuery length 和 size()区别总结
Apr 26 #jQuery
jQuery+ajax实现动态添加表格tr td功能示例
Apr 23 #jQuery
jQuery中图片展示插件highslide.js的简单dom
Apr 22 #jQuery
You might like
php引用地址改变变量值的问题
2012/03/23 PHP
PHP 查找字符串常用函数介绍
2012/06/07 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
PHP中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
PHP基于SimpleXML生成和解析xml的方法示例
2017/07/17 PHP
JavaScript中两个感叹号的作用说明
2011/12/28 Javascript
通过js获取div的background-image属性
2013/10/15 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
基于javascript制作经典传统的拼图游戏
2016/03/22 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
2016/06/07 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
微信小程序 页面跳转和数据传递实例详解
2017/01/19 Javascript
js date 格式化
2017/02/15 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
基于Vue实现平滑过渡的拖拽排序功能
2019/06/12 Javascript
Vue实现验证码功能
2019/12/03 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
2020/03/10 Javascript
[01:30:54]《加油DOTA》 第三期
2014/08/18 DOTA
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
python中lambda与def用法对比实例分析
2015/04/30 Python
python入门基础之用户输入与模块初认识
2016/11/14 Python
python 中random模块的常用方法总结
2017/07/08 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
广播体操口号
2014/06/18 职场文书
党员演讲稿
2014/09/04 职场文书
学前班学生评语
2014/12/29 职场文书
幼儿园中秋节活动总结
2015/03/23 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
六年级语文教学反思
2016/03/03 职场文书
2019年入党思想汇报
2019/03/25 职场文书