CSS学习17--CSS3 过渡、2D变形、3D变形、动画

CSS3 过渡、2D变形、3D变形、动画

  • 一、过渡
  • 二、2D变形 transform
    • 1.移动 translate
    • 2.缩放 scale
    • 3. 旋转 rotate
    • 4. 倾斜 skew
  • 三、3D变形
    • 1. rotateX()rotateY() rotateZ()
    • 2. 体会透视 perspective
    • 3. translateX() translateY() translateZ()
    • 4. 开门大吉例子
    • 5. backface-visibility
  • 四、动画
    • 例子:无缝滚动

一、过渡

为元素从一种样式变为另一种样式时添加效果。

transition: 过渡属性 花费时间 运动曲线 何时开始;
前两个值不可省略,运动曲线默认ease,合适开始默认0s立即开始可以省略。

注意:transition需要写在div里而不是hover里;多个属性设置不同时,用逗号隔开;需要描述所有属性变化时,过渡属性值为all。

<html><head><style>div {width: 200px;height: 200px;background-color: pink;transition: width 0.2s ease 0s,height 0.3s ease-in 1s;/* transition: all 0.6s ease 0s; */}div:hover {width: 300px;height: 300px;}</style></head><body><div></div>
</html>

二、2D变形 transform

做元素的变形、位移、缩放,可以和transition结合使用。

1.移动 translate

用translate平移

transform: translate(x,y)

<html><head><style>div {width: 200px;height: 200px;background-color: pink;transition: all 0.5s;}div:active { /*鼠标点击没有松开鼠标,相当于点击*/transform: translate(100px,200px);transform: translate(50%,100%);}</style></head><body><div></div>
</html>

注意:

  • 只移动一个坐标可以把另一个坐标设为0;

  • 也可以写成:translateX(只跟一个参数);translateY(只跟一个参数)。

  • translate移动的距离如果是%,则以自己的宽度为准,而不是父亲为准。

    <html><head><style>div {width: 200px;height: 200px;background-color: pink;position: absolute; /*盒子居中对齐*/left: 50%; /*以父级宽度为准*/margin-left: -100px; /*需要计算*/top: 50%;transform: translate(-50%,-50%);}</style></head><body><div></div>
    </html>
    

2.缩放 scale

transform: scale(x,y)
x和y的值小于1为缩小倍数,大于1为放大倍数。

<html><head><style>div {width: 200px;height: 200px;background-color: pink;}div:hover {transform: scale(1.2,1.5);}</style></head><body><div></div>
</html>

注意:

  • 如果只写一个参数,宽高都缩放!

  • 谁做动画,谁加过渡!

    <html><head><style>div {width: 100px;height: 50px;background-color: pink;overflow: hidden;}div img {transition: all 0.3s;}div:hover img {transform: scale(1.2,1.5);}</style></head><body><div><img src="images/search.png" alt=""></div>
    </html>
    

3. 旋转 rotate

transform: rotate(*deg)
正值是顺时针,负值是逆时针;比如90deg是顺时针旋转90度

<html><head><style>div {width: 100px;height: 50px;background-color: pink;overflow: hidden;}div img {transition: all 0.3s;}div:hover img {transform: rotate(90deg);}</style></head><body><div><img src="images/search.png" alt=""></div>
</html>

旋转中心点的设置:

	<html><head><style>div img {padding: 200px;transition: all 0.3s;transform-origin: bottom top;}div:hover img {transform: rotate(90deg);}</style></head><body><div><img src="images/search.png" alt=""></div></html>

4. 倾斜 skew

transform: skew(x,y);

<html><head><style>div {font-size: 50px;font-weight: 700;transition: all 0.2s;}div:hover {transform: skew(20deg,0);}</style></head><body><div>123</div>
</html>

三、3D变形

3D多了z轴,遵循左手法则。
在这里插入图片描述
在这里插入图片描述

1. rotateX()rotateY() rotateZ()

<html><head><style>div img {transition: all 0.2s;}div:hover img {transform: rotateX(180deg);}</style></head><body><div><img src="images/course.png" alt=""></div>
</html>

2. 体会透视 perspective

  • 透视原理:近大远小。
  • 浏览器透视:把近大远小的所有图像,透视在屏幕上。
  • perspective:视距,表示视点距离屏幕的长短。视点,用于模拟透视效果时人眼的位置

注:并非任何情况下需要透视效果,根据开发需要进行设置。
perspective一般作为一个属性,设置给父元素,作用于所有3D转换的子元素

<html><head><style>div {perspective: 1000px;}div img {transition: all 0.2s;}div:hover img {transform: rotateX(180deg);}</style></head><body><div><img src="images/course.png" alt=""></div>
</html>

3. translateX() translateY() translateZ()

Z轴是物体到屏幕的距离,透视是一种展示形式。

<html><head><style>div {margin: 200px;perspective: 1000px;}div img {transition: all 0.2s;}div:hover img {transform: translateZ(100px);}</style></head><body><div><img src="images/course.png" alt=""></div>
</html>

transform: translate3d(x,y,z);
z轴只能是px单位

<html><head><style>div {margin: 200px;perspective: 1000px;}div img {transition: all 0.2s;}div:hover img {transform: translate3d(100px,100px,100px);}</style></head><body><div><img src="images/course.png" alt=""></div>
</html>

4. 开门大吉例子

<html><head><style>div {width: 200px;height: 180px;margin: 200px;background: url(images/course.png);perspective: 1000px;position: relative;}span {display: block;width: 100px;height: 180px;background-color: pink;border: 1px solid black;transition: all 0.2s;}span.door-l {position: absolute;top: 0;left: 0;transform-origin: left;}span.door-r {position: absolute;top: 0;right: 0;transform-origin: right;}div:hover .door-l   {transform: rotateY(-130deg);}div:hover .door-r  {transform: rotateY(130deg);}</style></head><body><div><span class="door-l"></span><span class="door-r"></span></div>
</html>

在这里插入图片描述

5. backface-visibility

用于设置图片不正向对着屏幕时是否可见。
可以用来写翻转图片,先translateY(180deg),当backface-visibility:hidden可以实现翻转时显示背面图片。

四、动画

animation: 动画名称 动画时间 运动曲线 何时开始 播放次数 是否反方向;

动画名称是自定义的

<html><head><style>div {width: 200px;height: 180px;margin: 200px;background: url(images/course.png);/*animation: name duration timing-function delay iteration-count direction fill-mode;*/animation: go 2s ease 0s 2 reverse;}@keyframes go { /*定义动画*/from{transform: translate(0);}to{transform: translate(600px);}}</style></head><body><div></div>
</html>

例子:无缝滚动

<html><head><style>* {margin: 0;padding: 0;}ul {list-style: none;}nav {width: 1200px;height: 20px;}nav li {float: left;}nav ul {width: 200%; /*两倍!!!*/animation: moving 2s linear infinite;}div {width: 200px;height: 20px;}@keyframes moving { /*定义动画*/from{transform: translate(0);}to{transform: translate(-1000px);}}nav:hover ul { /*鼠标经过nav,里面的ul不做动画*/animation-play-state: paused ;}</style></head><body><nav><ul><li><div style="background-color: red;"></div></li><li><div style="background-color: orange;"></div></li><li><div style="background-color: yellow;"></div></li><li><div style="background-color: green;"></div></li><li><div style="background-color: blue;"></div></li><li><div style="background-color: purple;"></div></li><li><div style="background-color: red;"></div></li><li><div style="background-color: orange;"></div></li><li><div style="background-color: yellow;"></div></li><li><div style="background-color: green;"></div></li><li><div style="background-color: blue;"></div></li><li><div style="background-color: purple;"></div></li></ul></nav>
</html>

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

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

相关文章

虚拟现实智能家居实训系统实训解决方案

随着科技的飞速发展&#xff0c;智能家居已成为现代生活的重要组成部分&#xff0c;它不仅极大地提升了居住的便捷性与舒适度&#xff0c;还推动了物联网、大数据、人工智能等前沿技术的融合应用。为了满足市场对智能家居专业人才日益增长的需求&#xff0c;虚拟现实智能家居实…

搭建 WordPress 及常见问题与解决办法

浪浪云活动链接 &#xff1a;https://langlangy.cn/?i8afa52 文章目录 环境准备安装 LAMP 堆栈 (Linux, Apache, MySQL, PHP)配置 MySQL 数据库 安装 WordPress配置 WordPress常见问题及解决办法数据库连接错误白屏问题插件或主题冲突内存限制错误 本文旨在介绍如何在服务器上…

Linux下vscode配置C++和python编译调试环境

Visual Studio Code (简称 VSCode) 是由微软开发的一款免费、开源、跨平台的代码编辑器。它支持 Windows、macOS 和 Linux 操作系统&#xff0c;并且内置对多种编程语言的支持&#xff0c;包括但不限于 C/C、Python、JavaScript、TypeScript、Java 和 Go 等。VSCode 主要用于编…

HarmonyOS ArkUI 构建布局

文章目录 一、构建布局1.线性布局 (Row/Column)1.1 Blank空白填充组件1.2 layoutWeight 自适应缩放1.3 自适应延伸 2.弹性布局 (Flex)3.栅格布局 (GridRow/GridCol)3.创建列表 (List) 一、构建布局 1.线性布局 (Row/Column) 线性布局文档 通过线性容器Row和Column构建 Column…

SpringBoot项目获取统一前缀配置以及获取非确定名称配置

SpringBoot项目获取统一前缀配置以及获取非确定名称配置 在SpringBoot项目中&#xff0c;我们经常看到统一前缀的配置&#xff0c;我们该怎么统一获取 my.config.a.namexiaoming my.config.a.age18 my.config.a.addressguangdong my.config.b.namexiaomli my.config.b.age20 my…

《深度学习》OpenCV 高阶 图像金字塔 用法解析及案例实现

目录 一、图像金字塔 1、什么是图像金字塔 2、图像金字塔作用 1&#xff09;金字塔尺度间的图像信息补充 2&#xff09;目标检测与识别 3&#xff09;图像融合与拼接 4&#xff09;图像增强与去噪 5&#xff09;图像压缩与编码 二、用法解析 1、向下采样 1&#xff09;概念…

使用SQL语句查询MySQL数据表

6.1 创建单表基本查询 1&#xff0e;Select 语句的语法格式及其功能 &#xff08;1&#xff09;Select 语句的一般格式。 Select < 字段名称或表达式列表 > From < 数据表名称或视图名称 > [ Where < 条件表达式 > ] [ Group By < 分组的字段名称…

xss-labs-master通关教程

一.level1 先来进行一下代码审计 <?php ini_set("display_errors", 0);//关闭错误显示 $str $_GET["name"]; //接受URL来的get形式的name传参 echo "<h2 aligncenter>欢迎用户".$str."</h2>";//在网页输出&#x…

STM32 之 SDRAM 详解

目录 前言 一、SDRAM 简介 二、SDRAM的组成原理 2.1存储单元阵列 2.1.1地址译码 2.1.2存储电容 2.2控制逻辑 2.2.1时钟同步 2.2.2命令解码 2.2.3模式寄存器 2.3数据输入 / 输出缓冲 2.3.1数据总线 2.3.2数据锁存 2.4刷新电路 2.4.1自动刷新 2.4.2自刷新 三、S…

SaaS化多租户实现的两种方法

SaaS化多租户实现的两种方法 SaaS系统的定义 SaaS&#xff0c;全称为Software-as-a-Service&#xff08;软件即服务&#xff09;&#xff0c;是一种基于云计算的软件交付模式。而SaaS系统&#xff0c;即是通过这种模式提供给用户的软件系统。即多租户系统&#xff0c;每个租户…

腾讯云升级多个云存储解决方案 以智能化存储助力企业增长

9月6日&#xff0c;在腾讯数字生态大会腾讯云储存专场上&#xff0c;腾讯云升级多个存储解决方案&#xff1a;Data Platform 数据平台解决方案重磅发布&#xff0c;数据加速器 GooseFS、数据处理平台数据万象、日志服务 CLS、高性能并行文件存储 CFS Turbo 等多产品全新升级&am…

TypeScript 扩展

扩展 ?:可选参数 可选链事实上并不是TypeScript独有的特性&#xff0c;它是ES11&#xff08;ES2020&#xff09;中增加的特性 可选链使用可选链操作符 ? 作用是当对象的属性不存在时&#xff0c;会短路&#xff0c;直接返回undefined&#xff0c;如果存在&#xff0c;那么…

SpringCloud集成ELK

1、添加依赖 <dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>6.1</version> </dependency>2、在logback-spring.xml中添加配置信息&#xff08;logback-sp…

Android SystemUI组件(06)导航栏创建分析虚拟按键

该系列文章总纲链接&#xff1a;专题分纲目录 Android SystemUI组件 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节持续迭代之前章节的思维导图&#xff0c;主要关注左侧SystemBars分析中导航栏部分即可。 1 导航栏创建之makeStatusBarView 通过上一篇文章的…

前端 + 接口请求实现 vue 动态路由

前端 接口请求实现 vue 动态路由 在 Vue 应用中&#xff0c;通过前端结合后端接口请求来实现动态路由是一种常见且有效的权限控制方案。这种方法允许前端根据用户的角色和权限&#xff0c;动态生成和加载路由&#xff0c;而不是在应用启动时就固定所有的路由配置。 实现原理…

el-tree父子不互相关联时,手动实现全选、反选、子级全选、清空功能

el-tree父子不互相关联时&#xff0c;手动实现全选、反选、子级全选、清空功能 1、功能实现图示 2、实现思路 当属性check-strictly为true时&#xff0c;父子节点不互相关联&#xff0c;如果需要全部选中或选择某一节点下的全部节点就必须手动选择每个节点&#xff0c;十分麻…

【mysql】逻辑运算符

逻辑运算符 逻辑运算符主要是为了判断表达式的真假,返回结果也是1,0,null OR 这里面或就是两个条件或的关系,比如我要department_id等于10和等于20的情况就可以使用或. SELECT last_name,salary,department_id FROM employees WHERE department_id10 OR department_id20 …

CTF——简单的《WEB》

文章目录 一、WEB1、easysql2、baby_web3、baby_sql4、upload_easy5、easygame拓展1.1拓展1.2 6、ht_ssti7、包容乃大 一、WEB 1、easysql 题目描述&#xff1a; sql注入漏洞 1.常用的sql注入测试语句 2.sql注入bypass 解题思路 这边提示基本给的也很完整的&#xff0c;不…

C++开发基础之理解 CUDA 编译配置:`compute_XX` 和 `sm_XX` 的作用

前言 在 CUDA 编程中&#xff0c;确保代码能够在不同的 NVIDIA GPU 上高效运行是非常重要的。为了实现这一点&#xff0c;CUDA 编译器 (nvcc) 提供了多种配置选项&#xff0c;其中 compute_XX 和 sm_XX 是两个关键的编译选项。本文将深入探讨这两个选项的作用及其配置顺序&…

大一新生以此篇开启你的算法之路

各位大一计算机萌新们&#xff0c;你们好&#xff0c;本篇博客会带领大家进行算法入门&#xff0c;给各位大一萌新答疑解惑。博客文章略长&#xff0c;可根据自己的需要观看&#xff0c;在博客中会有给大一萌新问题的解答&#xff0c;请不要错过。 入门简介&#xff1a; 算法…