博客列表 >浮动、定位与布局 9.04

浮动、定位与布局 9.04

我的博客
我的博客原创
2019年09月08日 19:59:09489浏览

如何消除子元素浮动造成父元素高度折叠的影响

html文件

实例

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" type="text/css" href="static/css/index1.css">
    <title>浮动float</title>
</head>
<body>
	<h1>float浮动</h1>
    <div class="box1">box1</div>
    <div class="box2">box2</div>
    <div class="box3">box3</div>
    <div class="box4">box4</div>
</body>
</html>

运行实例 »

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

css代码

实例

.box1 {
	width: 150px;
	height: 150px;
	background-color: lightblue;

	float: left;
}
.box2 {
	width: 150px;
	height: 150px;
	background-color: lightgreen;

	float: right;
}

.box3 {
	width: 200px;
	height: 200px;
	background-color: lightcoral;

	float: right;
}

.box4 {
	height: 100px;
	background-color: gray;

	clear: both;
	/*clear: left;*/
	/*clear: right;*/
}

运行实例 »

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

总结

消除子元素的浮动对父元素的影响:
1、设置设置父元素和子元素一样的宽高,子元素浮动,父元素会缩成一团,设置一定的宽高可以看起来是父元素仍然包裹着子元素

2、将父元素也浮动起来,但是会影响父元素的父元素,嵌套传递,都需要添加浮动

3、在最后一个子元素后面添加一个div块元素,添加属性clear:both可以消除,但是不方便后端传输数据对前端界面进行渲染

4、给父元素添加overflow:hidden属性,消除子元素的浮动对父元素的影响

个人理解

浮动相当于将元素从文档流界面提出来,前端两层界面

1这样设置只是在视觉效果上父元素包裹着子元素,其实是在两层界面中

2则是将父元素也提出到上层界面(递归处理)

3和4相当于将上层界面的元素再按回下层界面,前端还是一层界面

三列布局的实现原理( 绝对定位实现, 浮动定位实现)

定位:

1、静态定位:static,文档流定位,流动布局

2、相对定位:relative,元素仍在文档流中,只是相对它原来的位置发生偏移,站着位置,只是在视觉效果上偏移

3、绝对定位:absolute,元素脱离文档流,相对离他最近的,具有定位属性的父级元素进行定位

4、固定定位:fixed,始终相对于浏览器的窗口进行定位  body/html

html代码

实例

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<link rel="stylesheet" type="text/css" href="static/css/index6.css">
	<title>布局常识与三列布局</title>
</head>
<body>
	<div class="container">
		<div class="header">头部</div>
		<div class="main">
			<div class="left">left</div>
			<div class="content">content</div>
			<div class="right">right</div>
		</div>
		<div class="footer">底部</div>
	</div>
</body>
</html>

运行实例 »

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

绝对定位实现三列布局CSS代码

实例

.container {
	width: 1000px;
	margin: 0 auto;
}

.header,.footer {
	height: 60px;
	background-color: lightgray;
}

.main {
	background-color: lightseagreen;
	margin: 5px auto;
	/*给定位父级设置定位属性*/
	position: relative;
}

.left {
	width: 200px;
	min-height: 600px;
	background-color: lightblue;

	position: absolute;
	left: 0;
	top: 0;
}

.content {
	min-height: 600px;
	background-color: lightcoral;
	/*内容区通过margin挤压*/
	margin-left: 200px;
	margin-right: 200px;
}

.right {
	width: 200px;
	min-height: 600px;
	background-color: coral;

	position: absolute;
	right: 0;
	top: 0;
}

运行实例 »

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

绝对定位左右边栏的位置在靠着和靠右,然后使用margin将左右边栏的宽度挤压出内容区

浮动实现三列布局CSS代码

实例

.container {
	width: 1000px;
	margin: 0 auto;
}

.header,.footer {
	height: 60px;
	background-color: lightgray;
}

.main {
	background-color: lightseagreen;
	margin: 5px auto;

	overflow: hidden;
}

.left {
	width: 200px;
	min-height: 600px;
	background-color: lightblue;

	float: left;
}

.content {
	min-height: 600px;
	background-color: lightcoral;

	width: 600px;
	float: left;
}

.right {
	width: 200px;
	min-height: 600px;
	background-color: coral;

	float: right;
}

运行实例 »

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

浮动每个块的位置,清除块级元素的换行,然后将元素放在一行,需要计算每个块的占据宽度的比例


两种方法好像都挺简单的

ps. 练习绝对定位之遮罩的时候,使用fixed定位一个窗口,选用的是一张图片,后来img的父级元素比img元素设置的高度多了4px,,,未找到为什么

解决办法:img添加display:block

                 或者img的父元素添加font-size:0

                 或者父级元素添加display:inline-flex

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议