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中的宽高。

  • 相关阅读:
    mysql低版本升级到5.7
    mysql权限管理
    本地代码推送到远程git仓库
    解决ie低版本不认识html5标签
    使用ssh远程访问github
    centos7使用kubeadm搭建kubernetes集群
    js es6深入应用系列(Generator)
    js console一些常用的功能
    重新整理.net core 计1400篇[五] (.net core 修改为Startup模式 )
    重新整理.net core 计1400篇[五] (.net core 添加mvc 中间件 )
  • 原文地址:https://www.cnblogs.com/xiaochongchong/p/14930682.html
Copyright © 2011-2022 走看看