2

我有一个叫做contentdiv 的 div 里面有一个叫做sidebar. 我希望侧边栏伸展到contentdiv 的底部,但事实并非如此。这是相关的标记和CSS:

<div id="content">
    <div id="sidebar">
        <ul>
            <li><a href="/register">Register</a></li>
            <li><a href="/login">Login</a></li>
            <li><a href="/forgotpass">Forgotten password</a></li>
        </ul>
    </div>
    <form action="login" method="post" id="main-form">
        <p class="p-username">
            <label for="username">Username</label>
            <?php echo form_error('username'); ?>
            <input original-title="Alphanumeric characters, underscores and dashes" type="text" name="username" value="<?php echo set_value('username') ?>">
        </p>
        <p class="p-password">
            <label for="password">Password</label>
            <?php if(isset($error)): ?>
                <span class="error"><?php echo $error ?></span>
            <?php else: ?>
                <?php echo form_error('password'); ?>
            <?php endif; ?>
            <input original-title="Please choose a strong password" type="password" name="password">
        </p>
        <p>
            <input type="submit" class="primary-button" value="Log in">
        </p>
    </form>
    <div class="clear"></div>
</div>

CSS:

#content {
    width: 960px;
    border: 1px solid #e7e7e7;
    margin-top: 10px;
    border-radius: 5px;
}

#sidebar {
    width: 250px;
    background: #f5f8fa;
    float: left;
    height: 100%;
    border-right: 1px solid #e0eefb;
    box-shadow: inset -5px 0px 4px -2px #e8f1f9;
    margin-right: 10px;
}

#sidebar ul {
    margin:; 0;
    padding: 0;
    list-style-type: none;
}

#sidebar ul li {
    line-height: 40px;
}

#sidebar ul li a {
    display: block;
    width: inherit;
    padding-left: 20px;
    text-decoration: none;
    font-size: 16px;
}

还有一个 jsFiddle 链接:http: //jsfiddle.net/QXfH3/

如您所见,侧边栏在最后一个列表项之后停止。我希望它延伸到contentdiv 的底部。我认为添加height: 100%会做到这一点,但显然不是。height: inherit什么也不做。

谢谢。

4

4 回答 4

0

你错过了:

.clear {clear:both}

高度继承自父元素,因此您需要添加:

body, html {height:100% }
于 2012-06-20T19:14:50.657 回答
0

您必须为容器 div 指定一个高度,在本例中为 #content。如果不是高度 100% 没有意义。 http://jsfiddle.net/fS8TB/1/

于 2012-06-20T19:37:11.340 回答
0

您正在寻找的是固定流体布局。不幸的是,在没有指定绝对高度的情况下,纯 CSS 中的事情可能会有些棘手,因此 a<table>可能是您最好的选择。否则,看这里...

小提琴演示固定流体布局

于 2012-06-20T19:44:21.213 回答
0

实现此目的的一种方法是设置背景图像,#content用于#sidebar

#content {
    background: url(data:image/png;base64,[BASE64-DATA]) repeat-y; /* background-image for #sidebar */
}

删除background,border-rightbox-shadow#sidebar:

#sidebar {
    width: 250px;
    /* background: #f5f8fa; */
    float: left;
    height: 100%;
    /* border-right: 1px solid #e0eefb;
    box-shadow: inset -5px 0px 4px -2px #e8f1f9; */
    margin-right: 10px;
}

并将右列的全部内容包装到一个div(在本例中#right)并应用此样式:#right { display: inline-block }

这样,您就不必关心您在其中放入了多少内容;)

现场演示:http: //jsfiddle.net/QXfH3/5/

If you don't want to use images, to get this illusion, the answer from Alvaro seems to be the best way

于 2012-06-20T21:40:27.930 回答