CSS - Fill Page (horzonal) с помощью div - PullRequest
0 голосов
/ 04 декабря 2011

Я создаю веб-сайт, в котором основной фрейм контента должен охватывать всю ширину страницы и столько высоты, сколько необходимо, с минимальной высотой (для того, чтобы содержать плавающую «боковую панель»). Однако установка ширины элемента div на 100% не заполняет окно, оно переполняет его, создавая горизонтальную полосу прокрутки. Есть ли способ, чтобы div содержимого растягивался на всю ширину страницы и не более, без обрезки по бокам или снизу, как с настройками размера поля или переполнения?

Спасибо за ваше время, Тимоти С.
base.css

html, body {
    margin:0;
    padding:0;

    font-family: "Lucida Grande", Verdana;
    font-size: 0.9em;

    background-color:#4D714D;
    background-image:url("images/titlebar.png");
    background-attachment:fixed;
    background-repeat:no-repeat;
    background-position:0px 7px;
}

div.content
{
    position:relative;
    top: 150px;

    padding: 20px;

    margin-left: auto;
    margin-right: auto;

    width:100%;
    min-height:500px;

    background-color:#8BB88B;   
}

div.sidebar
{   
    float:right;

    position:relative;
    top:-20px;
    left:20px;

    width: 400px;
    height: 400px;

    background-color:#FFFFFF;   
}


пример страницы

<html>
    <head>
        <title>Login</title>
        <link type="text/css" href="base.css" rel="stylesheet" />       
    </head>

    <body>
        <div class="content">
            <div class="sidebar"></div>
            <form action="loginScript.php" method="post">
                <label>Username:</label>
                <input type="text" name="username" /> <br />
                <label>Password:</label>
                <input type="password" name="password" /> <br />
                <input type="submit" value="Login" name="login" />
            </form>
            <?php print($_GET['msg']) ?>
        </div>
    </body>
</html>

Ответы [ 3 ]

0 голосов
/ 04 декабря 2011

Дополнительный интервал исходит от отступа на div.content. Измените его на:

padding: 20px 0;

Также из относительно позиционированного div.sidebar. Избавиться от left:20px;

0 голосов
/ 04 декабря 2011

Описанный вами макет является поведением по умолчанию для элемента блока, такого как div.То, что он не отображается таким образом, означает, что вы переопределили значение по умолчанию.Действительно, виновником является width: 100%.Вы можете безопасно удалить это из своего CSS.

Ваш вопрос является прекрасным примером того, почему я использую минималистский подход к CSS.Применяйте стиль только тогда, когда вы уверены, что он вам нужен.Таким образом, когда ваша страница не отображается так, как вы ожидаете, у вас будет меньше отладки.

0 голосов
/ 04 декабря 2011

Ширина элемента не включает границы, поля и отступы.Таким образом, на самом деле ширина составляет 100% + все остальное (20 пикселей справа и 20 пикселей слева для заполнения и т. Д.).Ваше деление уже на уровне блока, и вы не видите, что вы удаляете этот статус, поэтому по умолчанию вы должны полностью удалить ширину как элемент уровня блока с уже расширением, чтобы заполнить как можно большую ширину (и будетне включая отступы и другие вещи).

Кроме того, если ваше разделение предназначено для расширения на всю ширину страницы, вам не нужно устанавливать левое и правое поля равными auto.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...