ホームページ  >  記事  >  ウェブフロントエンド  >  CSS 階層要素間のフロートをクリアするためのヒント

CSS 階層要素間のフロートをクリアするためのヒント

无忌哥哥
无忌哥哥オリジナル
2018-06-29 09:35:011461ブラウズ

如果让父元素包住浮动的子元素?主要有以下几种方法:

1:让父元素也一起浮动:经测试该方法可行,而且四周全部包住,非常严实.但是如果当前的子元素有多个父级的话,

那么每个父级元素都要设置浮动,甚至要一直写到6c04bd5ca3fcae76e30b72ad730ca86d,所以该方法pass。

2.给父元素设置溢出隐藏属性:同样也可实现要求,但这种方法有很多兼容性问题,大家课后可多打开几个浏览器测试

3.给当前的父元素中添加一个空的块元素,这个新元素只做一件事,清除它周围的浮动元素

经测试也能实现要求,这种方法是最简单最直观,而且没有任何兼容问题,但却有一个致命的问题,

那就是给当前的子元素列表中添加了一个无用的元素,当我们用js和php等脚本语言进行数据遍历的时候会非常麻烦

因为这个元素并不是我们需要的,必须单独的进行处理,那么有没有一种二全其美的方案:即保证兼容性,又不用添加新元素呢?

有,用我们之前学过的伪元素来解决。

4. 给父元素添加:after伪类,在后面添加一个空元素,直接设置它的属性即可;

<html>
<head>
<meta charset="UTF-8">
<title>7.层次元素之间的清除浮动的技巧</title>
<style type="text/css">
.parent {
background-color: lightskyblue;
border: 2px solid red;
/*让父元素一起浮动,让它包住浮动的子元素*/
/*float:left;*/
/*给父元素设置内容溢出隐藏功能*/
/*overflow: hidden;*/
}
.parent:after {
/*1.添加一个空元素*/
content: &#39;&#39;;
/*2.默认为行内元素,所以要转为块元素*/
display: block; 
/*3.直接清除二边的浮动*/
clear: both;
/*如果ie下显示有问题,可以加上*/
/*z-index: 1;*/
/*可能你看过有的地方是这样写的:*/
/*添加一个空格*/
/*content: &#39;\0020&#39;;*/
/*然后让这个空格高度为0,这样就根本不会显示出来*/
/*height: 0;*/
}
.child {
width: 200px;
height: 200px;
background-color: lightgreen;
/*设置提示文本的水平垂直居中*/
text-align: center;
line-height: 200px;
/*当前父元素没有声明宽高,它是由子元素的宽高撑起来的*/
/*下面我们将子元素进行浮动,你将会看到非常有意思的事情发生*/
float:left;
/*结果你会发现,子元素浮动之后,脱离了文档流,它与原来的父级元素就没有了关联,
所以父级直接压缩了,无法再包住子元素*/
}
.clear {
clear: both;
}
</style>
</head>
<body>
<div>
<div>子元素</div>
<!-- <div></div> -->
</div>
</body>
</html>

以上がCSS 階層要素間のフロートをクリアするためのヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。