HTML(5)列定位故障

时间:2011-02-04 14:10:46

标签: css html5

这应该是一个非常微不足道的问题,但它让我有点头疼。

我有一个html布局,总结了下面的相关代码。基本上我有<section><aside>作为主要内容和右手内容。我试图确保他们总是以这种方式行事,不管由边框,边距,填充等引起的任何类型的时髦边界。解决方案似乎只是将它们设置为具有绝对和相对定位。

这确实达到了我想要的结果,但我遇到了底层内容的问题。 <article>没有伸展到正确的高度。由于高度并不总是在代码时确定,因此不能选择设定高度。我的目标是,无论<article><section>窗格中的任何一个窗格变得多高,基础<aside>背景都会延伸到适应范围。有什么想法吗?

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title></title>

    <style type="text/css">
        .container { margin: 0px auto; width: 960px; position: relative }

        article { 
            overflow: hidden;  
            background-color: Black;  
            height: auto; 
        }

        section { 
            width: 675px; 
            position: relative; 
            left: 0px; 
            overflow: hidden; 
            margin: 10px; 
            height: 300px; 
            background-color: Aqua; 
        }
        aside {  
            width: 260px;  
            position: absolute; 
            right: 0px; 
            top: 0px; 
            overflow: hidden; 
            margin: 10px; 
            height: 500px; 
            background-color: Fuchsia; 
        }
    </style>
</head>
<body>
    <div class="container">
        <article>
            <section>
            </section>
            <aside>
            </aside>
        </article>
    </div>
</body>
</html>

1 个答案:

答案 0 :(得分:2)

根据要求,这是带有虚拟列的代码:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Faux column example</title>
    <meta charset="UTF-8" />
    <style type="text/css">
        html, body {
            height: 100%;
        }
        .container {
            margin-bottom: 2em;
        }
            article { 
                background: #000 url(http://imaginekitty.com/cssExamples/oog.gif) repeat-y; 
                    border: solid 10px #000; 
            display: block;
            margin: 0 auto;
                min-height: 100%; 
            width: 945px;
                    overflow: hidden;  
            }
                section { 
                    display: block;
                    float: left;
                    overflow: hidden; 
                    width: 668px; 
            }
            aside {  
                    float: left;
                    margin-left: 20px; 
                    overflow: hidden; 
                    width: 255px;  
            }
    </style>
</head>
<body>
    <div class="container">
    <p>There is no use of absolute or relative positioning here.</p>
        <article>
            <section>
        <p>asdf</p><p>asdf</p><p>asdf</p><p>asdf</p><p>asdf</p>
            </section>
            <aside><p>asdf</p>
            </aside>
        </article>
    </div>
    <div class="container">
        <article>
            <section>
        <p>asdf</p>
            </section>
            <aside><p>asdf</p><p>asdf</p><p>asdf</p><p>asdf</p><p>asdf</p><p>asdf</p><p>asdf</p>
            </aside>
        </article>
    </div>
</body>
</html>

我提到绝对定位的原因在我看来,在这种情况下不合适的是它从正常文档流中删除元素,这很可能会导致页面上其他元素出现问题。充其量,这是不必要的。在最坏的情况下,你会拔出头发试图找出问题。 :)

关于这个主题的好文章:http://www.tyssendesign.com.au/articles/css/absolute-positioning-pitfalls/