html - 初学css,遇到一个布局的小问题?

查看:101
本文介绍了html - 初学css,遇到一个布局的小问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我自己练习一个小页面,使用div布局,但是在页面主体内容的白色背景没有完全显示出来,下边的文字部分的背景颜色应该也是白色才对,请帮忙看看什么原因,谢谢。注:底部的div是和上边的header和main分离的,这样就不会出现main文字部分的白色背景,但是如果我把底部的div放在main内部class属性为right的div下边时,就会出现白色背景。


<!doctype html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="Generator" content="EditPlus®">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">

    <title>test</title>

    <style type="text/css">
        body {margin:0;padding:0;font-size:14px;background:#9acd32;}

        /*头部*/
        .header {width:100%;background:black;height:80px;}
        .head {width:700px;margin:0 auto 0;height:80px;}
        .header h1 {float:left;height:80px;line-height:80px;margin:0px;color:#9acd32;}
        .header ul {list-style:none;float:right;height:80px;line-height:80px;margin:0px;}
        .header ul li {float:left;padding:0 10px;}
        .header a {text-decoration:none;color:white;}
        .header a:hover {text-decoration:underline;color:red;}

        /*主体*/
        .main {clear:both;margin:10px auto 0;width:680px;padding:10px 10px 0 10px;background:white;}
        .top {background:url("img/12.png");width:680px;height:150px;margin:0 0 10px 0;}
        .top h2 {color:#9acd32;height:150px;line-height:150px;margin:0;}
        .left {width:460px;float:left;margin:0 10px 0 0;}
        .left p {text-indent:2em;line-height:1.7em;}
        .left h3 {border-bottom:1px solid #9acd32;padding-bottom:5px;}
        .right {width:200px;float:left;margin:0 0 0 10px;}
        .sidebar {width:200px;height:215.375px;}
        .sidebar h3 {border-bottom:1px solid #9acd32;padding-bottom:5px;}
        .sidebar ul {list-style:none;margin:0px;padding:0px;}
        .sidebar ul li {padding:5px 0;}
        .sidebar p {text-align:right;}
        .sidebar a {text-decoration:none;color:#7e7e7e;}
        .sidebar a:hover {text-decoration:underline;color:red;}
        .searchin {width:100px;height:20px;}

        /*底部*/
        .footer {clear:both;background:#7e7e7e;width:700px;height:50px;margin:0 auto 0;}
        .footer p {margin:0px;height:80px;line-height:80px;text-align:center;color:#fff;}
    </style>
</head>

<body>
    <!--页面头部部分-->
    <div class="header">
        <div class="head">
            <h1>我的博客</h1>
            <ul>
                <li><a href="">留言本</a></li>
                <li><a href="">友情链接</a></li>
                <li><a href="">关于自己</a></li>
                <li><a href="">我的日记</a></li>
                <li><a href="">首页</a></li>
            </ul>
        </div>
    </div>
    
    <!--页面主体内容部分-->
    <div class="main">
        <div class="top">
            <h2>欢迎来到我的博客</h2>
        </div>

        <div class="left">
            <div>
                <h3>中新网</h3>
                <p>2017年度国家公务员考试报名将截止,截至23日的数据显示,报名过审人数已超百万大关。本次国考报名的最热岗位已基本锁定为民盟中央的一个职位,竞争比近八千选一,不过,目前仍有300余个职位零报考。</p>
                <p>截至23日16时30分,这一仅计划招录1人的职位,报名过审人数已有7727人,竞争程度即将达到八千选一,遥遥领先于最热榜排名第二的岗位(1261:1)。</p>
            </div>

            <div>
                <h3>中新网</h3>
                <p>2017年度国家公务员考试报名将截止,截至23日的数据显示,报名过审人数已超百万大关。本次国考报名的最热岗位已基本锁定为民盟中央的一个职位,竞争比近八千选一,不过,目前仍有300余个职位零报考。</p>
                <p>截至23日16时30分,这一仅计划招录1人的职位,报名过审人数已有7727人,竞争程度即将达到八千选一,遥遥领先于最热榜排名第二的岗位(1261:1)。</p>
            </div>

            <div>
                <h3>中新网</h3>
                <p>2017年度国家公务员考试报名将截止,截至23日的数据显示,报名过审人数已超百万大关。本次国考报名的最热岗位已基本锁定为民盟中央的一个职位,竞争比近八千选一,不过,目前仍有300余个职位零报考。</p>
                <p>截至23日16时30分,这一仅计划招录1人的职位,报名过审人数已有7727人,竞争程度即将达到八千选一,遥遥领先于最热榜排名第二的岗位(1261:1)。</p>
            </div>
        </div>

        <div class="right">
            <div class="sidebar">
                <h3>文章列表</h3>
                <ul>
                    <li><a href="">中新网</a></li>
                    <li><a href="">中新网</a></li>
                    <li><a href="">中新网</a></li>
                    <li><a href="">中新网</a></li>
                    <li><a href="">中新网</a></li>
                </ul>
                <p><a href="">更多>></a></p>
            </div>
            <div class="sidebar">
                <h3>友情链接</h3>
                <ul>
                    <li><a href="">腾讯</a></li>
                    <li><a href="">百度</a></li>
                    <li><a href="">阿里</a></li>
                    <li><a href="">搜狐</a></li>
                    <li><a href="">新浪</a></li>
                </ul>
                <p><a href="">更多>></a></p>
            </div>

            <div class="sidebar">
                <h3>搜索列表</h3>
                <form method="post" action="">
                    <input type="text" name="search" class="searchin">
                    <input type="submit" name="sub" value="search">
                </form>
            </div>
        </div>
    </div>
    
    <!--页面底部部分-->
    <div class="footer">
        <p>&copy;我的博客</p>
    </div>
</body>

</html>

解决方案

float的元素脱离正常文本流,不计入父元素的高宽
也就是说,就算你给left/right设置了高宽,他的父元素main只承认top的高宽。
所以导致背景的白色没有按照你的想法把整个内容包裹住。
解决办法楼上已经给了一个,用::after伪类来撑开。
或者你计算好top+left+right的高度宽度,给main设置。
tips: 可以考虑采用min-height/width的方式来限定最小高度/宽度

这篇关于html - 初学css,遇到一个布局的小问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆