css动画案例练习之会展开的魔方和交错的小块

news2025/1/16 7:50:57

这里写目录标题

  • 一级目录
    • 二级目录
      • 三级目录
  • 下面开始案例的练习,建议第一个动手操作好了再进行下一个
  • 一、交错的小块
    • 效果展示
    • 1.大致思路
      • 1.基本结构
      • 2.实现动态移动
    • 2.最终版代码
  • 二、会展开的魔方
    • 1.大致思路
      • 1.基本结构;
      • 2.静态魔方的构建
      • 3.让静态的魔方动起来
    • 2.最终版代码

一级目录

二级目录

三级目录

下面开始案例的练习,建议第一个动手操作好了再进行下一个

在这里插入图片描述

一、交错的小块

效果展示

交错的小块

1.大致思路

1.基本结构

构建父级正方形盒子后分别在左上角和右下角放两个占父级盒子25%的小盒子,用子绝父相的定位方式将子盒子固定在父盒子中

2.实现动态移动

因为两个盒子移动的方式不同,所以分别设置动画属性
注意 x轴正方向水平向右,y轴正方向为垂直向下,移动时要加单位,四条边移动四次,一次移动25%

盒子1:以左上角为原点,移到右上角坐标为(200,0),移到右下角坐标为(200,200),移到左下角坐标为(0,200),最后回到原点

@keyframes move1 {
    0%{
        transform: translate(0,0);
    }
    25%{
        transform: translate(200px,0);
    }
    50%{
        transform: translate(200px,200px);
    }
    75%{
        transform: translate(0,200px);
    }
    100%{
        transform: translate(0,0);
    }
}

盒子2
以右下角为原点,移到左下角坐标为(-200,0),移到左上角坐标为(-200,-200),移到右上角坐标为(0,-200),最后回到原点

@keyframes move2 {
    0%{
        transform: translate(0,0);
    }
    25%{
        transform: translate(-200px,0);
    }
    50%{
        transform: translate(-200px,-200px);
    }
    75%{
        transform: translate(0,-200px);
    }
    100%{
        transform: translate(0,0);
    }
}

2.最终版代码

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="style1.css">
</head>
<body>
        <div class="box">
            <div class="box_l"></div>
            <div class="box_r"></div>
        </div>
</body>
</html>

css

* {
    padding:0;
    margin:0;
}
.box {
    width: 400px;
    height: 400px;
    margin:100px auto;
    position: relative;
}
.box .box_l {
    position: absolute;
    top:0;
    left:0;
    background-color: pink;
    width: 200px;
    height: 200px;
    animation:move1 5s infinite;
}
.box .box_r {
    position: absolute;
    bottom:0;
    right:0;
    background-color: bisque;
    width: 200px;
    height: 200px;
    animation:move2 5s infinite;
}
@keyframes move1 {
    0%{
        transform: translate(0,0);
    }
    25%{
        transform: translate(200px,0);
    }
    50%{
        transform: translate(200px,200px);
    }
    75%{
        transform: translate(0,200px);
    }
    100%{
        transform: translate(0,0);
    }
}
@keyframes move2 {
    0%{
        transform: translate(0,0);
    }
    25%{
        transform: translate(-200px,0);
    }
    50%{
        transform: translate(-200px,-200px);
    }
    75%{
        transform: translate(0,-200px);
    }
    100%{
        transform: translate(0,0);
    }
}

二、会展开的魔方

1.大致思路

会展开的魔方

1.基本结构;

放一个大盒子container用于装魔方,记得最后加3d效果,大盒子中放六个盒子为魔方的六个面,加绝对定位将六个面固定在一起

2.静态魔方的构建

注意:
所有的面都是朝z轴方向移动面的一半距离(75px),即与人眼的距离拉近75px,并且当鼠标经过时距离拉近200px,特别注意当设置各个面时虽然普遍情况下我们应该先写移动的距离再旋转,但是对于魔方来说,先移动再旋转不会构成封闭的立方体
前面1:

.container div:nth-child(1) {
    transform: translateZ(75px);
}

.container:hover div:nth-child(1) {
    transform: translateZ(200px);
}

右面2:

.container div:nth-child(2) {
    transform: rotateY(90deg) translateZ(75px);
}

.container:hover div:nth-child(2) {
    transform: rotateY(90deg) translateZ(200px);
}

后面3:

.container div:nth-child(2) {
    transform: rotateY(180deg) translateZ(75px);
}

.container:hover div:nth-child(2) {
    transform: rotateY(180deg) translateZ(200px);
}

左面4;

.container div:nth-child(2) {
    transform: rotateY(270deg) translateZ(75px);
}

.container:hover div:nth-child(2) {
    transform: rotateY(270deg) translateZ(200px);
}

上面5:

.container div:nth-child(5) {
    transform: rotateX(90deg) translateZ(75px);
}

.container:hover div:nth-child(5) {
    transform: rotateX(90deg) translateZ(200px);
}

下面6:

.container div:nth-child(5) {
    transform: rotateX(-90deg) translateZ(75px);
}

.container:hover div:nth-child(5) {
    transform: rotateX(-90deg) translateZ(200px);
}

3.让静态的魔方动起来

由于魔方的六个面都在大盒子container里,所以只需让大盒子旋转即可实现效果,我们使用动画的属性让魔方动起来,从初始0度到360度让他转一圈,如果x,y轴都写的话就是沿着xOy平面的角平分线旋转

@keyframes rotate {
    0% {
        transform: rotateX(0) rotateY(0);
    }

    100% {
        transform: rotateX(360deg) rotateY(360deg);
    }
}

.container {
    width: 150px;
    height: 150px;
    transform-style: preserve-3d;
    position: relative;
    animation: rotate 5s infinite linear;
    margin: 250px 250px;
}

2.最终版代码

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="container">
        <div>a</div>
        <div>a</div>
        <div>a</div>
        <div>a</div>
        <div>a</div>
        <div>a</div>
    </div>
</body>
</html>

css

* {
    margin: 0;
    padding: 0;
}

body {
    width: 150px;
    height: 150px;
    perspective: 1000px;/*实现近大远小的效果*/
    background: #000;
}

@keyframes rotate {
    0% {
        transform: rotateX(0) rotateY(0);
    }

    100% {
        transform: rotateX(360deg) rotateY(360deg);
    }
}

.container {
    width: 150px;
    height: 150px;
    transform-style: preserve-3d;
    position: relative;
    animation: rotate 5s infinite linear;
    margin: 250px 250px;
}

.container:hover {
    transform: rotateY(180deg) rotateX(180deg);
}/*也可以不写这个hover,它的目的只是更美观*/

.container div {
    width: 100%;
    height: 150px;
    position: absolute;
    background-color: #ccc;
}

.container div:nth-child(1) {
    transform: translateZ(75px);
}

.container:hover div:nth-child(1) {
    transform: translateZ(200px);
}

.container div:nth-child(2) {
    transform: rotateY(90deg) translateZ(75px);
}

.container:hover div:nth-child(2) {
    transform: rotateY(90deg) translateZ(200px);
}

.container div:nth-child(3) {
    transform: rotateY(180deg) translateZ(75px);
}

.container:hover div:nth-child(3) {
    transform: rotateY(180deg) translateZ(200px);
}

.container div:nth-child(4) {
    transform: rotateY(270deg) translateZ(75px);
}

.container:hover div:nth-child(4) {
    transform: rotateY(270deg) translateZ(200px);
}

.container div:nth-child(5) {
    transform: rotateX(90deg) translateZ(75px);
}

.container:hover div:nth-child(5) {
    transform: rotateX(90deg) translateZ(200px);
}

.container div:nth-child(6) {
    transform: rotateX(-90deg) translateZ(75px);
}

.container:hover div:nth-child(6) {
    transform: rotateX(-90deg) translateZ(200px);
}

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

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

相关文章

使用python绘制华夫饼图

使用python绘制华夫饼图 华夫饼图效果代码 华夫饼图 华夫饼图&#xff08;Waffle Chart&#xff09;是一种数据可视化图表&#xff0c;用于显示数据在一个网格中的分布情况。它类似于饼图&#xff0c;通过将数据划分为等大小的方块来表示不同类别的比例。华夫饼图的优势在于它…

图解Mysql索引原理

概述 是什么 索引像是一本书的目录列表&#xff0c;能根据目录快速的找到具体的书本内容&#xff0c;也就是加快了数据库的查询速度索引本质是一个数据结构索引是在存储引擎层&#xff0c;而不是服务器层实现的&#xff0c;所以&#xff0c;并没有统一的索引标准&#xff0c;…

bootstrap5-学习笔记2-模态框+弹窗+tooltip+popover+信息提示框

参考&#xff1a; Bootstrap5 教程 | 菜鸟教程 https://www.runoob.com/bootstrap5/bootstrap5-tutorial.html Bootstrap 入门 Bootstrap v5 中文文档 v5.3 | Bootstrap 中文网 https://v5.bootcss.com/docs/getting-started/introduction/ 之前用bootstrap2和3比较多&#x…

音频信号分析与实践

音频信号分析与实践课程,方便理解音频信号原理和过程 1.音频信号采集与播放 两种采样模式和标准的采样流程 人说话的声音一般在2kHz一下&#xff1a; 采样频率的影响&#xff1a;采样率要大于等于信号特征频率的2倍&#xff1b;一般保证信号完整&#xff0c;需要使用10倍以上的…

Git权限管理

Git权限管理 简介&#xff1a;大家好&#xff0c;我是程序员枫哥&#xff0c;&#x1f31f;一线互联网的IT民工、&#x1f4dd;资深面试官、&#x1f339;Java跳槽网创始人。拥有多年一线研发经验&#xff0c;曾就职过科大讯飞、美团网、平安等公司。在上海有自己小伙伴组建的副…

纯血鸿蒙APP开发实战:如何添加TabBar

1.tabbar组件 tabbar组件是移动端开发经常使用的一个组件&#xff0c;底部固定工具栏&#xff0c;顶部tab工具栏等。 2.示例 EntryComponentstruct MainPage {State private selectedIndex: number 0;private controller: TabsController new TabsController()build() {Col…

PHP序列化、反序列化

目录 一、PHP序列化&#xff1a;serialize() 1.对象序列化 2.pop链序列化 3.数组序列化 二、反序列化&#xff1a;unserialize() 三、魔术方法 ​四、NSSCTF相关简单题目 1.[SWPUCTF 2021 新生赛]ez_unserialize 2.[SWPUCTF 2021 新生赛]no_wakeup 学习参考&#xff1…

Python学习从0开始——Kaggle机器学习004总结2

Python学习从0开始——Kaggle机器学习004总结2 一、缺失值二、分类变量2.1介绍2.2实现1.获取训练数据中所有分类变量的列表。2.比较每种方法方法1(删除分类变量)方法2(序数编码)方法3独热编码 三、管道3.1介绍3.2实现步骤1:定义预处理步骤步骤2:定义模型步骤3:创建和评估管道 四…

数据仓库核心:维度表设计的艺术与实践

文章目录 1. 引言1.1基本概念1.2 维度表定义 2. 设计方法2.1 选择或新建维度2.2 确定维度主维表2.3 确定相关维表2.14 确定维度属性 3. 维度的层次结构3.1 举个例子3.2 什么是数据钻取&#xff1f;3.3 常见的维度层次结构 4. 高级维度策略4.1 维度整合维度整合&#xff1a;构建…

HCIP的学习(28)

第九章&#xff0c;链路聚合和VRRP 链路聚合 ​ 目的&#xff1a;备份链路以及提高链路带宽。 ​ 链路聚合技术&#xff08;Eth-Trunk&#xff09;&#xff1a;将多个物理接口捆绑成一个逻辑接口&#xff0c;将N条物理链路逻辑上聚合为一条逻辑链路。 正常情况下&#xff0c;…

Android开机动画的结束过程BootAnimation(基于Android10.0.0-r41)

文章目录 Android 开机动画的结束过程BootAnimation(基于Android10.0.0-r41) Android 开机动画的结束过程BootAnimation(基于Android10.0.0-r41) 路径frameworks/base/cmds/bootanimation/bootanimation_main.cpp init进程把我们的BootAnimation的二进制文件拉起来了&#xf…

STM32作业实现(五)温湿度传感器dht11

目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按…

6. MySQL 查询、去重、别名

文章目录 【 1. 数据表查询 SELECT 】1.1 查询表中所有字段使用 * 查询表的所有字段列出表的所有字段 1.2 查询表中指定的字段 【 2. 去重 DISTINCT 】【 3. 设置别名 AS 】3.1 为表指定别名3.2 为字段指定别名 【 5. 限制查询结果的条数 LIMIT 】5.1 指定初始位置5.2 不指定初…

利用短视频平台,轻松引流获客:自动私信评论策略全解析

在数字化时代&#xff0c;短视频已成为互联网流量的新蓝海&#xff0c;其独特的视觉吸引力和高度的用户粘性为各行各业提供了前所未有的营销机遇。无论是初创企业还是成熟品牌&#xff0c;都能通过短视频平台有效触达目标客户&#xff0c;实现高效引流与获客。本文将深入探讨如…

Three.js加入到可视化大屏,看看能否惊艳到你?

three.js 在可视化大屏上可以实现各种三维场景和动画效果&#xff0c;可以根据具体需求进行定制化开发&#xff0c;并结合其他技术&#xff0c;如数据可视化、交互设计等&#xff0c;实现更加丰富的可视化效果。 three.js 是一个基于 WebGL 的 JavaScript 3D 库&#xff0c;可…

LLM的基础模型5:Embedding模型

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则提…

dirfuzz-web敏感目录文件扫描工具

dirfuzz介绍 dirfuzz是一款基于Python3的敏感目录文件扫描工具&#xff0c;借鉴了dirsearch的思路&#xff0c;扬长避短。在根据自身实战经验的基础上而编写的一款工具&#xff0c;经过断断续续几个月的测试、修改和完善。 项目地址&#xff1a;https://github.com/ssrc-c/di…

C++240605

设计一个 Per类&#xff0c;类中包含**私有**成员:姓名、年龄、**指针成员**身高、体重&#xff0c; 再设计一个Stu类&#xff0c;类中包含**私有**成员:成绩、 Per类对象p1&#xff0c; 设计这 两个类 的 **构造函数、析构函数**。 #include <iostream>using namespace…

这才是大模型价格战背后的真相

想必大家今天肯定被各家大模型厂商的降价新闻刷圈了&#xff0c;如果说 Meta Llama 3 的开源是国外大模型市场的搅局者&#xff0c;那 DeepSeek-V2 就是国内大模型市场的鲶鱼&#xff0c;但是价格战背后是大模型基础设施优化带来的物美价廉&#xff0c;还是浑水摸鱼的噱头&…

Macbook Pro 16G 用 cpu 跑开源多模态大模型LLavA

文章目录 1. 什么是LLaVA&#xff1f;2. LLaVA运行效果3. LLaVA 部署过程3.1 创建llava虚拟环境3.2 激活虚拟环境3.3 安装llama-cpp-python3.4 安装 llama-cpp-python服务器3.5 下载模型权重3.6 启动server服务3.7 在Pycharm中调用 参考资料 摘要 本文介绍如何在macbook pro (M…