>웹 프론트엔드 >HTML 튜토리얼 >div+css浮动的解决方法_html/css_WEB-ITnose

div+css浮动的解决方法_html/css_WEB-ITnose

WBOY
WBOY원래의
2016-06-24 11:44:271105검색

  已知父div容器,父容器包含两个子div,在两个子div标签后面添加一个清除浮动(clear)的div标签,父div标签的内部(左右两边/*css5*/)浮动就清除了。

  如果有一个div容器

,包含了一个子容器
,子容器设置一个宽度、高度、背景色,如不设置内、外边距以及清除浮动clear、浮动float,此时子容器div默认居左。那么是否真的居左,我们设置一下float:left;发现设置了居左left,子容器的div产生了浮动,子容器div离大容器顶部有一定距离,然后我margin-top:10px, 子容器在原有的基础上向下移动了margin的距离,也就是说,浮动,不随margin padding边距影响。

    <body>        <div class="divcss5">            <div class="clear"></div>

        

        </div>     </body>    

  如果,我现在给子容器设置top:10px,看到的效果是不发生变化,也就是是说浮动不会随着top,left发生改变。当我给子容器设置相对位置position:relative;看到的效果是怎么样的呢?现在子容器的效果还是浮动的,但是当我分别设置margin-left:10px和 left:10px;看到子容器分别会随着margin-left和left发生改变相应的位置,同样margin-top和top都会发生变化。

  也就是说,当子容器设置浮动float,接着给子容器设置margin会有作用,设置left 、top是没有作用,只有给子容器设置相对位置的时候,不仅margin能起作用,left、top也能会起作用,那么是不是说left,top是在相对位置的时候才起作用呢?那么现在我们就做一个实验,我在子容器里把float:left;position:relative;都删掉,不会浮动,也不会有相对位置,然后写上top:10px;left:10px;相应的代码如下:.clear{width: 200px;background: #f2e;color:#030617;height: 20px;top:50px;left:10px;};结果是子容器根本没有移动过位置,所以,事实证明,left、top是在设置了相对位置position的时候才起作用。margin就是不管你设置position与不设置position都会起作用。

  继续上面的float浮动,如果现在给float设置inherit;设置继承浏览器的浮动属性,此时我们看到的是不浮动的,默认居左。同样的设置 none initial也不会有作用。只有子容器设置了浮动left和right,子容器才会出现浮动。

  下面,我们用一种其他的方法来清除浮动,HTML代码还是以上的代码,大容器的div的css代码还是上面的代码.divcss5{padding:10px 0;width: 100%; left: 50%;right: 50%;background: #007CB5;},
子容器的代码还是上面的代码:.clear{width: 200px;background: #f2e;color:#030617;height: 20px;float:left;},此时看到的是浮动的效果,子容器浮在大容器上面,同样的原理,我还是用清除浮动clear:both;我们可以用css伪元素:after,下面就是一个很简单的css代码,给父容器写css伪类,代码:.divcss5:after{content: "1";clear: both;display: block;},此时,我们看到的是,清除了大容器的浮动,并且在浏览器上能看到子容器被包含在了大容器内部。在浏览器上F12查看浏览器,可以看到after包含在了父容器内,所以,他相当于在给父容器加一个clear,只是少了一个div层,这个层被.divcss5:after实现了。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.