首页 > 其他分享 >视觉差缓动效果的轮播--React版

视觉差缓动效果的轮播--React版

时间:2023-11-23 12:33:45浏览次数:44  
标签:差缓动 动画 轮播 -- transition slick 组件 import

React实现视觉差效果缓动轮播

效果如下(图片帧率低看起来有点卡顿,看个大概就行):

分享一下思路:
1.正常引入一个轮播组件(站在巨人肩膀省时省力),去除指示点、引导箭头等不需要的元素,有些组件支持配置,不支持就手动覆盖CSS样式了
2.找到组件中用于显示展示当前图片的类名
3.添加transform效果和transition属性

实操:
1.配置轮播组件,因为项目使用的ant design,所以这里直接使用Carousel组件
(Carousel组件也是封装自React Slickhttps://react-slick.neostack.com/,也可以直接使用这个)

import {Carousel} from 'antd';
import style from './index.less';
import loginBgOne from "@/assets/images/login_bg_one.jpg";//背景图
import loginBgTwo from "@/assets/images/login_bg_two.png";

const TestPage= () => {
  const carouselSetting = {
    effect: 'fade', //动画效果:渐显
    autoplay: true,
    autoplaySpeed: 5000, //自动播放速度(每张图的展示时间)
    dots: false,
    draggable:false,
    speed: 1500, //切换动画速度
  };

  return (
    <div className={style.pageBox}>
      <Carousel {...carouselSetting}>
        <div className={style.imgBox}>
          <img src={loginBgOne} />
        </div>
        <div className={style.imgBox}>
          <img src={loginBgTwo} />
        </div>
      </Carousel>
     {/*随便搞点字,效果更明显*/}
      <div className={style.systemName}>ZYJ's BOLG</div>
      <div className={style.desBox}>
        <p className={style.titleOne}>跨越山海·不舍自由与爱</p>
        <p className={style.titleTwo}>天行健 君子以自强不息</p>
      </div>
    </div>
  );
};
export default TestPage;

2.打开控制台,找到组件展示当前图片的类名,添加样式,carousel中是.slick-current

//添加缩放属性,并配置过渡。加500ms延迟看起来不那么生硬
:global {
  .ant-carousel .slick-list .slick-slide.slick-current img {
    transform: scale(1.15, 1.15);
    transition: 5.5s ease-in 500ms;
  }
}

至此,其实已经实现效果了。但是在图片切换的动画期间,放大的图片会由于丢失样式瞬间回到一倍大小,感官上有顿挫感。虽然可以加快切换动画的速度,但就显得不丝滑。(毕竟咱们是追求优雅的人,233)
解决办法还是transition属性,通过给不活跃的图片设置一个一倍缩放,再加一个延迟。在切换动画期间就看不到缩小了

.imgBox {
  width: 100%;
  img {
    width: 100%;
    height: 100vh;
    object-fit: cover;
    pointer-events: none;
    //关键
    transform: scale(1, 1);
    transition: 1s ease-in 1000ms;
  }
}

标签:差缓动,动画,轮播,--,transition,slick,组件,import
From: https://www.cnblogs.com/zyj-Blogs/p/17849020.html

相关文章

  • obproxy 源码编译以及一些问题整理-暂未编译成功
    尝试自己编译下oceanbase的obproxy并记录下一些问题,目前是暂未编译成功,因为是openssl版本包的问题环境说明基于了RockyLinuxrelease8.8,同时obproxy使用了4.2.1版本的构建参考命令这个官方已经提供了,主要就是initdebug,makeshbuild.shinitshbuild.sh......
  • Bean instantiation via constructor failed; nested exception is org.springframewo
    一、从公司的的GitLab下载项目到本地二、nacos-2.0.1启动不了我以为是我中文路径问题,然后放到全是英文的一样报错,百度一圈没找到解决方法。三、大佬路过,瞟了我一眼的电脑解决了。删除D:\nacos-2.0.0\data 下面的所有文件即可 原因就是有人把自己的数据上传到git了,导致......
  • Ubuntu 上安装 Grafana
    1.下载Grafana存储库签名密钥apt-getinstall-yapt-transport-httpsapt-getinstall-ysoftware-properties-commonwgetwget-q-O/usr/share/keyrings/grafana.keyhttps://apt.grafana.com/gpg.key2.稳定版本添加存储库echo"deb[signed-by=/usr/share/keyrings/gra......
  • 基于java+springboot的酒店预定网站、酒店客房管理系统
    该系统是基于Java的酒店客房预订系统设计与实现。是给师弟开发的毕业设计。现将源代码开放出来,感兴趣的同学可以下载。演示地址前台地址:http://hotel.gitapp.cn后台地址:http://hotel.gitapp.cn/admin后台管理帐号:用户名:admin123密码:admin123功能介绍平台采用B/S结构,后端采用主......
  • c++小程序/数组排序
    数组排序1、定义交换两个整型数的函数swap2、定义sort函数给数组排序,调用swap函数Code#include<iostream.h>template<classT>voidswap(T&x,T&y){Ttemp;temp=x;x=y;y=temp;}template<classp>voidsort(p*a,pb){for(inti=0;i<10;i++){......
  • Java商城网站系统设计与实现(带源码)
    基于Java的商城网站系统设计与实现功能介绍平台采用B/S结构,后端采用主流的Springboot框架进行开发,前端采用主流的Vue.js进行开发。整个平台包括前台和后台两个部分。前台功能包括:首页、商品详情页、订单、用户中心模块。后台功能包括:总览、订单管理、商品管理、分类管理、标签管理......
  • c++小程序/输入三个数,判断能不能组成三角形
    输入三个数,判断能不能组成三角形要求:1、输入-1,0,-1,提示“你输入的为负数”2、输入1,2,3,提示“你输入的三个数不能组成三角形”3、输入3,4,5提示“输入的三个数能组成三角形,并且是一个直角三角形”4、输入3,3,4提示“输入的三个数能组成三角形,并且是一个等腰三角形”1、 输入3,3,3提示“输......
  • 如何更改IP地址?固定IP地址要怎么去实现?
    IP地址是互联网协议中用于标识和定位计算机的数字地址。在互联网中,每个计算机都需要有一个唯一的IP地址才能进行通信。那么,怎么更改IP地址?固定IP地址如何实现?一、手动设置IP地址手动设置IP地址需要进入计算机的“网络和共享中心”,然后选择“本地连接”,再选择“属性”,最后在弹出的对......
  • 安装kubesphere时最好将Centos从7.2版本升级到7.6版本
    安装kubesphere3.0.0时,按提示要求Centos的要求如下,但Centos7的有些版本的内存不满足要求,经过多次测试发现linux内核版本需要大于3.8,且3.10也有问题,最好是3.11及以上版本,所以最好将Centos升级到7.6版本。 1、配置yum源mv/etc/yum.repos.d/centos7.repo/etc/yum.repos.d/cento......
  • 【Python&GIS】基于Python面矢量转换线矢量
    ​        今天有些不一样,发这篇文章并不是项目需要。单纯的想到有这个功能没使用Python实现,所以就去研究了一下,第一时间就和大家分享。如何使用Python的osgeo库实现面矢量数据与线矢量数据的互相转换。一、导入所需库importosfromosgeoimportogr二、面转线......