沿着x轴旋转的html例子,CSS3旋转实例学习(附3D旋转实例)

我们都有在网页上见过一些交互性的效果,比如用鼠标滑向图标或是按钮的时候,图标会自动旋转一周,这就是CSS3旋转效果。在CSS3中有个常见的transform应用,transform主要包括以下几种:旋转rotate、扭曲skew、缩放scale和移动translate以及矩阵变形matrix。本文主要侧重讲解CSS3的平面旋转(2D)方法和立体旋转(3D)方法。不过既然提起transform,还是先普及一下transform属性的基本知识:

在CSS3中transform主要包括以下几种:旋转rotate、扭曲skew、缩放scale和移动translate以及矩阵变形matrix。

1、旋转rotate() :通过指定的角度参数对原元素指定一个2D rotation(2D 旋转),angle是指旋转角度,如果设置的值为正数表示顺时针旋转,负数则表示逆时针旋转。如:transform:rotate(30deg)。

2、扭曲skew( [, ]) :X轴Y轴上的skew transformation(斜切变换)。第一个参数对应X轴,第二个参数对应Y轴。如果第二个参数未提供,则值为0,也就是Y轴方向上无斜切。skew是用来对元素进行扭曲变行,第一个参数是水平方向扭曲角度,第二个参数是垂直方向扭曲角度。其中第二个参数是可选参数,默认为0deg。

3、缩放scale([, ]):提供执行[sx,sy]缩放矢量的两个参数指定一个2D scale(2D缩放)。如果第二个参数未提供,则取与第一个参数一样的值。scale(X,Y)是用于对元素进行缩放,可以通过transform-origin对元素的基点进行设置,同样基点在元素中心位置;基中X表示水平方向缩放的倍数,Y表示垂直方向的缩放倍数,而Y是一个可选参数,如果没有设置Y值,则表示X,Y两个方向的缩放倍数是一样的。并以X为准。如:transform:scale(2,1.5)。

4、移动translate([, ]) :通过矢量[tx, ty]指定一个2D translation,tx 是第一个过渡值参数,ty 是第二个过渡值参数选项。如果 未被提供,则ty以 0 作为其值。也就是translate(x,y),它表示对象进行平移,按照设定的x,y参数值,当值为负数时,反方向移动物体,其基点默认为元素 中心点,也可以根据transform-origin进行改变基点。如transform:translate(100px,20px)。

5、矩阵变形matrix(, , , , , ) : 以一个含六值的(a,b,c,d,e,f)变换矩阵的形式指定一个2D变换,相当于直接应用一个[a b c d e f]变换矩阵。就是基于水平方向(X轴)和垂直方向(Y轴)重新定位元素,此属性值使用涉及到数学中的矩阵。

CSS3旋转rotate()方法

在CSS3中,我们可以使用rotate()方法来将元素相对中心原点进行旋转。这里的旋转是二维的,不涉及三维空间的操作。

c4cf6c10af3e3ff97a021eff17335a1e.png语法:

transform:rotate(度数);

说明:

度数指的是元素相对中心原点进行旋转的度数,单位为deg。其中,deg是degree(度数)的缩写。如果度数为正,则表示元素相对原点中心顺时针旋转;如果度数为负,则表示元素相对原点中心进行逆时针旋转。

举例:

.fl { width:300px; height:145px; background:#00cb99;}

.fr { width:300px; height:145px; margin-top:10px; background:#0093b4;}

.pa { position:absolute; top:75px; left:75px; width:150px; height:150px; background-color:#f2f2f2;}

效果如下:

9c7f345009787303524528c223203289.png

分析:

这里虚线框为原始位置,蓝色背景盒子为顺时针旋转30度后的效果。

CSS3实现3D旋转

用CSS3制作3D旋转图像,效果很漂亮,3D旋转的特别之处就是支持阴影旋转和兼容响应式网页设计,使得整体场景非常有感觉。

先看一个简单的3D旋转效果例子:

正面:鼠标移上去就开始旋转

7f474871d312369fa76d4501c7b94ef9.png

旋转中:这是旋转至背面的效果,以旋转并带半透明渐变的方式显示。

d82c5594e16e2287320a1e7bddb6a6e3.png

背面:旋转后,为图像添加一些文字介绍元素,充实这个元素。

9cbe7e5f89236f3b462a4dad4262107b.pngHTML代码

winwall.jpg

这是一个标题

这是一段图片相关的简介内容。。

CSS代码

.photo-container {

perspective: 1200px; /* 透视视图 */

width:45%;

float:left;

}

.rotate-box {

position:relative;

transform-style: preserve-3d; /* 3D 转换 */

transition:1s ease; /* 转换效果持续 1秒 */

margin:10%;

}

.rotate-box img {width:100%;height:auto;}

背面文本样式,透明背景,并设置默认为反转180度,其次要将图像置于图像的背面,所以这里我们利用z轴来控制,CSS代码如下:

.text {

position:absolute;top:0;

width:100%;height:100%;

transform: rotateY(180deg) translateZ(1px); /* 反转180度 并设置z轴让其置于图片背面 */

color:#666;

text-align:center;

opacity:.06;

background:rgba(255,255,255,.9);

transition: 1s opacity;

}

使用Hover来触发动画

.photo-container:hover .rotate-box{

transform: rotateY(180deg);

}

.photo-container:hover .text{opacity:1}

通过伪元素(:after)给图像添加一个透视阴影,使整体更有3D立体感觉。

.rotate-box:after {

content:' ';

display:block;

width:100%;

height:7vw; /* vw是移动设计备窗体单位*/

transform:rotateX(90deg);

background-image: radial-gradient(ellipse closest-side, rgba(0, 0, 0, 0.05) 0%, rgba(0, 0, 0, 0) 100%); /* radial-gradient 是径向渐变 */

}

CSS3实现3D立方体旋转效果

2c03e246198c43c9a8f198e1e5f40be1.png

使用方法:

1、调用CSS样式:

2、添加HTML代码:

将......之间的html和js代码;放在

之间。

HTML代码:

1

2

3

4

5

6

CSS 3代码:

*{margin: 0;padding: 0;}

html,body{height: 100%;background: black;}

.wrap{

height: 100%;position: relative;

-webkit-transform-style:preserve-3d;

-webkit-perspective:0px;

-moz-transform-style:preserve-3d;

-moz-perspective:0px;

-webkit-animation:mydhua 5s ease infinite;

-moz-animation:mydhua 5s ease infinite;

}

.box{width: 200px;height: 200px;position: absolute;top: 50%;left: 50%;

margin:-100px 0 0 -100px; line-height: 200px;text-align: center;font-size: 48px;color: white;

}

.box1{

-webkit-transform:rotatey(90deg) translatez(-100px);

-moz-transform:rotatey(90deg) translatez(-100px);

background: rgba(128,0,128,.5);

}

.box2{

-webkit-transform:rotatey(90deg) translatez(100px);

-moz-transform:rotatey(90deg) translatez(100px);

background: rgba(255,0,255,.5);

}

.box3{

-webkit-transform:rotatex(90deg) translatez(100px);

-moz-transform:rotatex(90deg) translatez(100px);

background: rgba(255,153,204,.5);

}

.box4{

-webkit-transform:rotatex(90deg) translatez(-100px);

-moz-transform:rotatex(90deg) translatez(-100px);

background: rgba(0,204,255,.5);

}

.box5{

-webkit-transform: translatez(-100px);

-moz-transform:translatez(-100px);

background: rgba(153,204,255,.5);

}

.box6{

-webkit-transform: translatez(100px);

-moz-transform:translatez(100px);

background: rgba(0,255,255,.5);

}

@-webkit-keyframes mydhua{

0%{-webkit-transform:rotateX(0deg) rotateY(0deg) rotateZ(0deg);-webkit-transform-origin: center center;}

100%{-webkit-transform:rotateX(180deg) rotateY(180deg) rotateZ(180deg);-webkit-transform-origin: center center; }

}

@-moz-keyframes mydhua{

0%{-moz-transform:rotateX(0deg) rotateY(0deg) rotateZ(0deg);-webkit-transform-origin: center center;}

100%{-moz-transform:rotateX(180deg) rotateY(180deg) rotateZ(180deg); -webkit-transform-origin: center center;}

}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的 HTML + JS 实例实现了根据斜面切割立方体的效果,并进行了注释: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Slice Cube Example</title> <style> /* 定义容器样式 */ #container { width: 400px; height: 400px; border: 1px solid black; position: relative; margin: 0 auto; } /* 定义立方体样式 */ #box { width: 100px; height: 100px; position: absolute; top: 150px; left: 150px; transform-style: preserve-3d; } /* 定义立方体面的样式 */ .face { width: 100px; height: 100px; position: absolute; background-color: lightblue; border: 1px solid black; } </style> </head> <body> <h1>Slice Cube Example</h1> <p>Drag the slider to change the slope of the slicing plane.</p> <!-- 定义容器元素 --> <div id="container"> <!-- 定义立方体容器元素 --> <div id="box"> <!-- 定义立方体的 6 个面 --> <div class="face" style="transform: translateZ(50px);"></div> <div class="face" style="transform: rotateY(90deg) translateZ(50px);"></div> <div class="face" style="transform: rotateY(180deg) translateZ(50px);"></div> <div class="face" style="transform: rotateY(-90deg) translateZ(50px);"></div> <div class="face" style="transform: rotateX(90deg) translateZ(50px);"></div> <div class="face" style="transform: rotateX(-90deg) translateZ(50px);"></div> </div> </div> <!-- 定义滑动条元素 --> <input type="range" min="-45" max="45" value="0" step="1" id="slider"> <script> // 获取立方体元素和滑动条元素 var box = document.getElementById('box'); var slider = document.getElementById('slider'); // 定义函数:根据滑动条值更新立方体变换效果 function updateSlice() { // 获取滑动条值,并将其转化为弧度 var angle = slider.value; var radians = angle * Math.PI / 180; // 计算切割面的斜率(即切线的正切值) var tan = Math.tan(radians); // 构造切割面的变换样式 var transform = "skew(" + tan + "rad)"; // 将切割面的变换样式与 Y 旋转合并,并应用到立方体容器元素上 box.style.transform = "rotateY(" + angle + "deg) " + transform; } // 注册滑动条的事件监听器 slider.addEventListener('input', function() { updateSlice(); }); // 初始化立方体变换效果 updateSlice(); </script> </body> </html> ``` 在这个例子中,我们使用了 HTML、CSS 和 JavaScript 来实现立方体的切割效果。具体而言,我们定义了一个容器元素(id 为“container”)和一个立方体容器元素(id 为“box”),并在立方体容器元素中定义了 6 个面(div 元素),每个面都使用 CSS3 3D 变换来进行定位和旋转。我们还使用了一个滑动条元素来控制切割平面的斜度。 在 JavaScript 中,我们首先通过“getElementById”方法获取立方体容器元素和滑动条元素,然后定义了一个“updateSlice”函数来根据滑动条值更新立方体的变换效果。具体而言,我们首先获取滑动条的值,然后将其转换为弧度,并计算出斜度的正切值。最后,我们将斜度应用到立方体容器元素的变换中,通过“rotateY”和“skew”函数来实现旋转和切割效果。 需要注意的是,这个例子仅仅是一个简单的示例,实际应用中还需要考虑更复杂的情况,如切割面的位置和方向、切割面是否与立方体相交等等。但是,通过这个例子,你可以了解如何使用 HTML、CSS 和 JavaScript 来实现立方体的切割效果,以及一些基本的 3D 变换知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值