前端的一些3D旋转效果和实例——table切换

ops/2024/12/22 18:39:36/

首先,讲一下有关3D旋转的属性:

                transform用于设置变形,有以下参数

                1、translate(x,y)  2D的设置移动距离,x表示沿x轴的距离,y表示沿y轴的距离(y轴是向下为正)不写代表0

                    translateX(x)  translateY(y)    translateZ(z)

                2、translate3d(x,y,z)  3D的,

                3、scale(x,y)   元素缩放,是比例,省略y时,会默认y跟x相同

                    scale3d(x,y,z)  3d效果上的缩放

                    也可以单独设置,跟translate相同

                4、rotate(angle)  2d旋转,沿中心点顺时针旋转

                    rotate3d(x,y,z,angle)   3d旋转

                    rotateX(angle)    rotateY(angle)  rotateZ(angle)

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

                    skewX(angle)   skewY(angle)

                变形相关

                1、设置变形中心点

                    transform-origin:right bottom;   表示绕着右下旋转,第一个代表水平方向,第二个代表垂直方向,也可以是具体的数字(50px,50px)

                2、3D效果

                    perspective 3D透视效果  作用于父级元素

                    transfrom-style:preserve-3d 3D嵌套效果

                    backface-visibility:    设置背面是否可见,为hidden时不可见,visible表示可见(默认值)

实例——table切换

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* input {width: 100px;height: 100px;} *//* label{width: 100px;height: 100px;} */* {padding: 0;margin: 0;}body {height: 100vh;background: gray;}.container {width: 650px;height: 334px;margin: 150px auto;display: flex;justify-content: space-between;align-items: center;/* 设置视距 */perspective: 1500px;}.container .tab_body {width: 500px;height: 300px;background: olive;position: relative;/* 开启3D效果 */transform-style: preserve-3d;transform: rotateY(48deg);transform: rotateX(0px);/* 设置过度效果 */transition: transform 2s ease;}input {display: none;}.labels {height: 334px;display: flex;flex-direction: column;justify-content: space-between;}.labels label {width: 100px;height: 100px;display: block;cursor: pointer;text-align: center;line-height: 100px;}.labels label:hover {opacity: 0.8;}.labels label:nth-child(1) {background: khaki;}.labels label:nth-child(2) {background: peru;}.labels label:nth-child(3) {background: aliceblue;}.container .tab_body .tab_content {width: 520px;height: 300px;background: lawngreen;position: absolute;display: flex;flex-direction: column;justify-content: center;align-items: center;}.container .tab_body .tab_content:nth-child(2) {transform: translateZ(150px);background: peru;}.container .tab_body .tab_content:nth-child(1) {transform: translateY(-150px) rotateX(90deg);background: khaki;}.container .tab_body .tab_content:nth-child(3) {transform: translateY(150px) rotateX(-90deg);background: aliceblue;}#btn1:checked~.tab_body {transform: rotateX(-90deg);}#btn2:checked~.tab_body {transform: rotateX(0deg);}#btn3:checked~.tab_body {transform: rotateX(90deg);}</style>
</head><body><!-- label可以关联其他按钮,for中填的是想关联的id所以,想要改变选项框的样式,可以通过label的style来达到--><div class="container"><input type="radio" name="tabs" id="btn1"><input type="radio" name="tabs" id="btn2" checked><input type="radio" name="tabs" id="btn3"><div class="tab_body"><div class="tab_content"><h1>top</h1><p>APEX真的是框是神作</p></div><div class="tab_content"><h1>middle</h1><p>APEX真的是框是神作</p></div><div class="tab_content"><h1>bottom</h1><p>APEX真的是框是神作</p></div></div><div class="labels"><label for="btn1">top</label><label for="btn2">middle</label><label for="btn3">bottom</label></div></div>
</body></html>


http://www.ppmy.cn/ops/11943.html

相关文章

Python基础学习之append函数

append()函数用于在Python列表的末尾添加一个元素。 ai解释如下&#xff1a; 以下是一些简单的使用例子&#xff1a; 基本用法示例&#xff1a; # 创建一个空列表 my_list []# 使用append()添加单个元素 my_list.append(1) print(my_list) # 输出: [1]# 继续添加更多元素 …

RTT设备驱动框架学习(GPIO)

基类对象&#xff0c;定义在rtdef.h中 struct rt_object {char name[RT_NAME_MAX];rt_uint8_t type; //设备类Devicert_uint8_t flag;rt_list_t list; }; //同一类对象挂接在一个链表上设备基类&#xff0c;定义在rtdef.h中&#xff08;属于设备接口层&#xff09; struct rt…

【Redis(5)】Redis哨兵模式配置示例

Redis的三种高可用方案对比参考上一篇博客&#xff1a;深入理解Redis三种高可用方案&#xff0c;以做出明智的选择&#xff0c;下面要探讨的是三种方案其中的一种。 在Redis的主从模式中&#xff0c;虽然可以从节点提供读取操作的负载均衡&#xff0c;并且作为数据的热备份&am…

【muzzik 分享】关于 MKFramework 的设计想法

MKFramework是我个人维护持续了几年的项目&#xff08;虽然公开只有一年左右&#xff09;&#xff0c;最开始由于自己从事QP类游戏开发&#xff0c;我很喜欢MVVM&#xff0c;于是想把他做成 MVVM 框架&#xff0c;在论坛第一个 MVVM 框架出来的时候&#xff0c;我的框架已经快完…

vue-Router 路由(常量路由)

1、安装 pnpm i vue-router 2、新建文件&#xff1a;src/routes.ts import { RouteRecordRaw } from vue-routerexport const constantRoute: RouteRecordRaw[] [{//path: /,redirect: /login,},{//path: /login,component: () > import(/views/Login/index.vue),name…

TypeScript 泛型

泛型 介绍 软件工程中&#xff0c;我们不仅要创建一致的定义良好的API&#xff0c;同时也要考虑可重用性。 组件不仅能够支持当前的数据类型&#xff0c;同时也能支持未来的数据类型&#xff0c;这在创建大型系统时为你提供了十分灵活的功能。 在像C#和Java这样的语言中&…

【后端】python2和python3的语法差异

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、为何要了解不同版本的语法差异二、python2和python3的语法差异三、总结 前言 随着开发语言及人工智能工具的普及&#xff0c;使得越来越多的人会主动学习使…

TCP连接被远程主机强制关闭错误判断实例

如果你遇到错误消息 “An existing connection was forcibly closed by the remote host.”&#xff0c;这通常意味着远程服务器&#xff08;即“remote host”&#xff09;非正常地关闭了TCP连接。这可能是因为多种原因&#xff0c;比如服务器遇到了问题、服务器决定断开连接以…