当前位置: 首页 > backend >正文

css3新特性第六章(2D变换)

css3新特性第五章(2D变换)

CSS3 转换可以对元素进行移动、缩放、转动、拉长或拉伸。

  • 2D位移
  • 2D缩放
  • 2D旋转
  • 2D扭曲
  • 多重变换
  • 变换原点

一、2D位移

2D 位移可以改变元素的位置,具体使用方式如下:

  1. 先给元素添加 转换属性 transform

  2. 编写 transform 的具体值,相关可选值如下:

    含义
    translateX设置水平方向位移,需指定长度值;若指定的是百分比,是参考自身宽度
    的百分比。
    translateY设置垂直方向位移,需指定长度值;若指定的是百分比,是参考自身高度
    的百分比。
    translate一个值代表水平方向,两个值代表:水平和垂直方向。

基本概念

图示:原点从左上角开始,为二维坐标系

在这里插入图片描述

translateX

设置水平方向偏移,值为:长度值/百分比 均可

translateX(100px)

在这里插入图片描述

代码

.outer {width: 200px;height: 200px;border: 2px solid black;margin: 0 auto;margin-top: 150px;}.inner {width: 200px;height: 200px;background-color: pink;/* 向 x 轴方向移动100个像素   x 轴为 top边   y周围 left边 */transform: translateX(100px);
}<body><div class="outer"><div class="inner">2D位移</div></div>
</body>

translateY

沿着 y轴,也就是上下方向移动

translateY(100px)

在这里插入图片描述

代码

.outer {width: 200px;height: 200px;border: 2px solid black;margin: 0 auto;margin-top: 150px;}.inner {width: 200px;height: 200px;background-color: pink;/* 向 y 轴方向移动100个像素 */transform: translateY(100px);
}<body><div class="outer"><div class="inner">2D位移</div></div>
</body>

translateX/translateY同写

两个参数共同写,代表的是同事向 x、y 偏移

translateX(100px) translateY(100px)

在这里插入图片描述

代码

/* 同时向 x y 轴移动 写法一 */

​ transform: translateX(100px) translateY(100px);

translate两个值

/* 同时向 x y 轴移动 写法二 */

​ transform: translate(100px,100px);

​ /* 还支持写负值 */

​ /* transform: translate(-100px,-100px); */

在这里插入图片描述

写百分比

参考的是自身的宽高,然后再乘以百分比

​ /* 支持写百分比 参考的是自生的宽高 */

​ transform: translate(50%,50%);

在这里插入图片描述

只写一个值

​ /* 如果只写一个值 代表的是 x轴 */

​ /* transform: translate(50%); */

在这里插入图片描述


二、缩放

2D 缩放是指:让元素放大或缩小,具体使用方式如下:

1. 先给元素添加 转换属性 transform
2. 编写 transform 的具体值,相关可选值如下:
含义
scaleX设置水平方向的缩放比例,值为一个数字, 1 表示不缩放,大于 1 放大,小
于 1 缩小。
scaleY设置垂直方向的缩放比例,值为一个数字, 1 表示不缩放,大于 1 放大,小
于 1 缩小。
scale同时设置水平方向、垂直方向的缩放比例,一个值代表同时设置水平和垂直缩
放;两个值分别代表:水平缩放、垂直缩放。
  1. 注意点:

    1. scale 的值,是支持写负数的,但几乎不用,因为容易让人产生误解。
    2. 借助缩放,可实现小于 12px 的文字。

scaleX

沿着 x 轴缩放(宽度变化) > 1 为放大 小于1位缩小

示列

在这里插入图片描述

代码

.outer {width: 200px;height: 200px;border: 2px solid black;margin: 0 auto;margin-top: 150px;font-size: 40px;text-align: center;line-height: 200px;
}.inner {width: 200px;height: 200px;background-color: pink;/*  scaleX 沿着 x 轴缩放(宽度变化)   > 1 为放大   小于1位缩小*/transform: scaleX(0.5);
}<div class="outer"><div class="inner">2D缩放</div></div>

scaleY

沿着 Y 轴缩放(高度变化) > 1 为放大 小于1位缩小

示列

在这里插入图片描述

代码

transform: scaleY(0.5);

宽高同时缩放

我们可以写两个值将 宽高同时进行缩放

写法1

/* 宽高同时缩放 写法1 */

​ transform: scaleX(0.5) scaleY(0.5);

在这里插入图片描述

写法2

transform: scale(2,2);

在这里插入图片描述

写法3

可以写一个值,代表的是宽高同时为一个值的比例,如果后续我们想匡高同比例,那么写一个就可以了;

transform: scale(0.9);

在这里插入图片描述


三、旋转

2D 旋转是指:让元素在二维平面内,顺时针旋转或逆时针旋转,具体使用方式如下:

  1. 先给元素添加 转换属性 transform
  2. 编写 transform 的具体值,相关可选值如下:
含义
rotate设置旋转角度,需指定一个角度值( deg ),正值顺时针,负值逆时针。

rotateZ

旋转是 z 轴 而不是 x y 轴 z轴相当于是从里到外射出来的一条线

效果

在这里插入图片描述

代码

 .inner {width: 200px;height: 200px;background-color: pink;/* 旋转是 z 轴  而不是 x  y 轴  z轴相当于是从里到外射出来的一条线*/transform: rotateZ(30deg);
}
<div class="outer"><div class="inner">2D旋转</div></div>

rotate

rotateZ(20deg) 相当于 rotate(20deg)

效果

在这里插入图片描述

代码

transform: rotate(60deg);

写负值和大于360

  • 如果我们写负值的话,那么就是逆时针;

  • 如果大于360度的话,就是 值 - 360 后的顺时针角度


四、2D扭曲

2D 扭曲是指:让元素在二维平面内被“拉扯”,进而“走形”,实际开发几乎不用,了解即可,具体使用方
式如下:

  1. 先给元素添加 转换属性 transform

  2. 编写 transform 的具体值,相关可选值如下:

    含义
    skewX设置元素在水平方向扭曲,值为角度值,会将元素的左上角、右下角 拉扯 。
    skewY设置元素在垂直方向扭曲,值为角度值,会将元素的左上角、右下角 拉扯 。
    skew一个值代表 skewX ,两个值分别代表: skewX 、 skewY

skewX

.inner {

​ width: 200px;

​ height: 200px;

​ background-color: pink;

​ /* 水平方向 */

​ transform: skewX(10deg);

在这里插入图片描述

skewY

/* y 轴扭曲 */

​ transform: skewY(10deg);

在这里插入图片描述

skew(10deg,10deg)

​ /* 写法三 1个值代表的是 水平方向 */

​ transform: skew(10deg,10deg);

在这里插入图片描述


五、多重变换

多个变换,可以同时使用一个 transform 来编写。

transform: translate(-50%, -50%) rotate(45deg);

  • 实际上就是同时位移 + 缩放 / 旋转,多个配合使用

translate/rotate

/* 先x轴位移 100px y 轴100px 再进行旋转 那么图应该是在右下角旋转 */

​ transform: translate(100px,100px) rotate(30deg);

在这里插入图片描述

rotate/translate

我们先进行旋转,然后再进行位移;

/* 如果我们先旋转 再位移 看效果,旋转是会改变坐标位置 */

​ transform: rotate(45deg) translate(100px,100px);

在这里插入图片描述

scale/translate

先进行缩放,然后再进行位移

/* 先缩放,再位移 缩放也会改变左边位置 */

​ transform: scale(0.5) translate(100px,100px);

在这里插入图片描述

translate/scale

/* 先位移,再缩放 */

​ transform: translate(100px,100px) scale(0.5) ;

在这里插入图片描述


六、变换原点

  • 元素变换时,默认的原点是元素的中心,使用 transform-origin 可以设置变换的原点。
  • 修改变换原点对位移没有影响, 对旋转和缩放会产生影响。
  • 如果提供两个值,第一个用于横坐标,第二个用于纵坐标。
  • 如果只提供一个,若是像素值,表示横坐标,纵坐标取 50% ;若是关键词,则另一个坐标取 50%

translate 位移

我们测试使用位移,看设置原点是否有影响

transform-origin: 50px 50px;

效果

在这里插入图片描述

代码

.inner {width: 200px;height: 200px;background-color: pink;/* 位移使用变换原点 我们发现对位移没有影响,位移原点都是相对于定点左上角来计算的 */transform-origin: 50px 50px;transform: translate(50px,50px); }

总结

我们看到使用位移的时候,设置了原点偏移没有作用,也就是说,位移对是否设置原点不影响

scale 缩放

transform-origin: 50px 50px;

transform: scale(0.5);

效果

在这里插入图片描述

总结

设置原点对缩放是有影响的,本来是以中小为原点的,目前是按照设置的方式显示

rotate 旋转

.inner {

​ width: 200px;

​ height: 200px;

​ background-color: pink;

​ transform-origin: 50px 50px;

​ transform: rotate(30deg);

}

效果

在这里插入图片描述

总结

设置原点对旋转是有影响的,一直围绕这 设置点为中心点旋转,我们自己可以打开开发者工具,手动调整角度进行观察

几种写法

我们可以设置 transform-origin 的值为:

  • 像素值
  • 关键字 (left,top)
  • 百分比
  • 一个参数和两个参数的区别

写法一

​ /* 写法1 transform-origin 为一个值 默认 x轴50px 第二个值默认为 50% */

​ transform-origin: 50px;

​ transform: rotate(30deg)

写法二

/* 写法2 transform-origin 为一一个关键字 默认 左上角 y轴为居中位置 */

​ transform-origin: left;

​ transform: rotate(30deg)

写法三

/写法3 百分比 变换原点在元素中心位置 百分比相对于自身/

​ transform: 50% 50%;

​ transform: rotate(30deg);

http://www.xdnf.cn/news/1315.html

相关文章:

  • 使用Python+OpenCV将多级嵌套文件夹下的视频文件抽帧为JPG图片
  • 创建表结构
  • 树莓派超全系列教程文档--(39)树莓派config.txt旧版选项
  • 线程同步——线程安全
  • jQuery — 总结
  • 逻辑思维与软件开发:从选定方向到风险管理的全流程
  • BeeWorks:低成本的国产化企业内网即时通讯
  • 使用Multipart Form-Data一次请求获取多张图片
  • Linux网络IP协议
  • 【ROS2】ROS2 插件开发流程(基于 pluginlib)
  • 2023蓝帽杯初赛内存取证-4
  • 数据结构-树
  • 美乐迪电玩客户端打包与资源替换实战教程
  • Shader属性讲解+Cg语言讲解
  • pda数据采集器,是如何采集数据的?
  • Docker底层原理浅析 | namespace+cgroups+文件系统
  • windows搭建xwiki17服务器
  • C++——多态、抽象类和接口
  • 鸿道操作系统Type 1虚拟化:破局AI机器人与智能汽车的“安全”与“算力”双刃剑
  • cloudflare配置邮件路由,实现多邮箱接收邮件
  • Web内网渗透知识大全
  • 剑指Offer(数据结构与算法面试题精讲)C++版——day18
  • 随机数算法原理以及模拟实现
  • QtCreator 调试 Linux 内核详细步骤指南
  • 多轮Function Calling的最佳实践
  • 解决找不到字体的问题
  • org.springframework.beans.factory.config.YamlPropertiesFactoryBean 类详解
  • Java函数生成实际应用案例:数据处理流水线
  • 代理设计模式:从底层原理到源代码 详解
  • RT-Thread学习笔记(三)