zoukankan      html  css  js  c++  java
  • 重新认识布局:3d空间中的css盒子

    本文首发于知乎:https://www.zhihu.com/people/xiao-chong-10-60

    思考一个问题:css中和盒子和生活中盒子有什么区别?

    答案:3d空间中,css盒子有宽高,没有厚度

    盒子的宽度是通过width属性设置的,高度是通过height属性来设置的。没有厚度相关的属性。

    为什么要提盒子没有厚度?如果只是在网页上布局,平面上有宽高就够了。但是涉及到3d转换,开启了3d空间后,情况就发生了变化:3d空间里有x,y,z(是一个左手坐标系)。x,y分别对应width和height,但是z轴没有对应的属性了。

    可以换个角度思考:css中的盒子可以放在3d空间中,但是一个没有厚度的“薄”盒子。

    没有厚度,在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>Document</title>
    	<style>
    		body {
    			perspective: 500px;
    		}
    
    		div {
    			 200px;
    			height: 200px;
    			background-color: pink;
    			margin: 0 auto;
    			border-radius: 50%;
    			transition: all 1s;
    			text-align: center;
    			line-height: 200px;
    		}
    
    		div:hover {
    			transform: rotateY(180deg)
    		}
    	</style>
    </head>
    
    <body>
    	<div>黑马</div>
    </body>
    
    </html>
    

      

    所以,完整的表述是:3d空间中,盒子呈现无厚度,有正反面的一个抽象盒子。

    2d转换(transform)有3个:位移,旋转,缩放。3d转换只有2个:位移,旋转,原因是盒子没有厚度,3d中的缩放还是缩放2d中的宽高。

  • 相关阅读:
    火狐浏览器kaptcha验证码点击无法刷新问题解决方法
    算法学习笔记——洗碗时遇到的汉诺塔问题
    JSP学习笔记
    springmvc中Tomcat跨服务器上传中文名文件报错解决方案
    MAVEN项目报错解决方法集锦(1)
    原生js模板语法之underscore.js
    HTML针式打印机打印模板
    elementui form表单验证
    vue+swiper背景图随swiper改变
    uni.navigateTo和uni.switchTab的区别
  • 原文地址:https://www.cnblogs.com/xiaochongchong/p/14930682.html
Copyright © 2011-2022 走看看