★文章内容学习来源:拉勾教育大前端就业集训营
transform
translate()
translate()
时,可以实现位移效果。值 | 说明 |
---|---|
translate(x,y) | x,y分别为水平和垂直方向位移的距离,可以为px值或百分比, 区分正负 |
translate(x) | 只有一个数值,表示水平方向的位移 |
translate(x)
(只有一个数值,表示水平方向的位移)<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>2D 转换-位移(x)</title>
<style>
*{
margin: 0;
padding: 0;
}
.box{ /*定义一个box表示原img所在的位置*/
width: 361.7px;
height: 340px;
border: 1px solid red;
margin: 100px 200px;
}
.box img {
height: 340px;
transform: translate(100px);/*向右移动100px*/
}
</style>
</head>
<body>
<div class="box">
<img src="samoye.jpg" alt="">
</div>
</body>
</html>
translate(x,y)
(x,y分别为水平和垂直方向位移的距离) .box img {
height: 340px;
transform: translate(-100px,-50px); /*左移100px,上移50px*/
}
scale()
scale()
时,可以实现元素缩放效果。值 | 说明 |
---|---|
scale(x, y) | x,y分别为改变元素的宽度和高度的倍数 |
scale(n) | 只有一个值,表示宽度和高度同时缩放n倍 |
scaleX(n) | 改变元素的宽度倍数 |
scaleY(n) | 改变元素的高度倍数 |
scale(x, y)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>2D转换-缩放(x, y)</title>
<style>
*{
margin: 0;
padding: 0;
}
.box{ /*外面的box代表img原来的大小*/
width: 361.7px;
height: 340px;
border: 1px solid red;
margin: 100px 100px;
}
.box img {
height: 340px;
transform: scale(0.5,0.7); /*水平方向缩放0.5倍,垂直方向缩放0.7倍*/
}
</style>
</head>
<body>
<div class="box">
<img src="samoye.jpg" alt="">
</div>
</body>
</html>
scale(n)
.box img {
height: 340px;
transform: scale(0.5); /*宽度高度同时缩放0.5倍*/
}
scaleX(n)
.box img {
height: 340px;
transform: scaleX(0.5); /*宽度缩放0.5倍*/
}
scaleY(n)
.box img {
height: 340px;
transform: scaleY(0.5); /*高度缩放0.5倍*/
}
rotate()
时,实现元素的旋转。rotate(数字deg);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>2D转换-旋转rotate(正数)</title>
<style>
*{
margin: 0;
padding: 0;
}
.box{ /*外面的box代表img原来的位置*/
width: 361.7px;
height: 340px;
border: 1px solid red;
margin: 100px 100px;
}
.box img {
height: 340px;
transform: rotate(30deg); /*顺时针*/
}
</style>
</head>
<body>
<div class="box">
<img src="samoye.jpg" alt="">
</div>
</body>
</html>
.box img {
height: 340px;
transform: rotate(-30deg); /*逆时针*/
}
因为元素旋转后,坐标轴也跟着发生转变。
因此,多个属性值同时设置给 transform 时,书写顺序不同导致的转换效果有差异,为了更好地感受差异,借用:hover
伪类和transition
过渡属性,动态理解,如下两个例子。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>2D转换-旋转(先旋转后位移)</title>
<style>
*{
margin: 0;
padding: 0;
}
.box{ /*外面的box代表img原来的位置*/
width: 361.7px;
height: 340px;
border: 1px solid red;
margin: 50px;
}
.box img {
height: 340px;
}
.box img:hover { /*鼠标一悬停,进行*/
transform: rotate(30deg) translate(300px); /* 先旋转后位移 */
transition: img 5s linear 0 ; /*过渡属性设置,上篇有介绍*/
}
</style>
</head>
<body>
<div class="box">
<img src="samoye.jpg" alt="">
</div>
</body>
</html>
.box img:hover {
transform: translate(300px) rotate(30deg) ; /* 先位移后旋转 */
transition: img 5s linear 0 ;
}
skew()
时,实现元素的倾斜。transform: skew(数字deg,数字deg);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>2D转换-倾斜 skew() </title>
<style>
*{
margin: 0;
padding: 0;
}
.box{ /*外面的box代表img原来的位置*/
width: 361.7px;
height: 340px;
border: 1px solid red;
margin: 100px;
}
.box img {
height: 340px;
transform: skew(30deg,); /*水平方向,正数*/
}
</style>
</head>
<body>
<div class="box">
<img src="samoye.jpg" alt="">
</div>
</body>
</html>
.box img {
height: 340px;
transform: skew(-30deg);/*水平方向,负数*/
}
.box img {
height: 340px;
transform: skew(0,30deg); /*垂直方向,正数*/
}
.box img {
height: 340px;
transform: skew(0,-30deg); /*垂直方向,正数*/
}
transform-origin
属性transform-origin:x y ;
属性值 | 说明 |
---|---|
x | 定义 X 轴的原点在何处。可能的值:left 、center、right、像素值、百分比 |
y | 定义 Y 轴的原点在何处。可能的值:top、center、bottom、像素值、百分比 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>transform-origin属性 </title>
<style>
*{
margin: 0;
padding: 0;
}
.box{ /*外面的box代表img原来的位置*/
width: 361.7px;
height: 340px;
border: 1px solid red;
margin: 200px;
}
.box img {
height: 340px;
transform-origin: left top; /*定义基准点*/
}
.box img:hover {
transform: rotate(-30deg); /*逆时针旋转30deg*/
}
</style>
</head>
<body>
<div class="box">
<img src="samoye.jpg" alt="">
</div>
</body>
</html>
<html>
<head>
<title>卡包特效</title>
<style>
.box {
position : relative;
width: 300px;
height: 170px;
border: 1px solid black;
margin: 400px 50px;
}
.box img {
position :absolute;
left: 0;
top: 0;/*所有的卡片初始都在这个位置,所以要设置定位,子绝父相*/
width: 300px;
height: 170px;
transform-origin: right top;
transition: all 1s linear 0s;
}
.box:hover img:nth-child(1) {
transform: rotate(60deg);
}
.box:hover img:nth-child(2) {
transform: rotate(120deg);
}
.box:hover img:nth-child(3) {
transform: rotate(180deg);
}
.box:hover img:nth-child(4) {
transform: rotate(240deg);
}
.box:hover img:nth-child(5) {
transform: rotate(300deg);
}
.box:hover img:nth-child(6) {
transform: rotate(360deg);
}
</style>
</head>
<body>
<div class="box">
<img src="img/1.jpg"></img>
<img src="img/2.jpg"></img>
<img src="img/3.jpg"></img>
<img src="img/4.jpg"></img>
<img src="img/5.jpg"></img>
<img src="img/6.jpg"></img>
</div>
</body>
</html>
下篇继续:
【45】CSS3 (4)——新增属性③3D 转换
前言:本博客只是因为我正在上计算机图形学这门课,为了方便复习所写,所以内容...
演示地址: http://52515.net/lib/upfile/ubb/ 下载地址: http://52515.net/lib...
上篇文章 https://www.jb51.net/article/124489.htm 介绍了ajaxfileupload实现多...
前言 很多开发者首次接触数据库(通常是在高校课堂)的概念,或者说接触第一个数据...
MVC模式是一个比较成熟的开发模式。M是指业务模型,V是指用户界面,C则是控制器...
一、介绍 最近跨域问题比较多,而且自己刚好也看到这一块,就总结了一下,关于JS...
最近碰到一个数据转来转去转到Textrea里面是否能真正按行存放的问题,在这里总结...
若识庐山真面目 C语言中的常量分为以下几种 字面常量 const修饰的常变量 #define...
MySQL的字符集从latin1经过utf8 到utf8mb4 ,算是经历曲折的路线。特别是从使用...
首先,有了一个swf文件,test.swf,同时也有一个自动生成的html文件,test.html...