css元素转换(旋转函数、rotateX 和 rotateY 的使用、移动函数、缩放函数、过渡、动画)详解

news2024/12/24 8:21:10

文章目录

  • 旋转函数
  • rotateX 和 rotateY 的使用
  • 移动函数
  • 缩放函数
  • 过渡
  • transition-timing-function 属性
  • 动画


旋转函数

  • 在 CSS3 中,使用 rotate 函数能够让指定的元素对象绕原点旋转,主要在二维空间内进行操作。
    在这里插入图片描述
  • 其语法格式如下所示:
transform: rotate(角度); /*元素按照指定角度旋转*/
  • 这里的角度可以是正值也可以是负值。正负值意味着什么呢?🤔
  • 正负值意味着不同的旋转方向,规定参数为正时,顺时针旋转;参数为负时,逆时针旋转。
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      div {
        width: 50px;
        height: 50px;
        margin: 20px;
        display: inline-block;
        background-color: chartreuse;
      }
      /*向右旋转 60 度*/
      .c1 {
        background-color: #ffe6e6;
        transform: rotate(60deg);
      }
      /*向左旋转 60 度*/
      .c2 {
        background-color: #a7c5eb;
        transform: rotate(-60deg);
      }
    </style>
  </head>
  <body>
    <div class="c1"></div>
    <div></div>
    <div class="c2"></div>
  </body>
</html>

在这里插入图片描述

rotateX 和 rotateY 的使用

  • 除了使用 rotate 函数绕原点来旋转指定元素外,我们还可以围绕指定轴来旋转元素。
  • rotateX 函数可以让指定元素围绕横坐标(X 轴)旋转。其使用格式如下所示:
transform: rotateX(角度);
  • rotateY 函数可以让指定元素围绕纵坐标(Y 轴)旋转。其使用格式如下所示:
transform: rotateY(角度);
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .c1 {
        transform: rotateX(70deg);
      }
      .c2 {
        transform: rotateX(180deg);
      }
      .c3 {
        transform: rotateY(45deg);
      }
      .c4 {
        transform: rotateY(180deg);
      }
    </style>
  </head>
  <body>
    <div>
      <img
        src="https://labfile.oss.aliyuncs.com/courses/3773/icons8-animal-64.png"
      />
      <img
        src="https://labfile.oss.aliyuncs.com/courses/3773/icons8-animal-64.png"
        class="c1"
      />
      <img
        src="https://labfile.oss.aliyuncs.com/courses/3773/icons8-animal-64.png"
        class="c2"
      />
    </div>
    <div>
      <img
        src="https://labfile.oss.aliyuncs.com/courses/3773/icons8-animal-85.png"
      />
      <img
        src="https://labfile.oss.aliyuncs.com/courses/3773/icons8-animal-85.png"
        class="c3"
      />
      <img
        src="https://labfile.oss.aliyuncs.com/courses/3773/icons8-animal-85.png"
        class="c4"
      />
    </div>
  </body>
</html>

在这里插入图片描述

移动函数

  • translate() 函数能够重新定位元素坐标,该函数包含两个参数值,分别用来定位 X 轴和 Y 轴的新坐标。其语法格式为:
transform: translate(移动值); /*元素按照指定值沿着 X 轴和 Y 轴移动*/
transform: translateX(移动值); /*元素按照指定值沿着 X 轴移动*/
transform: translateY(移动值); /*元素按照指定值沿着 Y 轴移动*/
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      div {
        width: 50px;
        height: 50px;
      }
      /*沿 X 轴向右移动 20 个像素*/
      .c1 {
        background-color: #51adcf;
        transform: translateX(20px);
      }
      /*沿 Y 轴向下移动 30 个像素*/
      .c2 {
        background-color: #ffe5b9;
        transform: translateY(30px);
      }
    </style>
  </head>
  <body>
    <div class="c1"></div>
    <div class="c2"></div>
  </body>
</html>

在这里插入图片描述

页面上有两个 div 元素块,使用 transform: translateX(20px) 让第一个元素块向 X 轴移动 20 个像素;使用 transform: translateY(30px) 让第二个元素块向 Y 轴移动 30 个像素。

缩放函数

  • scale() 函数能够缩放元素大小,该函数包含两个参数,分别用来定义宽和高的缩放比例。其语法格式为:
transform: scale(缩放值); /*元素按照指定值沿着 X 轴和 Y 轴缩放*/
transform: scaleX(缩放值); /*元素按照指定值沿着 X 轴缩放*/
transform: scaleY(缩放值); /*元素按照指定值沿着 Y 轴缩放*/
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      div {
        width: 50px;
        height: 50px;
        margin: 30px;
      }
      .c1 {
        background-color: rgba(179, 153, 38, 0.651);
      }
      /*沿着 X 和 Y 轴进行缩放*/
      .c2 {
        background-color: #9088d4;
        transform: scale(2);
      }
      /*沿着 X 轴进行缩放*/
      .c3 {
        background-color: #ffe5b9;
        transform: scaleX(2);
      }
      /*沿着 Y 轴进行缩放*/
      .c4 {
        background-color: #1c8181;
        transform: scaleY(2);
      }
    </style>
  </head>
  <body>
    <div class="c1"></div>
    <div class="c2"></div>
    <div class="c3"></div>
    <div class="c4"></div>
  </body>
</html>

在这里插入图片描述

  • 在页面上有四个 div 元素块,第一个是宽和高均为 50 个像素的正方形元素块,我们另外三个元素块在此基础上进行缩放。
  • 第二个元素块使用 transform: scale(2) 让元素同时沿着 X 轴和 Y 轴扩大 2 倍。
  • 第三个元素块使用 transform: scaleX(2) 让元素沿着 X 轴扩大 2 倍。
  • 第四个元素块使用 transform: scaleY(2) 让元素沿着 Y 轴扩大 2 倍。

过渡

  • CSS3 过渡是元素从一种样式逐渐过渡到另一种样式。 其语法如下所示:
transition: 指定属性 持续时间 速度曲线 开始时间;
  • 它是一个复合属性,我们也可以如下分开使用这几个属性。
transition-property: 属性值; /*指定属性名*/
transition-duration: 属性值; /*完成过渡这一过程的时间*/
transition-timing-function: 属性值; /*速度曲线*/
transition-delay: 属性值; /*过渡的开始时间*/
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      div {
        margin-top: 40px;
        margin-left: 40px;
        width: 50px;
        height: 50px;
        background-color: #51adcf;
        /*ease-in-out 慢速开始慢速结束*/
        transition: transform 1s ease-in-out;
      }
      div:nth-child(2) {
        transform: rotate(-60deg);
      }
      div:hover {
        transform: scale(2);
      }
    </style>
  </head>
  <body>
    <div></div>
    <div></div>
  </body>
</html>

在这里插入图片描述
代码说明如下:

  • 在 div:hover 中,使用 transform: scale(2) 设置当鼠标放在 div 元素上时,元素会放大 1 倍。
  • 在 div:nth-child(2) 中,使用 div:nth-child(2) 设置第二个元素逆时针旋转 60deg。
  • 使用 transition 属性实现过渡的效果,其中 ease-in-out 是 transition-timing-function
    属性的属性值。

接下来给大家介绍一下 transition-timing-function 属性的取值吧!

transition-timing-function 属性

  • transition-timing-function 属性用来设置过渡效果从开始到结束的时间曲线,它有很多可用属性值,常用属性值如下表所示。
    在这里插入图片描述
  • transition-timing-function 属性有这么多的属性值,我们用 steps 来练习一下吧~ 🤪
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      div {
        width: 50px;
        height: 50px;
        margin: 50px;
        background-color: cornflowerblue;
        transition: transform 4s steps(4);
      }
      div:hover {
        transform: scale(2);
      }
    </style>
  </head>
  <body>
    <div></div>
  </body>
</html>

在上面代码中,用 steps 的方式将 div 元素分成四步,使元素的面积逐渐变成原来的 2 倍,当鼠标从元素上移开,又会以四步的形式将元素还原成原有的大小。

动画

  • @keyframes 被称为关键帧,它能够设置一些元素的样式,让该元素可以从原来的样式渐渐过渡到新的样式中。其语法格式如下所示:
@keyframes 动画名
{
    0% {样式属性:属性值;}
    25% {样式属性:属性值;}
    50% {样式属性:属性值;}
    100% {样式属性:属性值;}
}
  • 这里的百分比是用来规定动画发生变化的时间的,0% 代表动画的开始,100% 代表动画的结束,中间的可以自定义。
  • 将 @keyframes 创建的动画绑定到选择器上,通过 animation 属性就能实现动画效果了,其语法格式为:
animation: 动画名 完成动画的周期 是否重复;
  • animation 属性是一个复合属性,它的子属性如下所示。

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .circle {
        width: 60px;
        height: 60px;
        border-radius: 100%;
        background-color: #ffd8a6;
        animation-name: action;
        animation-duration: 9s;
        animation-iteration-count: 10;
      }
      @keyframes action {
        0% {
          margin-left: 400px;
        }
        25% {
          background-color: #dd7631;
        }
        50% {
          border-radius: 10%;
        }
        100% {
          margin: 100px;
        }
      }
    </style>
  </head>
  <body>
    <div class="circle"></div>
  </body>
</html>

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

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

相关文章

【C++常用算法】STL基础语法学习 | 查找算法

目录 ●find ●find_if ●adjacent_find ●binary_ search ●count ●count_if ●find 1.功能描述&#xff1a; 查找指定元素&#xff0c;如果找到则放回指定元素的迭代器&#xff0c;若未找到则返回结束迭代器。 2.查看find定义下底层代码的函数原型&#xff1a; 3.…

Day849.ThreadLocal线程本地存储模式 -Java 性能调优实战

ThreadLocal线程本地存储模式 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于ThreadLocal线程本地存储模式的内容。 民国年间某山东省主席参加某大学校庆演讲&#xff0c;在篮球场看到十来个人穿着裤衩抢一个球&#xff0c;观之实在不雅&#xff0c;于是怒斥学校的…

用于安全医疗保健系统的基于机器学习的可伸缩区块链架构

文章目录背景相关技术简介区块链扩张性电子病历数据安全安全医疗保健的架构基于可扩展区块链架构的机器学习概述基于可扩展区块链架构的机器学习工作流程小结摘要从3.0到4.0的工业革命已经改变了医疗保健环境。患者电子健康记录(EHR)与医学研究机构共享&#xff0c;用于临床研究…

12月榜单丨B站UP主排行榜(飞瓜数据B站)发布!

飞瓜轻数发布2022年12月飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的B站UP主。飞瓜…

Python:python简介

1&#xff1a;特点 一种解释型&#xff0c;面向对象&#xff0c;动态数据类型的开源高级程序设计语言 其特点就是&#xff1a;优雅&#xff0c;明确&#xff0c;简单&#xff0c;完善的基础代码库和大量的第三方库。 2&#xff1a;解释VS解释 3&#xff1a;应用场景 python…

基于androidstudio校园快递APP系统的设计与实现

1.课题背景及研究的目的和意义 1.1 课题背景 在其发展速度可谓一日千里的电子商务时代&#xff0c;大学生群体已成为网络购物群体中不可或缺的一部分。因此&#xff0c;高校师生对网购的需求也愈来愈强烈&#xff0c;校园快递的问题也成为了焦点&#xff0c;其中校园快递代理…

98%的数据被浪费,企业该如何释放数据价值?

在数字经济时代&#xff0c;对于广大企业来说&#xff0c;数据就是生产资料&#xff0c;算力则是生产力。飞速增长的业务数据&#xff0c;为现代企业提供了最具价值的资产。然而另一方面&#xff0c;如何存储、清理、管理、挖掘、运用数据&#xff0c;也给广大企业提出了艰巨的…

4天带你上手HarmonyOS ArkUI开发——《HarmonyOS ArkUI入门训练营之健康生活实战》

《HarmonyOS ArkUI入门训练营之健康饮食应用》是面向入门开发者打造的实战课程系列。特邀华为终端BG高级开发工程师作为本次训练营讲师&#xff0c;以健康饮食为例&#xff0c;开展技术教学及实战案例分享&#xff0c;助力入门开发者快速提升技能实力进阶。 目标学员 入门开发者…

apache httpClient关于cookie解析的报错处理

报错信息&#xff1a;o.a.h.c.p.ResponseProcessCookies - Invalid cookie header: "Set-Cookie: account"xxxxx"; expiresFri, 03 Feb 2023 06:02:40 GMT; httponly; Path/". Invalid expires attribute: Fri, 03 Feb 2023 06:02:40 GMThttpClient版本&am…

4年翻4倍年薪30W+的测试工程师个人成长之路

欢迎同行来交流&#xff0c;wx 群二维码应该过不了审核&#xff0c;私聊要把。税收图保证真实性。 一、何为测试 简单做一下科普。测试简而言之就是应用上线前&#xff0c;验证应用是否存在bug&#xff0c;是否满足产品的需求。大家津津乐道的程序员&#xff0c;也就是开发&am…

stm32 的 ESP8266 wifi 模块 (ESP - 12s) 的使用

1. ESP8266 的器件介绍 2. ESP2866外设 的引脚 3. 我所用的的ESP2866 的引脚图 4. 代码 编程的串口 5.wifi 的指令 1. AT 测试指令 2. ATRST 重启模块 3. ATGMR 查看版本信息 4. ATRESTORE 恢复出厂设置 5. ATUART115200,8,1,0,0 串口设置 串口号&#xff…

【SpringBoot应用篇】SpringBoot 业务代码中常用技巧

【SpringBoot应用篇】SpringBoot 业务代码中常用技巧自定义拦截器自定义过滤器过滤器和拦截器的区别获取Spring容器对象BeanFactoryAware接口ApplicationContextAware接口ApplicationListener接口全局异常处理类型转换器参数解析器Import导入配置普通类配置类ImportSelectorImp…

异地旁路组网:zerotier

有这么一个需求&#xff1a;需要远程访问内网的nas。然后现成的解决方案有蒲公英这个方案&#xff0c;但是个人版的话限了只能3个设备&#xff0c;因此找了半天&#xff0c;最后选择了功能类似的zerotier. 创建网络 zerotier的使用很简单&#xff0c;首先去官网http://zeroti…

vue 时间栏选择

效果图&#xff1a; 用el-carousel 的轮播组件 将样式修改 添加change事件 区分左右点击 获取当前年 和 当前月 <el-carouseltrigger"click"height"36px":autoplay"false"arrow"always"change"carouselChange"><e…

Leetcode.189 轮转数组

题目链接 Leetcode.189 轮转数组 题目描述 给你一个数组&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步:[7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5…

数据分析师最佳选择,帆软自研函数计算满足BI复杂场景需求

‍‍数据智能产业创新服务媒体——聚焦数智 改变商业伴随着数字经济的加快推进和企业数字化转型的不断深入&#xff0c;数据时代正在朝我们走来。越来越多的企业管理者已经意识到数据的重要性&#xff0c;数据分析和商业智能也成为管理决策的重要辅助工具&#xff0c;由此而生…

几个潜在的AI科研助手

最近看到一个新闻说ChatGPT被某科研文章列为作者之一。以自然语言处理和深度学习为基础的人工智能在语言修改润色和翻译方面表现优异&#xff0c;似乎还将改变一些传统的论文阅读和写作方式。本文记录几个最近了解到的几个工具。Scispace地址&#xff1a;https://typeset.io/搜…

详细解析各种TCP漏洞攻击方式及防御方法

TCP/IP攻击是利用IP地址并不是出厂的时候与MAC固定在一起的&#xff0c;攻击者通过自封包和修改网络节点的IP地址&#xff0c;冒充某个可信节点的IP地址&#xff0c;进行攻击。 由于TCP/IP协议是Internet的基础协议&#xff0c;所以对TCP/IP协议的完善和改进是非常必要的。TCP…

Redis 异地双活实战

本文主要讲述异地双活方案redis的热备、双写、双向同步的区别和优劣势。并且说明了双写同步方案中redis集群主从数据同步的过程&#xff0c;以及中间件方案遇到的部分问题点&#xff0c;说明最终方案的实现思路和方案。 redis的双活方案无非有以下三种&#xff1a;热备&#xf…

是否只能搞底层才能成为技术大神?

hi&#xff0c;大家好&#xff0c;我是大师兄alex&#xff0c;想必大家经常听到&#xff0c;想要长远发展&#xff0c;必须要往底层走&#xff0c;技术大神都是搞底层的&#xff0c;你会看到很多人一旦想变得硬核&#xff0c;都喜欢展现自己搞过一些底层技术&#xff0c;比如体…