<div> граница не охватывает все элементы div - PullRequest
1 голос
/ 18 февраля 2009

Я сейчас начинаю проектирование с правильной разметкой и организацией. и теперь у меня есть проблема с моей границей div. он не включает в себя все содержимое div.

это мой HTML-фрагмент:

  <div id="paneMiddle"> 
  <div id="subPaneLatestItems">
        <p id="latestItemsTitle">Latest Shop Items:</p>
        <div>
        <img src="img/flower1.jpg" />
        <span id="itemName">Ballpen</span>
        <br/><span id="itemPrice">Php 90.00</span>
        </div>
     </div></div>

и вот мой css:

div#paneMiddle>div{
/*All divs that are children of div#paneMiddle*/
width:590px;
margin:5px 5px 5px 5px;
position:relative;
border-color:#FFCC33;
border-style:solid;
border-width:thin;
position:relative;
}

почему это не работает? спасибо

Ответы [ 4 ]

6 голосов
/ 18 февраля 2009

Посмотрите, исправляет ли добавление класса clearfix в ваш div

http://www.webtoolkit.info/css-clearfix.html

1 голос
/ 18 февраля 2009

Всякий раз, когда у меня возникают подобные проблемы, я делаю минимальный самостоятельный пример для тестирования. Этот работает отлично, хотя я использовал местное изображение. Когда я уменьшаю ширину до 50 пикселей, изображение выходит за правую сторону границы, поэтому это может быть вашей проблемой. Что именно находится за границей в вашем случае?

Исходя из ваших дальнейших комментариев, которые вы плаваете: оставьте изображение div, ниже показано, в чем может быть ваша проблема. Если вы запустите этот код, вы увидите, что первый граничный div больше не включает изображение. Это проблема, которую вы видите?

<html>
    <head>
        <style type="text/css">
            div#x{
                float:left;
            }
            div#paneMiddle>div{
                /*All divs that are children of div#paneMiddle*/
                width:590px;
                margin:5px 5px 5px 5px;
                position:relative;
                border-color:#FFCC33;
                border-style:solid;
                border-width:thin;
                position:relative;
            }
        </style>
    </head>
    <body>
        <div id="paneMiddle"> 
            <div id="subPaneLatestItems">
                <p id="latestItemsTitle">Latest Shop Items:</p>
                <div id="x">
                    <img src="img/flower1.bmp" />
                    <span id="itemName">Ballpen</span>
                    <br/>
                    <span id="itemPrice">Php 90.00</span>
                </div>
            </div>
            <div id="subPaneLatestItems2">
                Hello
            </div>
        </div>
    </body>
</html>

Включает исправление cleardiv (показанное здесь) для решения проблемы:

<html>
    <head>
        <style type="text/css">
            .clearfix:after {
                content: ".";
                display: block;
                clear: both;
                visibility: hidden;
                line-height: 0;
                height: 0;
            }
            .clearfix {
                display: inline-block;
            }
            html[xmlns] .clearfix {
                display: block;
            }
            * html .clearfix {
                height: 1%;
            }
            div#x{
                float:left;
            }
            div#paneMiddle>div{
                /*All divs that are children of div#paneMiddle*/
                width:590px;
                margin:5px 5px 5px 5px;
                position:relative;
                border-color:#FFCC33;
                border-style:solid;
                border-width:thin;
                position:relative;
            }
        </style>
    </head>
    <body>
        <div id="paneMiddle"> 
            <div class="clearfix" id="subPaneLatestItems">
                <p id="latestItemsTitle">Latest Shop Items:</p>
                <div id="x">
                    <img src="img/flower1.bmp" />
                    <span id="itemName">Ballpen</span>
                    <br/>
                    <span id="itemPrice">Php 90.00</span>
                </div>
            </div>
            <div id="subPaneLatestItems2">
                Hello
            </div>
        </div>
    </body>
</html>
1 голос
/ 18 февраля 2009

Без дополнительной информации я могу только предположить, что комбинация flower1.jpg и другого содержимого шире, чем 590 пикселей. Когда вы указываете конкретную ширину для элемента в CSS, он будет придерживаться этой ширины, даже если его содержимое больше.

Кроме того, важно отметить, что> селектор прямого потомка не поддерживается в IE.

0 голосов
/ 19 февраля 2009

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

<img src="img/flower1.jpg" alt="Photo of a Daisy" title="This is a Daisy" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...