700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > CSS高级功能—3D空间转换(位移 透视 空间旋转)—3D导航—3D缩放

CSS高级功能—3D空间转换(位移 透视 空间旋转)—3D导航—3D缩放

时间:2021-04-20 12:53:41

相关推荐

CSS高级功能—3D空间转换(位移 透视 空间旋转)—3D导航—3D缩放

一.空间(3D)转换

目标:使用transform属性实现元素在空间内的位移、旋转、缩放等效果。

属性:transform

(1)位移效果(Z轴方向需要配合perspective透视使用)

空间位移的目标:使用translate实现元素空间位移效果

语法transform: translate3d(x, y, z);transform: translateX(值);transform: translateY(值);transform: translateZ(值);

取值(正负均可) 像素单位数值或百分比

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>空间位移</title><style>body{perspective: 100px;}.box {width: 200px;height: 200px;margin: 100px auto;background-color: pink;transition: all .5s;}.box:hover {transform: translate3d(50px, 100px, 20px);transform: translate3d(50px, 100px, -20px);/* transform: translateX(500px); *//* transform: translateY(500px); *//* transform: translateZ(500px); */}</style></head><body><div class="box"></div></body></html>

(2)透视效果

目标:使用perspective属性实现透视效果

~~~~加给父级元素

实现近大远小、近实远虚的视觉效果

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>透视效果</title><style>body {/* 加到父级元素,这里 */perspective: 1000px;/* perspective: 200px; *//* perspective: 10000px; */}.box {width: 200px;height: 200px;margin: 100px auto;background-color: pink;transition: all 0.5s;}.box:hover{/*正值是向我移动,会出现近大的效果*/transform: translateZ(200px);/*负值是远离我移动,会出现远小的效果*//* transform: translateZ(-200px); */}</style></head><body><div class="box"></div></body></html>

(3)空间旋转

目标:使用rotate实现元素空间旋转效果

语法 :

transform:rotateZ(值);

transform:rotateX(值);

transform:rotateY(值)

Z轴—绕中心点旋转

代码<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>空间旋转-Z轴</title><style>.box {width: 300px;margin: 100px auto;}img {width: 300px;transition: all 2s;}.box img:hover {transform: rotateZ(360deg);}</style></head><body><div class="box"><img src="./images/hero.jpeg" alt=""></div></body></html>

X轴—以水平线为轴,绕水平线转

<style>.box {width: 300px;margin: 100px auto;}img {width: 300px;transition: all 2s;}.box {/* 透视效果:近大远小,近实远虚 */perspective: 1000px;}.box img:hover {transform: rotateX(60deg);transform: rotateX(-60deg);}</style>

Y轴—以垂直线为轴,绕垂直线转

<style>.box {width: 300px;margin: 100px auto;}img {width: 300px;transition: all 2s;}.box {/* 透视效果:近大远小,近实远虚 */perspective: 1000px;}.box img:hover {transform: rotateY(60deg);transform: rotateY(-60deg);}</style>

查看效果:

(4)立体呈现

目标:使用transform-style: preserve-3d呈现立体图形

小实例

代码块<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>立体呈现</title><style>.cube {子绝父相position: relative;width: 200px;height: 200px;margin: 100px auto;background-color: pink;transition: all 2s;transform-style: preserve-3d;}.cube div {子绝父相position: absolute; left: 0;top: 0;width: 200px;height: 200px;}.front {background-color: orange;/* 向我走近200px *//* 让一个靠近我,一个不靠近,就会实现两个面之间的距离感 */transform: translateZ(200px);}.back {background-color: green;}/* cube hover 为了看空间感效果,鼠标放上去后 都绕Y轴转120度 */.cube:hover {transform: rotateY(120deg);}</style></head><body><div class="cube"><div class="front">前面</div><div class="back">后面</div></div></body></html>

二.3D导航

该过程代码块/* ①先子绝父相 将两个页面都放在前面重合,橙色会显示在前面 */.navs li a {position: absolute;left: 0;top: 0;display: block;width: 100%;height: 100%;text-align: center;text-decoration: none;color: #fff;}.navs li a:first-child {background-color: green;/* ④按它的坐标轴,将平面前移20px */transform: translateZ(20px);} .navs li a:last-child {background-color: orange;/* ②使用rotateX(90deg)将橙色绕X轴旋转90度,竖着变平 *//* ③使用translateZ(20px)将平着的页面沿Z轴上移20px */transform: rotateX(90deg) translateZ(20px) ;}

/* li:hover 立方体旋转 */.navs li:hover {transform: rotateX(-90deg);}

完整的代码块

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>3D导航</title><style>ul {margin: 0;padding: 0;list-style: none;}.navs {width: 300px;height: 40px;margin: 50px auto;}.navs li {position: relative;float: left;width: 100px;height: 40px;line-height: 40px;transition: all .5s;transform-style: preserve-3d;/* 旋转: 让大家在写代码的过程中看到立体盒子 *//* transform: rotateX(-20deg) rotateY(30deg); *//* 测试缩放效果 *//* transform: scale3d(0.5, 1.1, 2); */}/* ①先子绝父相 将两个页面都放在前面重合,橙色会显示在前面 */.navs li a {position: absolute;left: 0;top: 0;display: block;width: 100%;height: 100%;text-align: center;text-decoration: none;color: #fff;}.navs li a:first-child {background-color: green;/* ④按它的坐标轴,将平面前移20px */transform: translateZ(20px);} .navs li a:last-child {background-color: orange;/* ②使用rotateX(90deg)将橙色绕X轴旋转90度,竖着变平 *//* ③使用translateZ(20px)将平着的页面沿Z轴上移20px */transform: rotateX(90deg) translateZ(20px) ;}/* li:hover 立方体旋转 */.navs li:hover {transform: rotateX(-90deg);}</style></head><body><div class="navs"><ul><li><a href="#">首页</a><a href="#">Index</a></li><li><a href="#">登录</a><a href="#">Login</a></li><li><a href="#">注册</a><a href="#">Register</a></li></ul></div></body></html>

三.3D缩放

/* 测试缩放效果 在上面的3D导航中可查看缩放效果*/transform: scale3d(0.5, 1.1, 2);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。