CSS3之transform详解及示例(3d变形)


一、3D空间显示和视距

提示:想要使用3d变形,必须先设置3d显示区域

1.首先给父容器(显示区盒子)设置:transform-style: preserve-3d;

约束子元素怎么样在空间显示 transform-style 属性的默认值是 flat;在2d空间显示,我们要修改为 preserve-3d 在3d空间中显示

2.继续给父容器(显示区盒子)设置:perspective:1000

视距 perspective 属性的默认值是 none;我们可以根据自己的需求,自行设置视距,数字越大,越平面化,数字越小,越立体化。

3.兼容

-webkit-perspective: 1000px;
除了加前缀以外,火狐浏览器还得设置像素值,数字不生效。

二、3D变形

1.基础知识:

3d变形和2d变形基本一模一样,只不过多了一个Z轴的变形。

	//缩放变形
    scaleX()   scaleY()    scaleX()//旋转变形
	rotateX()  rotateY()   rotateZ() 
	//平移变形
	translateX()   translateY()  translateZ() 
	//扭曲变形
	skewX()   skewY()

2.示例

在这里插入图片描述

代码如下(示例):

	.box{
         width: 220px;
         height: 520px;
         transform-style: preserve-3d;
         list-style: none;
         position: relative;
     }
     .box:hover{
         animation-play-state: paused;
     }
     .box li{
         width: 100%;
         height: 100%;
         position: absolute;
         background-size: cover;
         background-position: center;
         box-shadow: 0 0 10px 0 #fff;
         transition: all 2s;
     }
     .box li:nth-child(1){
         background-image: url(./img/图片1.jpg);
         transform: translateZ(300px);
     }
     .box li:nth-child(2){
         background-image: url(./img/图片2.webp);
         transform: rotateY(45deg) translateZ(300px);
     }
     .box li:nth-child(3){
         background-image: url(./img/图片3.webp);
         transform: rotateY(90deg) translateZ(300px);
     }
     .box li:nth-child(4){
         background-image: url(./img/图片4.webp);
         transform: rotateY(135deg) translateZ(300px);
     }
     .box li:nth-child(5){
         background-image: url(./img/图片5.webp);
         transform: rotateY(180deg) translateZ(300px);
     }
     .box li:nth-child(6){
         background-image: url(./img/图片6.webp);
         transform: rotateY(225deg) translateZ(300px);
     }
     .box li:nth-child(7){
         background-image: url(./img/图片7.webp);
         transform: rotateY(270deg) translateZ(300px);
     }
     .box li:nth-child(8){
         background-image: url(./img/图片8.webp);
         transform: rotateY(315deg) translateZ(300px);
     }

最后再设置上一个动画就可以了

	@keyframes move {
        0% { transform: rotateY(0deg); }
        100% { transform: rotateY(360deg); }
    }
    .box{
   		 animation: move 10s linear infinite;
         animation-play-state: running;
    }

很简单的一个3d变形效果,主要还是考验大家对X,Y,Z三个轴的理解,能否在脑海中构思出大致的逻辑。
X轴和Y轴不用过多解释,一个水平轴,一个垂直轴,这里简单说一下Z轴。
你可以理解成,从电脑屏幕到你眼睛这个方向的一条轴,只不过由于屏幕是平的,这个轴的距离无论是多少,对于你来说都是一个平面而已。


总结

本次带大家简单了解了一下transform中的3d变形效果,希望可以给大家带来思路上的灵感。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSS 3D 中的 transform 属性用于定义元素的变换方式,包括平移、旋转、缩放、斜切等。 transform 属性有多个取值,其中常见的包括: 1. translate:用于定义元素的平移变换,可以设置 X 轴、Y 轴和 Z 轴的平移距离。 2. rotate:用于定义元素的旋转变换,可以设置 X 轴、Y 轴和 Z 轴的旋转角度。 3. scale:用于定义元素的缩放变换,可以设置 X 轴、Y 轴和 Z 轴的缩放比例。 4. skew:用于定义元素的斜切变换,可以设置 X 轴和 Y 轴的倾斜角度。 下面是一个例子,展示了如何使用 transform 属性实现一个立方体的效果: ```css .cube { width: 200px; height: 200px; position: relative; transform-style: preserve-3d; } .cube .face { position: absolute; width: 200px; height: 200px; opacity: 0.8; } .cube .front { transform: translateZ(100px); background-color: #f00; } .cube .back { transform: rotateY(180deg) translateZ(100px); background-color: #0f0; } .cube .top { transform: rotateX(-90deg) translateZ(100px); background-color: #00f; } .cube .bottom { transform: rotateX(90deg) translateZ(100px); background-color: #ff0; } .cube .left { transform: rotateY(-90deg) translateZ(100px); background-color: #f0f; } .cube .right { transform: rotateY(90deg) translateZ(100px); background-color: #0ff; } ``` 在这个例子中,我们定义了一个立方体容器 .cube,同时给它的每个面 .face 加上了不同的背景颜色。通过设置每个面的 transform 属性,我们让立方体相对于自身进行了平移、旋转和缩放等变换,从而实现了 3D 的效果。注意,我们还设置了 transform-style 属性为 preserve-3d,以保证子元素也可以继承父元素的 3D 特性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值