zoukankan      html  css  js  c++  java
  • 圣杯局部和双飞翼布局

    圣杯布局和双飞翼布局的效果都是两边定宽,中间自适应。随着页面的移动中间的大小发生改变。但是到达一定的情况下,布局不在水平布局。
    下面我将详细讲解圣杯布局和双飞翼布局的思想。资源参考于https://www.jianshu.com/p/81ef7e7094e8

    圣杯布局

    思想:假设左边定宽180px,右边定宽200px。则首先在middle上面设置
    .middle{padding: 0 200px 0 180px;}
    为左右预留空间

    随后分别为三列设置宽度与浮动,同时对footer设置清除浮动:

    根据浮动的特性,由于center的宽度为100%,即占据了第一行的所有空间,所以left和right被挤到了第二行。

    接下来的工作是将left放置到之前预留出的位置上,这里使用负外边距

    #left{
      180px;
      margin-left:-100%;
    }
    

    随后还需要使用定位方法

    #left{
      180px;
      margin-left:-100%;
      position:relatvie;
      left:-180px;
    }
    

    #right{
      200px;
      margin-left: -200px;
    }
    

    html

    	<div id="content">
    		<div id="middle">middle</div>
    		<div id="left">left</div>
    		<div id="right">right</div>
    	</div>
    

    css

    	#content {
    		/*左右栏通过添加负的margin放到正确的位置了,此段代码是为了摆正中间栏的位置*/
    		padding: 0 200px 0 180px;
    		height: 100px;
    	}
    
    	#middle {
    		float: left;
    		 100%;
    		/*左栏上去到第一行*/
    		height: 100px;
    		background:#ccc;
    	}
    
    	#left {
    		float: left;
    		 180px;
    		height: 100px;
    		margin-left: -100%;
    		background: #008c8c;
    		/*中间栏的位置摆正之后,左栏的位置也相应右移,通过相对定位的left恢复到正确位置*/
    		position: relative;
    		left: -180px;
    	}
    
    	#right {
    		float: left;
    		 200px;
    		height: 100px;
    		margin-left: -200px;
    		background: #008c8c;
    		/*中间栏的位置摆正之后,右栏的位置也相应左移,通过相对定位的right恢复到正确位置*/
    		position: relative;
    		right: -200px;
    	}
    
    

    双飞翼布局
    html

    <body>
    	<div id="middle">
    		<div id="inside">middle</div>
    	</div>
    	<div id="left">left</div>
    	<div id="right">right</div>
    <body>
    

    css

    	#middle {
    		float: left;
    		 100%;
    		/*左栏上去到第一行*/
    		height: 100px;
    		background: #ccc;
    	}
    
    	#left {
    		float: left;
    		 180px;
    		height: 100px;
    		margin-left: -100%;
    		background: wheat;
    	}
    
    	#right {
    		float: left;
    		 200px;
    		height: 100px;
    		margin-left: -200px;
    		background: wheat;
    	}
    
    	/*给内部div添加margin,把内容放到中间栏,其实整个背景还是100%*/
    	#inside {
    		margin: 0 200px 0 180px;
    		height: 100px;
    	}
    

  • 相关阅读:
    P1629 邮递员送信
    P1119 灾后重建
    最短路问题
    P1194 买礼物
    最小生成树
    P1038 神经网络
    P2661 信息传递
    mysql 5.7启动报错
    docker flannel网络部署和路由走向分析
    k8s---无头服务
  • 原文地址:https://www.cnblogs.com/yuanliy/p/14516933.html
Copyright © 2011-2022 走看看