Сохранение рамок, когда текст больше, чем ожидалось - PullRequest
2 голосов
/ 17 июня 2011

На следующей HTML-странице (также предоставленной по адресу: http://pastehtml.com/view/axetf58is.html) одна из светло-голубых рамок в первой половине страницы над розовыми рамками заканчивается и оставляет много места из-за дополнительного текста впервый блок. Фактический и ожидаемый макет страницы: http://pastehtml.com/view/axetwro10.html Как мне убедиться, что все поля правильно лежат в сетке.

Вот разметка HTML из первой ссылки, котораядоставляет мне проблемы.

<html>
    <head>
        <title>Page 7</title>

        <style type="text/css">
            body {
                width: 1000px;
                margin-left: auto;
                margin-right: auto;
            }

            #header {
                height: 200px;
                margin: 2px;
                margin-bottom: 10px;
                font-family: Arial,Helvetica,sans-serif;
                font-size: XX-large;
            }

            #first_half {
                min-width: 500px;
                min-height: 500px;
                margin-bottom: 20px;
                overflow: hidden;
            }

            #first_half div.summaries_box {
                float: left;
                margin-right: 10px
            }

            #para_right {
                float: right;
                width: 350px;
                background-color: gray;
            }

            #second_half {
                clear: both;
            }

            #second_half div.summaries_box {
                float: left;
                margin-left: auto;
                margin-right: auto;
                margin-top: 20px;
            }

            div.summary {
                width: 260px;
                margin: 5px;
                float: left;
                background: lightblue;
            }

            h3.summary_header {
                font-weight: bold;
                font-variant: small-caps;
            }

            #snippets_horizontal {
                width: 90%;
                margin-left: auto;
                margin-right: auto;
                overflow: hidden;
            }

            #snippets_horizontal .snippet {
                float: left;
                width: 45%;
                margin-right: 5%;
                font-size: small;
                background-color: lightpink;
            }
        </style>
    </head>

    <body>
        <div id="header">
            <p>Lorem ipsum dolor sit amet</p>
        </div>

        <div id="first_half">
            <div class="summaries_box" style="width: 600px;">
                <div class="summary">
                    <h3 class="summary_header">Lorem ipsum dolor sit amet</h3>
                    <ul class="summary_list">
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                    </ul>
                </div>

                <div class="summary">
                    <h3 class="summary_header">Lorem ipsum dolor sit amet</h3>
                    <ul class="summary_list">
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                    </ul>
                </div>

                <div class="summary">
                    <h3 class="summary_header">Lorem ipsum dolor sit amet</h3>
                    <ul class="summary_list">
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                    </ul>
                </div>

                <div class="summary">
                    <h3 class="summary_header">Lorem ipsum dolor sit amet</h3>
                    <ul class="summary_list">
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                    </ul>
                </div>
            </div>

            <div id="para_right" class="para">
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
                incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
                exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
                irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
                pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
                deserunt mollit anim id est laborum.
                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
                incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
                exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
                irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
                pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
                deserunt mollit anim id est laborum.</p>
            </div>
        </div>

        <div id="second_half">
            <div id="snippets_horizontal">
                <div class ="snippet">
                    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
                        incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud</p>
                </div>

                <div class ="snippet">
                    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
                        incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud</p>
                </div>
            </div>

            <div class="summaries_box" style="clear: both;">
                <div class="summary">
                    <h3 class="summary_header">Lorem ipsum dolor sit amet</h3>
                    <ul class="summary_list">
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                    </ul>
                </div>

                <div class="summary">
                    <h3 class="summary_header">Lorem ipsum dolor sit amet</h3>
                    <ul class="summary_list">
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                    </ul>
                </div>

                <div class="summary">
                    <h3 class="summary_header">Lorem ipsum dolor sit amet</h3>
                    <ul class="summary_list">
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                        <li class="summary_title_snip"><p>Lorem ipsum dolor sit amet</p></li>
                    </ul>
                </div>
            </div>
        </div>

    </body>
</html>

Ответы [ 2 ]

0 голосов
/ 05 июня 2014

Если вы не хотите использовать фиксированную высоту с overflow: auto, как рекомендует Капа, вы можете использовать display: inline-block и свойство вертикального выравнивания.

Ссылка: Почему вы должны использовать Inline-Блок при позиционировании элементов

0 голосов
/ 17 июня 2011

Присвойте ему фиксированную высоту и скажите браузеру, чтобы он вводил полосу прокрутки, когда контента слишком много.

div.summary {
    height: 200px;
    overflow: auto;
}

jsFiddle Demo

Ваш макет ломается из-за характеристик поплавков. В этой ситуации Box 3 попытается переместиться на самое раннее возможное место установки, и поскольку Box 1 выше, чем Box 2, у него будет некоторое свободное место рядом с ним. Блок 3 пытается занять его, не оставляя достаточно места для блока 4 (который, как вы думаете, является блоком 3), поэтому он попадает в следующий ряд. Вы также можете попробовать очистить плавающие поля в блоке 3, чтобы он всегда переходил к следующему ряду (в зависимости от того, насколько фиксирован ваш макет, это также может быть хорошим решением).

...