zoukankan      html  css  js  c++  java
  • 清除浮动

    浮动元素引起的问题:

    当容器的高度为auto(没设置),容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局。

    
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <style>
            .news {
            background-colorgray;
            bordersolid 1px black;
            }

            .news img {
            floatleft;
            }

            .news p {
            floatright;
            }
        </style>
    </head>
    <body>
        <div class="news">
            <img src="1.jpg"/>
            <p>some text</p>
        </div>
    </body>
    </html>

    解决方法一:额外标签法,<div style="clear:both;"></div>,<br style="clear:both;"/>,<hr style="clear:both;"/>

    优点:简单,代码少,浏览器兼容性好。

    缺点:需要添加大量无语义的html元素,代码不够优雅,后期不容易维护。

    
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <style>
            .news {
            background-colorgray;
            bordersolid 1px black;
            }

            .news img {
            floatleft;
            }

            .news p {
            floatright;
            }
        </style>
    </head>
    <body>
        <div class="news">
            <img src="1.jpg"/>
            <p>some text</p>
            <div style="clear:both;"></div>
        </div>
    </body>
    </html>

    方法二用after伪元素(推荐)

    
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <style>
            .news {
            background-colorgray;
            bordersolid 1px black;
            }

            .news::after/*添加了一个看不见的空格"020"或点"."*/
            content"020"/*content:".";*/
            displayblock;
            height0;
            clearboth;
            visibilityhidden;
            }

            .news img {
            floatleft;
            }

            .news p {
            floatright;
            }
        </style>
    </head>
    <body>
        <div class="news">
            <img src="1.jpg"/>
            <p>some text</p>
        </div>
    </body>
    </html>

    方法三父元素添加overflow:hidden;或overflow:auto;(这种方法可行)

    
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <style>
            .news {
            background-colorgray;
            bordersolid 1px black;
            overflow:auto;/*hidden*/
            }

            .news img {
            floatleft;
            }

            .news p {
            floatright;
            }
        </style>
    </head>
    <body>
        <div class="news">
            <img src="1.jpg"/>
            <p>some text</p>
        </div>
    </body>
    </html>

    方法四父元素添加float属性。但是这样会使其整体浮动,影响布局,不推荐使用。

    
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>index</title>
        <style>
            .news {
            background-colorgray;
            bordersolid 1px black;
            floatleft;
            }

            .news img {
            floatleft;
            }

            .news p {
            floatright;
            }
        </style>
    </head>
    <body>
        <div class="news">
            <img src="1.jpg"/>
            <p>some text</p>
        </div>
    </body>
    </html>

     

    总共两种思路:

    1.方法一和二都是利用clear属性,禁止左/右侧存在浮动元素。

    2.方法三和四,对父元素处理,使之变成BFC。

  • 相关阅读:
    12个Web开发者应该掌握的Firebug技巧
    sql语句修改表结构
    从数据库中查询数据
    收发短信API
    日志12.03
    监听短信数据库变化
    漫谈C语言及如何学习C语言(转)
    阅读短信
    在src文件中寻找短信数据库表
    拦截短信示例1
  • 原文地址:https://www.cnblogs.com/shen076/p/6537461.html
Copyright © 2011-2022 走看看