HTML-CSS(五十四)布局扩展

65 篇文章 3 订阅
30 篇文章 1 订阅

等高布局

功能:让在同一行里的元素高度一直保持一致。也就是说当其他元素一旦改变高度时,在同一列的高度也会跟着变化,并且所有元素高度都是一样的。因为所有元素都放在一列,可能采取float浮动了,首先大家会想着清除浮动
在这里插入图片描述

然后在将其中一个的高度设成100%,另外的高度自定义,这样就可以实现等高了。但其实不是这样的,即使你让高度存在,但是父元素的高度还是0。可以看下图
在这里插入图片描述

实现方式:margin+padding

当margin-bottom设置负值时,相当于下面的元素相同的值设置margin-top。
在这里插入图片描述
如果我们设置margin-bottom的值刚好是上元素的高度,那么下元素会直接覆盖掉上元素
在这里插入图片描述
能够从图中可以看出,一个盒子真正被内容撑开的高度,实际是元素的高度和元素设置的margin值。当元素设置的margin值为负值时,盒子的高度也会减少。
在这里插入图片描述
当margin-bottom的负值越小,并且小于盒子内所有元素的高度时,那么盒子的内容高度就为零了
在这里插入图片描述
但是这是如果给元素设置了相同数值并且为正值的padding-bottom值,这样就与margin-bottom抵消,那么盒子实际的高度就是content+padding-margin值。此时又因为padding和margin的值是一样的。这样盒子不就完全被内容撑开了吗?
然后我们再加一个外部盒子加个overflow:hidden。那么盒子内的高度就只剩内容了。你可能会说,但是我么本来盒子就是靠内容撑起的呀,为什么还要那么麻烦,但是我么现在需要的是,如果多个元素并排放在一个盒子当中,如何实现同等高度呢。这是就需要,我们将每个元素的margin-bottom和paddingbottom设置数值要设置很大。
在这里插入图片描述
当有另外一个元素进入到同一行时,实际上我们并不是改变元素的高度,而是让padding区域暴露出来而已
在这里插入图片描述

左右两侧固定,中间自适应

在这里插入图片描述

1.BFC方式

2.定位

3.浮动
4.flex弹性布局

双飞翼布局

浮动+margin
原理:利用浮动,让三者不占空间,然后利用浮动的前后顺序,让中间元素排在第一,将其宽度设置100%。此时第一元素就会占据整行。两侧元素就会被并排挤在第二行。利用margin-left让第二行的元素能够上去第一行的位置,那么给第二个元素设置margin-left:-100%因为中间元素浮动的原因,所以自然会挤到第一行的首部,给第三个元素设置margin-left:-200px(200px是第三个元素的宽度)。此时第三元素就会在第一行的末尾。这是就已经形成了全部元素排列在一行了。然后如何让中间元素内容不占据整行,而是在两侧元素中间。这是就可以让中间元素里面的子元素设置一个margin,刚好左右腾出两侧元素的位置。此时就形成双飞翼布局了

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			artical {
				width: 1200px;
				height: 200px;
			}
			.sectionA {
				float: left;
				width: 200px;
				height: 200px;
				background-color: pink;
				margin-left: -100%;
			}
			.sectionC {
				
				float: left;
				width: 200px;
				height: 200px;
				background-color: pink;
				margin-left: -200px;
			}
			.sectionB {
				float: left;
				width: 100%;
				height: 200px;
				
			}
			.sectionB p{
				width: 100%;
				margin: 0 200px;
				height: 100%;
				background-color: #0000FF;
			}
		</style>
	</head>
	<body>
		<artical>
			<section class="sectionB">
				<p>
					
				</p>
			</section>
			<section class="sectionA">

			</section>
			<section class="sectionC">

			</section>
		</artical>
	</body>
</html>


圣杯布局

float+margin+position
原理:与双飞翼的布局原理差不多一样,只不过我们这次改变的最大的父元素,让其设置margin,而不是在让中间元素的子元素设置margin了。然后让两侧元素使用定位去占据父元素设置margin之后让出的空位置。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			.box{
				height: 200px;
				margin: 0 200px;
				background-color: #0000FF;
					}
			.sectionA {
				position: relative;
				left: -200px;
				float: left;
				width: 200px;
				height: 200px;
				background-color: pink;
				margin-left: -100%;
			}
			.sectionC {
				position: relative;
				right: -200px;
				float: left;
				width: 200px;
				height: 200px;
				background-color: pink;
				margin-left: -200px;
			}
			.sectionB {
				
				float: left;
				width: 100%;
				
				height: 200px;
				
			}
	
		</style>
	</head>
	<body>
		<div class="box">
				<section class="sectionB">
					
				</section>
				<section class="sectionA">
			
				</section>
				<section class="sectionC">
			
				</section>
		</div>
		
		
	</body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值