vue实现全屏滚动效果(非fullpage.js)

本文实例为大家分享了vue实现全屏滚动效果(的具体代码,供大家参考,具体内容如下

是什么

网页的一个页面占据一屏的宽高,多个页面上下或者左右拼接在一起。当滑动鼠标滚轮,或点击导航按钮时,可以平滑到对应的页面。

此次只实现鼠标滚动

实现原理

使用mousewheel , DOMMouseScroll(火狐用)监听鼠标滚动事件,当鼠标上下的滚动的时候,当前的页面transformY(屏高)或者transformX(屏宽)

代码实现

HTML

<template>
 <div class="fullPage" ref="fullPage">
  <div
   class="fullPageContainer"
   ref="fullPageContainer"
   @mousewheel="mouseWheelHandle" //监听鼠标事件
   @DOMMouseScroll="mouseWheelHandle" // 监听鼠标事件
  >
   <div class="section section1">1</div>
   <div class="section section2">2</div>
   <div class="section section3">3</div>
   <div class="section section4">4</div>
  </div>
 </div>
</template>

JS

<script>
export default {
 name: "Home",
 data() {
  return {
   fullpage: {
    current: 1, // 当前的页面编号
    isScrolling: false, // 是否在滚动,是为了防止滚动多页,需要通过一个变量来控制是否滚动
    deltaY: 0 // 返回鼠标滚轮的垂直滚动量,保存的鼠标滚动事件的deleteY,用来判断是往下还是往上滚
   }
  };
 },
 methods: {
  next() { // 往下切换
   let len = 4; // 页面的个数
   if (this.fullpage.current + 1 <= len) { // 如果当前页面编号+1 小于总个数,则可以执行向下滑动
    this.fullpage.current += 1; // 页面+1
    this.move(this.fullpage.current); // 执行切换
   }
  },
  pre() {// 往上切换
   if (this.fullpage.current - 1 > 0) { // 如果当前页面编号-1 大于0,则可以执行向下滑动
    this.fullpage.current -= 1;// 页面+1
    this.move(this.fullpage.current);// 执行切换
   }
  },
  move(index) {
   this.fullpage.isScrolling = true; // 为了防止滚动多页,需要通过一个变量来控制是否滚动
   this.directToMove(index); //执行滚动
   setTimeout(() => {    //这里的动画是1s执行完,使用setTimeout延迟1s后解锁
    this.fullpage.isScrolling = false;
   }, 1010);
  },
  directToMove(index) {
   let height = this.$refs["fullPage"].clientHeight; //获取屏幕的宽度
   let scrollPage = this.$refs["fullPageContainer"];  // 获取执行tarnsform的元素
   let scrollHeight; // 计算滚动的告诉,是往上滚还往下滚
   scrollHeight= -(index - 1) * height + "px";
   scrollPage.style.transform = `translateY(${scrollHeight})`;
   this.fullpage.current = index;
  },
  mouseWheelHandle(event) { // 监听鼠标监听
   // 添加冒泡阻止
   let evt = event || window.event;
   if (evt.stopPropagation) {
    evt.stopPropagation();
   } else {
    evt.returnValue = false;
   }
   if (this.fullpage.isScrolling) { // 判断是否可以滚动
    return false;
   }
   let e = event.originalEvent || event;
   this.fullpage.deltaY = e.deltaY || e.detail; // Firefox使用detail
   if (this.fullpage.deltaY > 0) {
    this.next();
   } else if (this.fullpage.deltaY < 0) {
    this.pre();
   }
  }
 }
};
</script>

CSS

<style scoped>
.fullPage{
 height: 100%;//一定要设置,保证占满
 overflow: hidden;//一定要设置,多余的先隐藏
 background-color: rgb(189, 211, 186);
}
.fullPageContainer{
 width: 100%;
 height: 100%;
 transition: all linear 0.5s;
}
.section {
 width: 100%;
 height: 100%;
 background-position: center center;
 background-repeat: no-repeat;
}
.section1 {
 background-color: rgb(189, 211, 186);
 background: url("./assets/intro-bg.jpg");
}
.section1 .secction1-content {
 color: #fff;
 text-align: center;
 position: absolute;
 top: 40%;
 right: 0;
 left: 0;
}
.secction1-content h1 {
 font-size: 40px;
 padding-bottom: 30px;
}
.secction1-content p {
 font-size: 20px;
}
.section2 {
 background-color: rgb(44, 48, 43);
}
.section3 {
 background-color: rgb(116, 104, 109);
}
.section4 {
 background-color: rgb(201, 202, 157);
}
</style>

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

(0)

相关推荐

  • vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)

    对于vue-video-player,从github上找到一段代码,直接放页面!可以了,视频展示出来了!开始下一个功能.... 这可能是大部分前端开发者一贯的思维模式,拿来一个插件,看着demo就做出来了,功能展示正常就OK了,但是一旦出了bug,就会面向百度编程或者面向Google编程! 其实,我也是这样的,哈哈哈哈..... 废话不多说,最近在做一个视频播放的功能,找到vue-video-player插件后,咔咔咔完事,拿着我的爱疯,完美演绎!但是其他人的国产某牌手机,展示的完全不一样,打开

  • 富文本编辑器vue2-editor实现全屏功能

    vue2-editor非常不错,可惜并未带全屏功能,自己实现了一个,供大家参考. 实现思路:自定义模块. 1. 定义全屏模块Fullscreen /** * 编辑器的全屏实现 */ import noScroll from 'no-scroll' export default class Fullscreen { constructor (quill, options = {}) { this.quill = quill this.options = options this.fullscree

  • vue实现浏览器全屏展示功能

    1.项目中使用的是sreenfull插件,执行命令安装 npm install --save screenfull 2.安装好后,引入项目,用一个按钮进行控制即可,按钮方法如下: toggleFullscreen() { if (!screenfull.enabled) { this.$message({ message: 'you browser can not work', type: 'warning' }) return false } screenfull.toggle() } 试了一

  • vue全屏事件开发详解

    本文实例为大家分享了vue全屏事件开发的具体代码,供大家参考,具体内容如下 在项目中有需求相应浏览器全屏,写了个案例代码 先看看效果吧 全屏显示: html代码: <!-- el-tooltip 文字提示 --> <div class="btn-fullscreen" @click="handleFullScreen"> <el-tooltip effect="dark" :content="fullscr

  • vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】

    最近公司的产品上线,一些高级功能在基础版本中不对用户开发,通过视频的形式展示. 产品开发用的是 vue, 经同事介绍使用了vue-video-player视频播放插件,通过 demo案例很快实现了视频播放效果 <video-player class="vjs-custom-skin" ref="videoPlayer1" :options="playerOptions" :playsinline="true" :even

  • vue-cli点击实现全屏功能

    本文实例为大家分享了vue-cli点击实现全屏功能的具体代码,供大家参考,具体内容如下 项目中有点击按钮实现全屏功能 方式一:js实现全屏 代码如下: <template> <div> <a-button type="primary" @click="screen">全屏</a-button> </div> </template> <script> export default {

  • vue实现全屏滚动效果(非fullpage.js)

    本文实例为大家分享了vue实现全屏滚动效果(的具体代码,供大家参考,具体内容如下 是什么 网页的一个页面占据一屏的宽高,多个页面上下或者左右拼接在一起.当滑动鼠标滚轮,或点击导航按钮时,可以平滑到对应的页面. 此次只实现鼠标滚动 实现原理 使用mousewheel , DOMMouseScroll(火狐用)监听鼠标滚动事件,当鼠标上下的滚动的时候,当前的页面transformY(屏高)或者transformX(屏宽) 代码实现 HTML <template> <div class=&qu

  • jQuery插件fullPage.js实现全屏滚动效果

    本文实例为大家分享了全屏滚动插件fullPage.js的具体使用方法,供大家参考,具体内容如下 0.01 基本演示  的HTML 布局 以及js 代码 //需要连接 连接的三个文件 <link rel="stylesheet" href="css/jquery.fullPage.css"> //css文件 <script src="js/jquery-1.8.3.min.js"></script> //jQue

  • 基于jquery实现全屏滚动效果

    那么今天就来介绍这款fullPage,与fullPage.js是不同的,fullpage兼容性更佳,能向下兼容到IE6, 不依赖任何 js 库,可独立使用.功能上虽然不如 fullPage.js 强大,但一般使用已经足够了,尤其是它的动画效果,你可以自由设定缩放.旋转以产生各种各样的动画效果.同时它还支持 fullPage.js 所没有的水平滚动. 兼容桌面端(ie5.5+) 和 手机端 你可以用它来构建你的个人主页或者网页应用 这是一个不使用jQuery小巧的框架 不到9KB 再介绍之前先看一

  • 微信小程序功能之全屏滚动效果的实现代码

    想做一个全屏滚动的效果,于是在网上找了一个差不多的例子,但是觉得有些地方不是很好,于是改进了一下: 先给大家展示下效果图,感觉不错,请参考实例代码. 代码: wxml: <!-- 第一页 -- > <view id='hook1' class="section section01 {{scrollindex==0?'active':''}}" style='background:red' bindtouchstart="scrollTouchStart&qu

  • fullPage.js和CSS3实现全屏滚动效果

    首先说一下fullpage,它是一个jquery的插件,用来实现鼠标向上向下滑动,就会自动切换到上一屏或者下一屏,对于要做一些高大上的效果确实是一个很好的插件.首先先展示一下基本的效果图. 总共有四屏的内容 当鼠标每次上下滑动时就会一整屏的切换. 第一屏是用一个图片,其他的三屏都是由左侧的三个图片和右侧的两个图片组成的. 这三屏左侧的图片展开方式不同,所以就更有炫酷的效果. 第二屏的三个图片是当页面显示时从下到上依次出来到正确的位置. 第三屏的三个图片是当页面显示时从左到右依次展开到正确的位置.

  • jquery实现全屏滚动效果

    本文实例为大家分享了jquery实现全屏滚动的具体代码,供大家参考,具体内容如下 效果图 思路 1.要全屏,给父级.body.html.高度设置为100%,自己的宽度也100%,还要给html.body设置溢出隐藏 html,body{ height:100%; /* 实现全屏 */ overflow: hidden; } .wrap{ position: relative; top: 0; left: 0; /* 实现全屏 */ height: 100%; } div.wrap>div{ wi

  • 用ES6写全屏滚动插件的示例代码

    这篇文章将介绍如何使用原生 JS (主要使用 ES6 语法)实现全屏滚动插件,兼容 IE 10+.手机触屏,Mac 触摸板优化,支持自定义页面动画,压缩后 gzip 文件只有 2k.完整源码在这 pure_full_page,点这查看demo. 1)前面的话 现在已经有很多全屏滚动插件了,比如著名的 fullPage ,那为什么还要自己造轮子呢? 现有轮子有以下问题: 首先,最大的问题是最流行的几个插件都依赖 jQuery,这意味着在使用 React 或者 Vue 的项目中使用他们是一件十分蛋疼

  • jquery实现全屏滚动

    在很多情况下,我们需要页面的全屏滚动,尤其是移动端.今天简要的介绍一下全屏滚动的知识. 一.全屏滚动的原理 1.js动态获取屏幕的高度. 获取屏幕的高度,设置每一屏幕的高度. 2.监听mousewheel事件. 监听mousewheel事件,并判断滚轮的方向,向上或向下滚动一屏. 二.jQuery插件fullpages介绍 fullPage.js 是一个基于 jQuery 的插件,它能够很方便.很轻松的制作出全屏网站,主要功能有: 支持鼠标滚动 支持前进后退和键盘控制 多个回调函数 支持手机.平

  • fullpage.js全屏滚动插件使用实例

    刚做好公司网站,通过全屏滚动,显著提高了官网的浏览体验.遂总结一下使用fullpage.js的方法.欢迎指正 一. fullpage.js简介 fullpage.js是一套实现浏览器全屏滚动的js插件,很多网站现在都使用了其来实现较好的浏览体验.  可以实现的功能: •支持前进后退和键盘控制  •多个回调函数  •支持手机.平板触摸事件  •支持 CSS3 动画  •支持窗口缩放  •窗口缩放时自动调整  •可设置滚动宽度.背景颜色.滚动速度.循环选项.回调.文本对齐方式等等 二.插件下载 np

  • 原生js实现类似fullpage的单页/全屏滚动

    前言 单页/全屏滚动页面越来越常见了,它多用于产品介绍.招聘等内容较少的简单页面.针对这种效果也出现了不少 jQuery 插件,本文实现的效果类似于fullpage的单屏滚动,使用原生JS实现,不依赖任何js库: css代码: html,body {height:100%;} body {margin:0px;} div {height:100%;} html代码: <div style="background:#FEE;"></div> <div sty

随机推荐