b站首页banner景深移动特效 bilibili秋

本文介绍如何使用JavaScript和CSS3实现b站首页Banner的景深移动特效。通过拆解步骤,详细讲解了如何让图层跟随鼠标移动并改变清晰度,核心思路涉及二次函数的应用,以实现图层的焦点转移效果。
摘要由CSDN通过智能技术生成

看到b站的animation-banner效果太妙了,就自己也想仿写一个.去查了查资料鼓捣出来一个.

首先是成品展示
在这里插入图片描述
大家可能觉得这个效果看起来很复杂,其实拆开来看比较简单.
他的效果就是实现了一个镜头聚焦,那么我们分步骤进行讲解

step1

首先,让图层跟随鼠标进行移动,大家应该已经想到怎么办了,但是有个问题,每个图层跟随鼠标移动的距离不能相同,这里可以用循环进行移动距离的迭代.

step2

其次是让图层跟随鼠标的移动距离进行清晰度的变化,和上述的办法类似,也是构造一个函数来计算清晰度,可以看到,随着鼠标的移动,最后和靠前的图层清晰度都变低(后面称之为失焦点),而靠中间的图层清晰度变高(后面称之为聚焦点).我们可以知道,这个偏移距离和焦点的转移是有关系的

在这里插入图片描述
实际上这个函数有很好的选择,就是我们小学二年级就 学过的的二次函数,两端的数值大,中间的数值小,符合我们的要求.
然后我们利用图层的index把六个图层按顺序排列在x轴上,得到的y值就符合我们的要求了

这就是最核心的思路啦,那么我们就开始

首先获得六个图层
这里我就直接用b站的图了,因为咱菜鸡画不出来

放出来方便大家练习,侵删在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

<!-- 这就是我的html结构,很简单 -->
  <header>
    <div><img src="./img/bilibili-autumn-1.webp"></div>
    <div><img src="./img/bilibili-autumn-2.webp"></div>
    <div><img src="./img/bilibili-autumn-3.webp"></div>
    <div><img src="./img/bilibili-autumn-4.webp"></div>
    <div><img src="./img/bilibili-autumn-5.webp"></div>
    <div><img src="./img/bilibili-autumn-6.webp"></div>
  </header>
    body{
   
      margin: 0;//经典margin0
    }
    header{
   
      height: 155px;//给容器一个高度,防止高度坍塌
      position: relative;//开定位,六个图层需要以容器为坐标进行左右移动
      overflow: hidden;//因为图层需要移动,所以图层要略大于容器,容器要做溢出隐藏
    }
    header>div{
   
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      display: flex;//直接flex居中,太美了这东西
      justify-content: center;
      align-items: center;
      --offset: 0px;//这里定义css的变量方便后面js的处理
      --blur: 2px;
    }
    header>div>img{
   
      display: block;
      width: 110%;//放大点,移动的时候不会有空白溢出
      height: 100%;
      object-fit: cover;
      transform: translateX(var(--offset));//变量的使用
      filter: blur(var(--blur));
    }

接下来就是js代码,可能我写的比较繁琐,但是实现的效果我觉得和b站的很像

  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值