zoukankan      html  css  js  c++  java
  • 重新认识布局:标准流,浮动,定位的关系

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

    flex布局(2009年w3c提出)出来之前,PC端网页的布局方式(手段)有3种:

    1)标准流

    2)浮动

    3)定位

    其中,3者之间又有密不可分的关系。

    1.相对定位与标准流

    定位里最接近标准流的是相对定位,相对定位不脱标,依然保留在标准流里的位置。

    除此之外,相对定位的元素没有像绝对定位那样具有行内块元素的特性。

    <!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>
    		span{
    			position: relative;
    			 200px;
    			height: 200px;
    			background-color: pink;
    		}
    	</style>
    </head>
    <body>
    	<span>111</span>
    </body>
    </html>
    

      

    2.浮动和绝对定位

    浮动和绝对定位是近亲,浮动有3个特性:

    1)脱标

    2)一行显示且顶端(父元素的顶端)对齐

    3)浮动的元素具有行内块元素的特性

    实际上,绝对定位具有1)和3)的特性:即脱标和具有行内块元素的特性。更深层次,因为脱标了才具有了行内块元素特性。

    <html lang="en">
    
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>Document</title>
    	<style>
    		span {
    			position: absolute;
    			 200px;
    			height: 200px;
    			background-color: pink;
    		}
    	</style>
    </head>
    
    <body>
    	<span>111</span>
    </body>
    
    </html>
    

      

    从上面看出:相对定位更接近于标准流,绝对定位和浮动比较类似。

    我们布局中的技巧:子绝父相和这个也有关系,父元素相对定位,在标准流里占住位置,子元素绝对定位,参考父元素占住的位置进行移动,并且是脱标的。

    利用浮动和绝对定位脱标(脱离标准流)的特性,我们可以轻松做出2栏布局(左侧宽度确定,右边占据剩余空间):

    浮动做法:

    <!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>
    		.box {
    			overflow: hidden;
    		}
    
    		.left {
    			float: left;
    			 200px;
    			height: 600px;
    			background-color: pink;
    		}
    
    		.right {
    			margin-left: 200px;
    			height: 600px;
    			background-color: skyblue;
    		}
    	</style>
    </head>
    
    <body>
    	<div class="box">
    		<div class="left"></div>
    		<div class="right"></div>
    	</div>
    </body>
    
    </html>
    

     绝对定位做法:

    <!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>
    		.box {
    			position: relative;
    		}
    
    		.left {
    			position: absolute;
    			left: 0;
    			top: 0;
    			 200px;
    			height: 800px;
    			background-color: pink;
    		}
    
    		.right {
    			margin-left: 200px;
    			height: 800px;
    			background-color: skyblue;
    		}
    	</style>
    </head>
    
    <body>
    	<div class="box">
    		<div class="left"></div>
    		<div class="right"></div>
    	</div>
    </body>
    
    </html>
    

      

  • 相关阅读:
    How To Scan QRCode For UWP (4)
    How To Crop Bitmap For UWP
    How To Scan QRCode For UWP (3)
    How To Scan QRCode For UWP (2)
    How To Scan QRCode For UWP (1)
    How to change windows applicatioin's position via Win32 API
    8 Ways to Become a Better Coder
    How to resize or create a thumbnail image from file stream on UWP
    C# winform压缩文件夹带进度条
    MS ACCESS MID函数
  • 原文地址:https://www.cnblogs.com/xiaochongchong/p/14930318.html
Copyright © 2011-2022 走看看