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

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;
  }
}
相关推荐
guslegend4 天前
工程地基、Provider 与 ReAct 循环:Agent 核心能力的设计、实现与验收
人工智能·agent·react·架构设计·spring ai
EatFan4 天前
React 项目踩坑实录:useEffect 闭包陷阱、Context 性能陷阱与 React 18 升级避坑排查手册
前端·javascript·react.js·react·react hooks·useeffect·闭包陷阱
FungLeo9 天前
成为全栈·Next.js 网站前台篇·站点设置如何驱动页头、页脚与 SEO
react·isr·next.js·metadata·成为全栈·站点配置
大连好光景9 天前
ReAct的原理?与CoT的区别是啥?
react·cot
大连好光景9 天前
Agent完整工作过程
react·agent完整工作流程
FungLeo12 天前
成为全栈·Next.js 网站前台篇·同源 BFF 代理:API、附件、Cookie 与跨站写入保护
react·csrf·next.js·bff·成为全栈·route handler
Alice-YUE12 天前
React 渲染机制速通:Render 树、Fiber 树与更新调度
前端·react.js·前端框架·react·fiber·前端性能·渲染机制
传奇开心果编程12 天前
【现代声明式UI学与练】第1课 从命令式UI到声明式UI
学习·flutter·ui·swiftui·react·android jetpack
frjc12 天前
前端技术选型:主流方案对比与落地建议
vue·react·angular
FungLeo17 天前
成为全栈·Next.js 网站前台篇·数据获取与缓存:60 秒再验证背后到底发生了什么
react·isr·next.js·成为全栈·react cache·opennext