当前位置: 首页 > news >正文

鼠标纵向滑动的横向滚动页面

前沿

大家应该肯定见过某些官网的页面,我们的鼠标滚动时,页面却是左右滑动,真是神奇啊!这里博主想利用css3实现下这个效果。

使用技术栈

  • react-hook
  • scss
  • antd

直接上代码吧

这里我封装了一个x-scroll组件,代码不多
index.tsx

import React, { useEffect, useRef, useState, useCallback } from 'react';
import debounce from 'lodash/debounce';
import './index.scss';function XScroll(props: { children: any, fresh?: boolean }) {const { children, fresh = true } = props;const [size, setSize] = useState({width: 0,height: 0,})const ref = useRef<HTMLDivElement>(null);const  handleResize = useCallback(debounce(() => {if (!ref.current) return;setSize({width: ref.current.offsetWidth,height: ref.current.offsetHeight})}, 1000), [])useEffect(() => {// 监听窗口变化,然后防抖更新尺寸window.addEventListener('resize', () => {handleResize();})// 默认开始 第一次进来强制刷新if (fresh) {setTimeout(() => {handleResize();}, 300)}return () => {window.removeEventListener('resize', () => {handleResize();})}}, [])return (<div className='container' ref={ref}><div className='x-scroll' style={{width: size.height + 'px', height: size.width + 'px', transform: `rotate(-90deg) translateX(-${size.height}px)`}}><div className='content' style={{width: size.width + 'px', height: size.height + 'px', transform: `rotate(90deg) translateY(-${size.height}px)`}}>{children}</div></div></div>);
}export default XScroll;

index.scss

.container {width: 100vw;height: 100vh;position: relative;overflow: hidden;.x-scroll {transform-origin: left top;overflow: hidden auto;}.content {transform-origin: left top;position: absolute;}
}

使用

example.tsx

import React from "react";
import { Image } from "antd";
import XScroll from "../index";
import "./index.scss";function Example() {return (<XScroll><div className="example"><Imagewidth={500}src="https://gw.alipayobjects.com/zos/antfincdn/LlvErxo8H9/photo-1503185912284-5271ff81b9a8.webp"/><Imagewidth={500}src="https://gw.alipayobjects.com/zos/antfincdn/LlvErxo8H9/photo-1503185912284-5271ff81b9a8.webp"/><Imagewidth={500}src="https://gw.alipayobjects.com/zos/antfincdn/cV16ZqzMjW/photo-1473091540282-9b846e7965e3.webp"/><Imagewidth={500}src="https://gw.alipayobjects.com/zos/antfincdn/x43I27A55%26/photo-1438109491414-7198515b166b.webp"/><Imagewidth={500}src="https://gw.alipayobjects.com/zos/antfincdn/LlvErxo8H9/photo-1503185912284-5271ff81b9a8.webp"/><Imagewidth={500}src="https://gw.alipayobjects.com/zos/antfincdn/LlvErxo8H9/photo-1503185912284-5271ff81b9a8.webp"/></div></XScroll>);
}export default Example;

example.scss

.example {display: flex;align-items: center;.ant-image {flex-shrink: 0; // 不允许被缩小}
}

按照上面的代码执行之后,你就得到了一个神奇的效果,快去试试吧

如果有帮到包子们,就帮博主点个赞吧!!
还有什么想看的效果,欢迎评论,每天都有时间鼓捣新东西

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 计算机网络27——Linux1
  • 客户端时间和服务器时间的区别
  • 如何编写测试用例?
  • 浅谈网络安全的认识与学习规划
  • 【2024数模国赛赛题思路公开】国赛C题第二套思路丨附可运行代码丨无偿自提
  • 计算机毕业设计Python+Tensorflow股票推荐系统 股票预测系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI
  • 苹果qq文件过期了怎么恢复?简单4招,拯救你的过期文件
  • 华为人工智能重要服务总结
  • MongoDB-聚合查询操作介绍
  • c++编程(25)——unordered_map模拟实现
  • 安全可靠的国产自研数据库PolarDB V2.0,让数据库开发像“搭积木”一样简单
  • spark读取csv文件
  • [数据结构]红黑树之插入操作(RBTree)
  • 深圳又有5家企业高新企业资质被取消?
  • 3个恢复方法详解:iPhone手机快速找回备忘录
  • 345-反转字符串中的元音字母
  • ES6之路之模块详解
  • Javascript弹出层-初探
  • js 实现textarea输入字数提示
  • Solarized Scheme
  • Swoft 源码剖析 - 代码自动更新机制
  • Vue ES6 Jade Scss Webpack Gulp
  • 阿里云购买磁盘后挂载
  • 关于字符编码你应该知道的事情
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 前端性能优化--懒加载和预加载
  • 入口文件开始,分析Vue源码实现
  • 深入浏览器事件循环的本质
  • 使用parted解决大于2T的磁盘分区
  • 一个完整Java Web项目背后的密码
  • 一些css基础学习笔记
  • Semaphore
  • 数据可视化之下发图实践
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • #define,static,const,三种常量的区别
  • (02)Hive SQL编译成MapReduce任务的过程
  • (LeetCode) T14. Longest Common Prefix
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (备忘)Java Map 遍历
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)Linq学习笔记
  • (自用)交互协议设计——protobuf序列化
  • .NET 4.0中的泛型协变和反变
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET MAUI Sqlite程序应用-数据库配置(一)
  • .NET/C# 使用反射注册事件
  • .Net插件开发开源框架
  • .NET和.COM和.CN域名区别
  • //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用