CSS3中如何使元素曲线运动

html-css015

CSS3中如何使元素曲线运动,第1张

CSS3中使用transform属性可实现元素曲线运动。

下面介绍下transform 属性定义及其实例。

定义和用法:

transform 属性向元素应用 2D 或 3D 转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜。

默认值: none

继承性: no

版本: CSS3

JavaScript 语法: object.style.transform="rotate(7deg)"

语法transform: none|transform-functions

值         描述

none 定义不进行转换。

matrix(n,n,n,n,n,n) 定义 2D 转换,使用六个值的矩阵。

matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 定义 3D 转换,使用 16 个值的 4x4 矩阵。

translate(x,y) 定义 2D 转换。

translate3d(x,y,z) 定义 3D 转换。

translateX(x) 定义转换,只是用 X 轴的值。

translateY(y) 定义转换,只是用 Y 轴的值。

translateZ(z) 定义 3D 转换,只是用 Z 轴的值。

scale(x,y) 定义 2D 缩放转换。

scale3d(x,y,z) 定义 3D 缩放转换。

scaleX(x) 通过设置 X 轴的值来定义缩放转换。

scaleY(y) 通过设置 Y 轴的值来定义缩放转换。

scaleZ(z) 通过设置 Z 轴的值来定义 3D 缩放转换。

rotate(angle) 定义 2D 旋转,在参数中规定角度。

rotate3d(x,y,z,angle) 定义 3D 旋转。

rotateX(angle) 定义沿着 X 轴的 3D 旋转。

rotateY(angle) 定义沿着 Y 轴的 3D 旋转。

rotateZ(angle) 定义沿着 Z 轴的 3D 旋转。

skew(x-angle,y-angle) 定义沿着 X 和 Y 轴的 2D 倾斜转换。

skewX(angle) 定义沿着 X 轴的 2D 倾斜转换。

skewY(angle) 定义沿着 Y 轴的 2D 倾斜转换。

perspective(n) 为 3D 转换元素定义透视视图。

浏览器支持:

Internet Explorer 10、Firefox、Opera 支持 transform 属性。

Internet Explorer 9 支持替代的 -ms-transform 属性(仅适用于 2D 转换)。

Safari 和 Chrome 支持替代的 -webkit-transform 属性(3D 和 2D 转换)。

Opera 只支持 2D 转换。

实例:

实例A:

旋转 div 元素:

div

{

transform:rotate(7deg)

-ms-transform:rotate(7deg)  /* IE 9 */

-moz-transform:rotate(7deg)  /* Firefox */

-webkit-transform:rotate(7deg) /* Safari 和 Chrome */

-o-transform:rotate(7deg)  /* Opera */

}

CSS3 转换。

通过 CSS3 转换,我们能够对元素进行移动、缩放、转动、拉长或拉伸。

translate() 方法

通过 translate() 方法,元素从其当前位置移动,根据给定的 left(x 坐标) 和 top(y 坐标) 位置参数:

实例

div

{

transform: translate(50px,100px)

-ms-transform: translate(50px,100px) /* IE 9 */

-webkit-transform: translate(50px,100px) /* Safari and Chrome */

-o-transform: translate(50px,100px) /* Opera */

-moz-transform: translate(50px,100px) /* Firefox */

}

注:Internet Explorer 9 需要前缀 -ms-。

可以做一个animation,举一个例子,让一个元素在某一个范围之内,左距离和上距离同时改变。但是,弧线要让两个距离改变速度变化不一致,所以最好一个元素改变上方距离(可以是top也可是margin-top),里面嵌入一个元素改变左边距离。例如,假如你要让横轴均匀变化,纵轴不均匀变化,轨迹为⌒形,可以左变化为{from{margin-left:0px}to{margin-left:200px}},运动方式设为linear,然后上下变化可以{from{margin-top:100px}50%{margin-top:0px}to{margin-top:100px}},运动方式设为ease-in-out。由于时间仓促我没有具体实验过,而且表达可能不太清楚,请原谅。

您可以使用 CSS 动画来实现门打开后展示灯笼自上而下的动画效果。具体步骤如下:

1. 在 HTML 中创建门和灯笼的元素,并给这些元素添加类名。例如:

<div class="door">门</div>

<div class="lantern">灯笼</div>

2. 在 CSS 中为门添加打开的样式。例如,可以使用 transform 属性来旋转门:

.door {

transform: rotate(90deg)

}

3. 为灯笼添加动画样式。可以使用 CSS 的 animation 属性来实现动画效果。例如,可以使用以下样式来使灯笼从上方移动到下方:

.lantern {

animation: moveDown 1s ease-in-out

}

@keyframes moveDown {

from {

top: -100px

}

to {

top: 100px

}

}

4. 使用 JavaScript 来控制动画的播放。可以在门打开后调用灯笼元素的 classList.add 方法,来添加动画类名,从而触发动画的播放。

例如:

document.querySelector('.door').addEventListener('click', function() {

document.querySelector('.lantern').classList.add('lantern-animation')

})

希望这些信息能帮助到您!