Blogger Information
Blog 42
fans 0
comment 0
visits 36371
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
浮动与三列布局-20190904
庆选的博客
Original
846 people have browsed it

【css基础作业:浮动与三列布局】

1、实例演示如何消除子元素浮动造成父元素高度折叠的影响

实例

<!DOCTYPE html>
<html lang="en">
<head>
	<title>子元素对父元素的影响</title>
	<meta charset="utf-8">
	<style type="text/css">
		.box1{
			width: 300px;
			border: 5px dashed red;
			overflow:hidden; /*scroll、auto*/
		}
		.box2{
			width: 300px;
			height: 300px;
			background-color: lightblue;
			float: left;

		}
	</style>
</head>
<body>
	<div class="box1">
		<div class="box2"></div>
	</div>

</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

总结:

浮动造成父元素高度折叠原因:浮动导致子元素和父元素不在同一平面内。

即:对于子元素而言,其脱离文档流,位于在一定空间高度处排列

对于父元素而言,其因为子元素脱离文档流(父元素尚且归属文档流中)其由于缺少子元素的支撑导致“肉眼”识别差的高度折叠。(浏览器无法识别子元素。高度中剔除子元素高度)

而对于子元素而言,由于其位于一定空间高度处排列

从而导致视觉效果时父元素高度折叠

处理:1、父元素设置成子元素高度2、父元素设置浮动 3、在浮动元素文档流后设置块元素,用于清除浮动4、父元素overflow:hidden;设置清除浮动



2、实例演示三列布局的实现原理( 绝对定位实现, 浮动定位实现)

绝对定位:

实例

<!DOCTYPE html>
<html>
<head>
	<title>绝对定位实现三列布局</title>
	<meta charset="utf-8">
	<style type="text/css">
		.container{
			width: 1000px;
			margin: 0 auto;
			background-color: black;
			
		}
		.header,.footer{
			height: 60px;
			background-color: red;
		}
		.main{
			
			margin: 5px auto;
			position: relative;
		}
		.left{
			background-color: lightgreen;
			width: 200px;
			min-height: 800px;
			top: 0;
			left: 0;
			position: absolute;
			
		}
		.content{
			background-color: lightyellow;
			min-height: 800px;
			margin-left:200px;
			margin-right: 200px; 
		}
		.right{
			background-color: lightgreen;
			width: 200px;
			min-height: 800px;
			top: 0;
			right: 0;
			
			position: absolute;
			
		}
	</style>
</head>
<body>
	<div class="container">
        <div class="header">头部</div>
        <div class="main">
            <div class="left">左侧</div>
            <div class="content">内容</div>
            <div class="right">右侧</div>
        </div>
        <div class="footer">底部</div>

    </div>

</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

原理:

1、先计算出左右栏占据的宽度大小,并设置左右各自紧挨在main块中边界。

2、中间部分设置好左右编剧等于左右块宽度即可

通过计算三部分宽度将main块分成三块。

浮动定位:

实例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    
    <title>三列布局(浮动)</title>
    <style>
        .container {
            width: 1000px;
            margin: 0 auto;
            background-color: black;
        }
        
        .header,
        .footer {
            height: 60px;
            background-color: red;
        }
        
        .main {
            background-color: lightblue;
            margin: 5px auto;
            overflow: hidden;
        }
        
        .left {
            background-color: lightyellow;
            width: 200px;
            min-height: 800px;
            float: left;
        }
        
        .content {
            background-color: lightgreen;
            min-height: 800px; 
            width: 600px;
            float: left;
        }
        
        .right {
            background-color: lightyellow;
            width: 200px;
            min-height: 800px;   
            float: right;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="header">头部</div>
        <div class="main">
            <div class="left">左侧</div>
            <div class="content">内容</div>
            <div class="right">右侧</div>
        </div>
        <div class="footer">底部</div>

    </div>
</body>

</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

原理:

浮动布局原理:

1、将left、content、right三块从原来文档流中抽离出来重新组合排列

2、设置left、content、right父级元素main中overflow:hidden避免浮动对其他子集产生影响

即通过浮动完成三列布局






Correction status:qualified

Teacher's comments:布局的前提, 你必须拥有该元素的控制权力
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post