CSS学习笔记 07、2D与3D转换(二)

简介: CSS学习笔记 07、2D与3D转换(二)

二、3D转换


2.1、绕X轴、Y轴旋转(rotateX、rotateY)


介绍


含义:将transform属性的值设置为rotateX()或者rotateY(),即可实现绕横轴、纵轴(x轴、y轴)旋转。


前提要求:需要在设置transform: rotateX()的父元素设置perspective属性,否则就会失效!



perspective的语法设置:perspective: 600px。该属性值设置大小效果就是你离这个舞台的远近感觉,若是值设置的越大,感觉越远,效果就越不明显;值设置的小,感觉越近,效果就越明显。

语法:一般有三种设置方式


transform: rotateX(30deg);:绕X轴进行3D旋转。

transform: rotateY(30deg);:绕Y轴进行3D旋转。

transform: rotateX(30deg) rotateY(30deg);:同时绕X轴、Y轴进行旋转。

额外:对于rotateZ,指的就是平面旋转。



demo示例


效果:perspective属性(这里设置为600px来进行演示)设置越小,效果越明显噢!


①看到绕着X轴进行旋转,360deg为一周。



②看到绕着Y轴进行旋转,360deg为一周。



③可以同时对X轴、Y周进行3D旋转


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2gRmYWOP-1651797571904)(C:\Users\93997\Desktop\GIF.gif)]


源码:


<style>
    * {
        padding: 0px;
        margin: 0px;
    }
    div {
        text-align: center;
    }
    div.box div {
        width: 102px;
        height: 102px;
        border: 1px solid red;
        /* 设置观点(舞台):就像你离远近的效果,数值越大就感觉离得越远,效果也不明显 */
        perspective: 600px;
        margin: 20px auto;
        margin-top: 0;
    }
    p.box1 {
        width: 100px;
        height: 100px;
        border: 1px solid #000;
        background-color: orange;
        /* 绕x轴进行3D旋转 */
        transform: rotateX(30deg);
    }
    p.box2 {
        width: 100px;
        height: 100px;
        border: 1px solid #000;
        background-color: orange;
        /* 绕y轴进行3D旋转 */
        transform: rotateY(30deg);
    }
    p.box3 {
        width: 100px;
        height: 100px;
        border: 1px solid #000;
        background-color: orange;
        /* 绕x轴、y轴进行3D旋转 */
        transform: rotateX(30deg) rotateY(30deg);
    }
</style>
<body>
    <div class="box">
        <!-- 测试rotateX -->
        测试rotateX
        <div>
            <p class="box1"></p>
        </div>
        <!-- 测试rotateY -->
        测试rotateY
        <div>
            <p class="box2"></p>
        </div>
        <!-- 测试rotateX、rotateY一起使用 -->
        测试rotateX、rotateY一起使用
        <div>
            <p class="box3"></p>
        </div>
    </div>
</body>



2.2、空间移动(rotateX或rotateY配合translatex,y,z使用)


介绍与示例效果

介绍


空间移动的前提条件:当元素进行3D旋转过后(设置rotateX属性后),即可继续添加translateX、translateY、translateZ属性让元素在空间中进行移动。


移动的方向与位置:以当前的旋转面作为坐标轴


translateX:根据水平进行左右平移。

translateY:根据旋转的角度,按照这个角度进行上下。

translateZ:按照它当前的平面朝向,前行与后退。

语法:举例如transform: rotateX(30deg) translateX(100px) translateY(100px) translateZ(100px);



说明:你可以想象一个物体在一个空间里进行移动。



示例


这个与进行绝对定位平移的效果不一样,其是可以在空间中进行平移!




案例:通过空间移动创建一个正方体

效果展示图:一个div里面有6个p标签,这6个P标签通过使用绝对定位来进行脱离文档流,接着使用空间移动来进行组合为一个正方体



源码:


<style>
    * {
        padding: 0px;
        margin: 0px;
    }
    /* 外部大盒子 */
    div.box {
        width: 800px;
        height: 300px;
        margin: 20px auto;
        border: 1px solid #000;
        position: relative;
    }
    /* 间隔位置 */
    div.jiange {
        font-size: 80px;
        position: absolute;
        width: 100px;
        height: 300px;
        top: 50%;
        left: 50%;
        margin-top: -40px;
        margin-left: -40px;
    }
    /* 未创建正方形时 */
    div.box1 {
        float: left;
        width: 202px;
        height: 202px;
        border: 1px solid #000;
        margin: 40px auto;
        position: relative;
        /* 设置perspective,令3D旋转生效 */
        perspective: 600px;
        margin-left: 100px;
    }
    div.box1 p {
        /* 绝对定位,让8个P元素都脱离文档流 */
        position: absolute;
        top: 0;
        left: 0;
        width: 200px;
        height: 200px;
        border: 1px solid #000;
        background-color: rgba(0, 0, 0, .1);
    }
    /* 空间移动后 */
    div.box2 {
        float: right;
        width: 202px;
        height: 202px;
        border: 1px solid #000;
        margin: 40px auto;
        position: relative;
        /* 设置perspective,令3D旋转生效 */
        perspective: 600px;
        margin-right: 100px;
    }
    div.box2 p {
        /* 绝对定位,让8个P元素都脱离文档流 */
        position: absolute;
        top: 0;
        left: 0;
        width: 200px;
        height: 200px;
        border: 1px solid #000;
    }
    div.box2 p:nth-child(1) {
        background-color: rgba(238, 73, 8, 0.55);
        /* 正面:直接向前行进,行进长度应该为正方形的一半 */
        transform: rotateX(0deg) translateZ(100px);
        z-index: 999;
    }
    div.box2 p:nth-child(2) {
        background-color: rgba(126, 245, 15, 0.897);
        /* 顶部:旋转了90度后,根据朝向面向上100px */
        transform: rotateX(90deg) translateZ(100px);
    }
    div.box2 p:nth-child(3) {
        background-color: rgba(44, 161, 14, 0.897);
        /* 背部:后仰180度,根据朝向面前进100px */
        transform: rotateX(180deg) translateZ(100px);
    }
    div.box2 p:nth-child(4) {
        background-color: rgba(247, 22, 247, 0.897);
        /* 底面:前仰90度,根据朝向面前进100px */
        transform: rotateX(-90deg) translateZ(100px);
    }
    div.box2 p:nth-child(5) {
        background-color: rgba(41, 19, 233, 0.897);
        /* 右侧面 */
        transform: rotateY(90deg) translateZ(100px);
    }
    div.box2 p:nth-child(6) {
        /* 左侧面 */
        transform: rotateY(270deg) translateZ(100px);
    }
</style>
<body>
    <div class="box">
        <div class="box1">
            <p></p>
            <p></p>
            <p></p>
            <p></p>
            <p></p>
        </div>
        <div class="jiange">&gt;</div>
        <div class="box2">
            <p></p>
            <p></p>
            <p></p>
            <p></p>
            <p></p>
        </div>
    </div>
</body>
相关文章
css3实现3D数字时钟滚动特效代码
css3实现3D数字时钟滚动特效代码
476 18
|
前端开发 JavaScript API
探索 CSS Houdini:轻松构建酷炫的 3D 卡片翻转动画
本文通过构建一个 3D 翻卡动画深入探讨了 CSS Houdini 的强大功能,展示了如何通过 Worklets、自定义属性、Paint API 等扩展 CSS 的能力,实现高度灵活的动画效果。文章首先介绍了 Houdini 的核心概念与 API,并通过构建一个动态星空背景、圆形进度条以及交互式 3D 翻卡动画的实际示例,展示了如何利用 CSS Houdini 赋予网页设计更多创造力。最后,还演示了如何将这种 3D 翻卡效果集成到公司网站中,提升用户体验。CSS Houdini 的创新能力为网页设计带来了前所未有的灵活性,推动了前端开发迈向新的高度。
273 0
探索 CSS Houdini:轻松构建酷炫的 3D 卡片翻转动画
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
|
前端开发 容器
css布局-弹性布局学习笔记
这篇文章是关于CSS弹性布局的学习笔记,详细介绍了flex容器和元素的相关属性,包括flex-direction、flex-wrap、flex-flow、justify-content、align-items、align-content以及order、flex-grow、flex-shrink、flex-basis、flex和align-self等,解释了这些属性在弹性盒子布局中的作用和用法。
|
前端开发
HTML+CSS动画实现动感3D卡片墙:现代Web设计的视觉盛宴
HTML+CSS动画实现动感3D卡片墙:现代Web设计的视觉盛宴
|
前端开发 JavaScript
【HTML+CSS+JavaScript】3d-boxes-background
【HTML+CSS+JavaScript】3d-boxes-background
207 0
|
前端开发 JavaScript
前端 CSS 经典:3D Hover Effect 效果
前端 CSS 经典:3D Hover Effect 效果
286 0
|
前端开发 JavaScript
前端 CSS 经典:3D 渐变轮播图
前端 CSS 经典:3D 渐变轮播图
364 0
|
10月前
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中

热门文章

最新文章

  • 1
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    435
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    342
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    327
  • 4
    (CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
    214
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    438
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    618
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    870
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    230
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    715
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    405
  • 下一篇
    开通oss服务