整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

HTML解决浮动塌陷的方法

HTML解决浮动塌陷的方法

么是浮动塌陷?

当子元素设置浮动时,父元素中所有孩子盒子都是float,则父容器的高度为0。

1.在父亲盒子中的最下边添加一个空div盒子,并设置clear为相应的值,如果不清除塌陷,那么父元素高度为0,给ul设置高度就没有效果。

clear常见取值如下:

left:清除左侧浮动引起的塌陷;

right:清除右侧浮动引起的塌陷;

both:清除左右两侧浮动引起的塌陷。

2.

天小编为大家介绍五种css样式布局以及内服源代码作为介绍,采用的方式是行内级样式(就是将css样式代码与html写在一起)

已知布局元素的高度,写出三栏布局,要求左栏、右栏宽度各为300px,中间自适应。

一、浮动布局

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>浮动布局</title>

<style type="text/css">

.wrap1 div{

min-height: 200px;

}

.wrap1 .left{

float: left;

width: 300px;

background: red;

}

.wrap1 .right{

float: right;

width: 300px;

background: blue;

}

.wrap1 .center{

background: pink;

}

</style>

</head>

<body>

<div class="wrap1">

<div class="left"></div>

<div class="right"></div>

<div class="center">

浮动布局

</div>

</div>

</body>

</html>

浮动布局的兼容性比较好,但是浮动带来的影响比较多,页面宽度不够的时候会影响布局。

二、绝对定位布局

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>绝对定位布局</title>

<style type="text/css">

.wrap2 div{

position: absolute;

min-height: 200px;

}

.wrap2 .left{

left: 0;

width: 300px;

background: red;

}

.wrap2 .right{

right: 0;

width: 300px;

background: blue;

}

.wrap2 .center{

left: 300px;

right: 300px;

background: pink;

}

</style>

</head>

<body>

<div class="wrap2 wrap">

<div class="left"></div>

<div class="center">

绝对定位布局

</div>

<div class="right"></div>

</div>

</body>

</html>

绝对定位布局快捷,但是有效性比较差,因为脱离了文档流。

三、flex布局

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>flex布局</title>

<style type="text/css">

.wrap3{

display: flex;

min-height: 200px;

}

.wrap3 .left{

flex-basis: 300px;

background: red;

}

.wrap3 .right{

flex-basis: 300px;

background: blue;

}

.wrap3 .center{

flex: 1;

background: pink;

}

</style>

</head>

<body>

<div class="wrap3 wrap">

<div class="left"></div>

<div class="center">

flex布局

</div>

<div class="right"></div>

</div>

</body>

</html>

自适应好,高度能够自动撑开

四、table-cell表格布局

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>table-cell表格布局</title>

<style type="text/css">

.wrap4{

display: table;

width: 100%;

height: 200px;

}

.wrap4>div{

display: table-cell;

}

.wrap4 .left{

width: 300px;

background: red;

}

.wrap4 .right{

width: 300px;

background: blue;

}

.wrap4 .center{

background: pink;

}

</style>

</head>

<body>

<div class="wrap4 wrap">

<div class="left"></div>

<div class="center">

表格布局

</div>

<div class="right"></div>

</div>

</body>

</html>

兼容性好,但是有时候不能固定高度,因为会被内容撑高。

五、网格布局

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>网格布局</title>

<style type="text/css">

.wrap5{

display: grid;

width: 100%;

grid-template-rows: 200px;

grid-template-columns: 300px auto 300px;

}

.wrap5 .left{

background: red;

}

.wrap5 .right{

background: blue;

}

.wrap5 .center{

background: pink;

}

</style>

</head>

<body>

<div class="wrap5 wrap">

<div class="left"></div>

<div class="center">

网格布局

</div>

<div class="right"></div>

</div>

</body>

</html>

希望大家可以一直关注我,支持我!感谢!!!

篇文章我们说了元素的浮动,本篇文章主要介绍下css浮动带来的影响,以及如何清除浮动。

细心的人可能发现了,在我们上篇文章写的导航条中存在一个问题,那就是使用了float之后,父级盒子的高度变为0了。我们来写一个例子来看一下,创建一个父级div,并设置border属性,然后下边创建两个子元素span,并设置浮动。具体代码如下所示:

由上图可以看出,在给span添加了float之后,父级元素div的高度就变成了0。我们有以下几种方式来解决这个问题

(1)给父级元素单独定义高度(height)

原理:如果父级元素没有定义高度,父元素的高度完全由子元素撑开时,父级div手动定义height,就解决了父级div无法自动获取到高度的问题。

优点:简单、代码少、容易掌握。

缺点:只适合高度固定的布局,要给出精确的高度,如果高度和父级div不一样时,会产生问题。对于响应式布局会有很大影响。

(2)在标签结尾处加空div标签 clear:both

原理:添加一个空div,利用css提高的clear:both清除浮动,让父级div能自动获取到高度。

优点:简单、代码少、浏览器支持好、不容易出现怪问题

缺点:不少初学者不理解原理;如果页面浮动布局多,就要增加很多空div,不利于页面的优化。

(3)父级div定义 伪类:after 和 zoom

原理:元素生成伪类的作用和效果相当于方法2中的原理,但是IE8以上和非IE浏览器才支持:after,zoom(IE转有属性)可解决ie6,ie7浮动问题

优点:浏览器支持好、不容易出现怪问题,写法是固定的,不理解也可以直接复制使用;(小编大力推荐使用此种方法,简单便捷,只需添加一个class即可解决问题)

缺点:css代码多、不少初学者不理解原理,要两句代码结合使用才能让主流浏览器都支持。

(4)父级div定义 overflow:hidden

优点:简单、代码少、浏览器支持好

缺点:不能和position配合使用,因为超出的尺寸的会被隐藏。(不建议使用此种方式,可能会影响页面元素布局)

好了,本篇文章就给大家说到这里,大家自己下来可以这几种方式都试一试,自己感觉下哪种更适合自己,小编一直使用的是第3种方式。


每日金句:这次本来可以咸鱼翻身的,没想到粘锅了。喜欢我的文章的小伙伴记得关注一下哦,每天将为你更新最新知识。