你真的会CSS?来看看这几个效果怎么做!

news2024/11/26 9:37:43

最近阿锋在超市排队买菜(辣条)
一个大叔一边给孩子买吃的一边说:
这些都是增加记忆力的,对孩子好!
蓝莓,深海鱼,全麦面包,坚果儿,十六个核桃······

不禁感叹现在的孩子们还真是幸福啊!
我记得我小时候要记住一件事情
只需:我爸的一巴掌!
高端的记忆方法,往往只需要最朴素的操作手段
果然啊~~大道至简

那在整个计算机行业里
什么语言最简单?CSS!
如果它能算作语言的话(手动狗头保命)
最神奇的语言是什么?CSS!
最玄学,最神奇的也莫过于CSS!

学习两个半月前端信心满满在简历上写着:精通CSS
学习两年半前端轻车熟路的写上:熟练CSS
学习五年前端小心翼翼写上:了解CSS

你不信,你来看这几个动效怎么做?

 

 我们来浅读一下大神们的实现代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <style>
    html {
      overflow-x: hidden;
    }
    html,
    body {
      padding: 0;
      margin: 0;
    }
    .totalcontainer {
      width: 100vw;
      height: 100vh;
      overflow: hidden;
    }
    .container1 {
      transform: scaleX(1.11);
    }
    .container2 {
      transform: scaleX(1.25);
    }
    .layer-1 {
      height: 100vh;
      width: 100%;
      background-color: #fed8c1;
    }

    .layer-2 {
      background: url("https://res.cloudinary.com/dkgrf00g1/image/upload/v1536453880/codepen/lay2.svg")
        no-repeat center center fixed;
      animation: slide-in-top 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
    }
    .layer-3 {
      background: url("https://res.cloudinary.com/dkgrf00g1/image/upload/v1536453880/codepen/lay3.svg")
        no-repeat center center fixed;
      animation: slide-in-bottom 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.2s both;
    }
    .layer-4 {
      background: url("https://res.cloudinary.com/dkgrf00g1/image/upload/v1536453880/codepen/lay4.svg")
        no-repeat center center fixed;
      animation: slide-in-bottom 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.4s both;
    }
    .layer-5 {
      background: url("https://res.cloudinary.com/dkgrf00g1/image/upload/v1536453880/codepen/lay5.svg")
        no-repeat center center fixed;
      animation: slide-in-bottom 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.55s
        both;
    }
    .layer-6 {
      background: url("https://res.cloudinary.com/dkgrf00g1/image/upload/v1536453881/codepen/lay6.svg")
        no-repeat center center fixed;
      animation: slide-in-bottom 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.75s
        both;
    }
    .layer-7 {
      background: url("https://res.cloudinary.com/dkgrf00g1/image/upload/v1536453881/codepen/lay7.svg")
        no-repeat center center fixed;
      animation: slide-in-bottom 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.85s
        both;
    }
    .layer-8 {
      background: url("https://res.cloudinary.com/dkgrf00g1/image/upload/v1536453882/codepen/lay8.svg")
        no-repeat center center fixed;
      animation: slide-in-bottom 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.9s both;
    }
    .laya-please {
      position: absolute;
      -webkit-background-size: cover;
      -moz-background-size: cover;
      -o-background-size: cover;
      background-size: cover;
      height: 100vh;
      width: 100%;
      top: 0;
      left: 0px;
    }

    @-webkit-keyframes slide-in-bottom {
      0% {
        -webkit-transform: translateY(1000px);
        transform: translateY(1000px);
        opacity: 0;
      }

      100% {
        -webkit-transform: translateY(0);
        transform: translateY(0);
        opacity: 1;
      }
    }

    @keyframes slide-in-bottom {
      0% {
        -webkit-transform: translateY(1000px);
        transform: translateY(1000px);
        opacity: 0;
      }

      100% {
        -webkit-transform: translateY(0);
        transform: translateY(0);
        opacity: 1;
      }
    }

    @keyframes slide-in-top {
      0% {
        -webkit-transform: translateY(-1000px);
        transform: translateY(-1000px);
        opacity: 0;
      }

      100% {
        -webkit-transform: translateY(0);
        transform: translateY(0);
        opacity: 1;
      }
    }
</style>
  <body>
    <div class="totalcontainer">
    <div class="laya-please layer-1">
        </div>
        <div class="laya-please layer-2">
        </div>
        <div class="container1">
            <div class="laya-please layer-3">
            </div>
            <div class="laya-please layer-4">
            </div>
            <div class="laya-please layer-5">
            </div>
            <div class="laya-please layer-6">
            </div>
        </div>
        <div class="container2">
            <div class="laya-please layer-7">
            </div>
            <div class="laya-please layer-8">
            </div>
        </div>
    </div>
    <script>
      const elems = document.querySelectorAll('.laya-please');
      const layer2 = document.querySelector('.layer-2');
      const layer3 = document.querySelector('.layer-3');
      const layer4 = document.querySelector('.layer-4');
      const layer5 = document.querySelector('.layer-5');
      const layer6 = document.querySelector('.layer-6');
      const layer7 = document.querySelector('.layer-7');
      const layer8 = document.querySelector('.layer-8');


      setTimeout(function () {
          elems.forEach(function (elem, index) {
              elem.style.animation = "none";
          });
      }, 1500);



      document.body.addEventListener('mousemove', function (e) {
          if (!e.currentTarget.dataset.triggered) {
              elems.forEach(function (elem, index) {
                  if (elem.getAttribute('style')) {
                      elem.style.transition = "all .5s";
                      elem.style.transform = "none";
                  }
              });
          }
          e.currentTarget.dataset.triggered = true;

          let width = window.innerWidth / 2;
          let mouseMoved2 = ((width - e.pageX) / 50);
          let mouseMoved3 = ((width - e.pageX) / 40);
          let mouseMoved4 = ((width - e.pageX) / 30);
          let mouseMoved5 = ((width - e.pageX) / 20);
          let mouseMoved6 = ((width - e.pageX) / 10);
          let mouseMoved7 = ((width - e.pageX) / 5);

          layer3.style.transform = "translateX(" + mouseMoved2 + "px)";
          layer4.style.transform = "translateX(" + mouseMoved3 + "px)";
          layer5.style.transform = "translateX(" + mouseMoved4 + "px)";
          layer6.style.transform = "translateX(" + mouseMoved5 + "px)";
          layer7.style.transform = "translateX(" + mouseMoved6 + "px)";
          layer8.style.transform = "translateX(" + mouseMoved7 + "px)";
      });

      document.body.addEventListener('mouseleave', function (e) {
          elems.forEach(function (elem, index) {
              elem.style.transition = "all .5s";
              elem.style.transform = "none";
          });
      });

      document.body.addEventListener('mouseenter', function (e) {
          elems.forEach(function (elem, index) {
              setTimeout(function () {
                  elem.style.transition = "none";
              }, 500);
          });
      });
</script>
  </body>
</html>

最后一个动效的源码奉上啦!
(篇幅关系,就不把所有的源码都放上啦!有需要的来找阿锋要哦!)

看完这些动效是不是有些感触?
感触一:卷这些东西意义何在?
感触二:这些动效能够带来一个客户吗?
感触三:我花一周做出来了,其他的需求怎么办?
充满了没用的苹果味儿

但是能写出这些效果来的人对于CSS的掌握程度是毋庸置疑的!
而对于一件事物的了如指掌
总是能让你尝试不同的新方法新姿势!
总是能给人带来不一样的快乐!

想要其他动效源码的!可以直接私信我!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/740301.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6个美化代码片段转换截图图片在线工具推荐

有些截图的代码片段不是太美观&#xff0c;我们可以用统一的代码片段美化截图工具&#xff1a; 文章目录&#xff1a; 1、Codeimg 2.、Carbon 3、Ray.so 4、CodeKeep 5、Chalk.ist 6、Codepng Codeimg 支持设置设备系统&#xff0c;比如可选 MacOs、Windows系统样式。以及设置…

QT error: C2039: “jifen_lineEdit”: 不是“Ui::UIMainFrame”的成员

问题&#xff1a;新增控件不在ui_.h文件中 前提&#xff1a; 在ui界面新增了一个edit控件&#xff0c;在对应cpp中使用ui->jifen_lineEdit时就报错 error: C2039: “jifen_lineEdit”: 不是“Ui::UIMainFrame”的成员 或者error: no member named jifen_lineEdit in Ui::U…

java项目之二手手机回收平台系统(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的二手手机回收平台系统。技术交流和部署相关看文章末尾&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框…

论文怎么导入endnotes

我不怎么用pdf直接导入&#xff0c;感觉基本信息还要重新填比较麻烦&#xff0c;期刊基本都支持直接导入了&#xff0c; 1、知网&#xff1a; 随机选择一篇论文&#xff1a; 说实话搜索之前我以为没有结果的&#xff08;x 注意先点击前面的选中&#xff0c;然后点击导出分…

【七天入门数据库】第三天 MySQL的库表操作

系列文章传送门&#xff1a; 【七天入门数据库】第一天 MySQL的安装部署 【七天入门数据库】第二天 数据库理论基础 【七天入门数据库】第三天 MySQL的库表操作 文章目录 一、SQL语句书写规范 二、数据库的操作 三、表的基本操作 四、表的约束 五、存储引擎 六、MySQ…

密码学入门——消息认证码

文章目录 参考书目一、简介二、消息认证码的使用步骤三、消息认证码的应用实例四、消息认证码的实现方法五、认证加密六、HMAC 参考书目 图解密码技术&#xff0c;第三版 一、简介 使用消息认证码可以确认自己收到的消息是否就是发送者的本意&#xff0c;也就是说&#xff0…

python实现压缩与解压(zlib)

本文将使用python的zlib与base64进行压缩与解压 其中base64模块用于对字节流与字符串的转换&#xff0c;zlib用于数据的压缩与解压 同时在后面附上在JS中遇到需要压缩解压的案例 解压代码&#xff1a; import base64 import zlibinput_string eJwlzT1OAzEQBeC7pJjSf1rHu0h…

yum方式安装mysql 8.0.33失败,缺少依赖包

配置网络源 [rootlocalhost yum.repos.d]# ping www.163.com PING z163picipv6.v.bsgslb.cn (61.184.215.68) 56(84) bytes of data. 64 bytes from 61.184.215.68 (61.184.215.68): icmp_seq1 ttl128 time13.2 ms 64 bytes from 61.184.215.68 (61.184.215.68): icmp_seq2 tt…

造船码头行车限位器与驾驶室控制柜无线通讯

随着我国海洋交通的快速发展&#xff0c;船舶信息化管理的建设&#xff0c;无线通信资源的配置&#xff0c;将先进的无线通信技术引入水上交通安全的监管业务中已是大势所趋。码头安装(设备和系统的安装) 船舶下水后常停靠于厂内舾装码头, 以安装船体设备, 机电设备&#xff0c…

第6集丨JavaScript 使用原型(prototype)实现继承——最佳实战3

目录 一、原型继承与属性拷贝1.1 功能说明1.2 功能测试 二、多重继承2.1 功能实现2.2 功能测试 三、寄生式继承四、构造器借用4.1 简单实现4.2 进化版4.2.1 功能实现4.2.2 案例测试 五、借用构造器和原型复制六 综合案例6.1 需求说明6.2 代码实现 一、原型继承与属性拷贝 1.1 功…

免费的音频转文字软件这么多,音频转文字软件推荐有哪些?

在一次音频转文字工作者的聚会上&#xff0c;艾米和迈克正在探讨如何提高他们的工作效率。他们都深知手动转录音频文件的困难和耗时&#xff0c;因此开始讨论是否有一种音频转文字软件可以推荐。 迈克&#xff1a;嘿&#xff0c;艾米&#xff01;我们都知道&#xff0c;音频转…

Scratch 星际飞船

Scratch 星际飞船 本程序主要增加了背景切换功能&#xff0c;飞船跟随鼠标移动&#xff0c;接触到右边的方块时切换到下一张背景&#xff0c;切换后飞船移动到左边&#xff0c;左边的椭圆则相反。随机生成另外两种飞船角色为背景&#xff0c;接触到边缘后移除。 图形化程序如下…

【算法与数据结构】150、LeetCode逆波兰表达式求值

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;我们常看见的表达式是中缀表达式&#xff08;关于中缀表达式的定义可以参考前缀、中缀、后缀表达式&am…

0经验也能轻松设计商标logo的方法

如今&#xff0c;越来越多的人开始创业&#xff0c;而拥有一个好看的商标就显得尤为重要。但是&#xff0c;很多人并不具备设计技能&#xff0c;对于商标设计也是一头雾水。不过&#xff0c;现在有了一键logo设计应用&#xff0c;即使零经验的人也能轻松设计出自己满意的商标。…

IoT开发者为王,涂鸦智能硬核“靠边站”

文 | 智能相对论 作者 | 沈浪 6月底&#xff0c;全球化IoT开发平台服务商涂鸦智能开了个TUYA开发者大会&#xff0c;面向行业传达了两个关键的信息点&#xff1a; 1. 当前IoT领域的行业竞争不再局限于技术、渠道的单一纬度&#xff0c;开始演化为整体的生态之争。 2. 紧随行…

STM32 Proteus仿真双机串口通讯同步电子时钟系统数码管显示 -0060

STM32 Proteus仿真双机串口通讯同步电子时钟系统数码管显示 -0060 Proteus仿真小实验&#xff1a; STM32 Proteus仿真双机串口通讯同步电子时钟系统数码管显示 -0060 功能&#xff1a; 硬件组成&#xff1a;本系统由2个设备组成 设备1&#xff1a;STM32F103R6单片机 8位数…

GaussDB OLTP云数据库配套工具DRS

目录 一、前言 二、DRS定义与使用场景 1、DRS定义 2、DRS场景示意图 三、DRS核心功能 1、实时迁移管理 2、实时同步管理 3、备份迁移管理 4、数据订阅管理 5、实时灾备管理 四、小结 一、前言 华为GaussDB云数据库提供了配套的生态工具数据复制服务DRS。 DRS围绕云…

IO流学习09(Java)

解压缩流/压缩流&#xff1a; 解压缩流&#xff1a; 解压本质&#xff1a;把每一个ZipEntry按照层级拷贝到本地另一个文件夹中 注&#xff1a;Java只认zip格式 在正式写之前&#xff0c;先准备好压缩文件和解压完需要存放文件的文件夹 下面直接给出案例&#xff1a; pack…

步进电机的MATLAB仿真程序分享(采用了卡尔曼滤波,对定子电流进行估计,并估算出转子的位置和速度)

两相步进电机的连续时间延长卡尔曼滤波器仿真&#xff0c; 根据定子电流的噪声测量&#xff0c;估计定子电流以及转子位置和速度。 主程序&#xff1a; function MotorKalman % 两相步进电机的连续时间延长卡尔曼滤波器仿真 % 根据定子电流的噪声测量&#xff0c;估计定子电…

为什么InnoDB存储引擎选择使用B+tree索引结构?

&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&…