Проблема с переполнением содержимого Div

#jquery #html #css

#jquery #HTML #css

Вопрос:

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

HTML:

         <div style="padding:25px">
                              <? $pieces = explode("|",$row['comments']); foreach ($pieces as $comment) { $comment = explode("~",$comment); ?>
                                <div class="commentdiv" style="padding:10px;border-radius: 5px; position:relative; float:left; width:100%; margin-bottom:25px; background-color:#FFF;"> 
                                    <div class="commentcover" style="clear:both">Written by <i><? echo $comment[1]; ?></i> on <b><? echo $comment[2]; ?></b></div>
                                    <div class="commentholder" style="clear:both"><? echo $comment[0]; ?></div>
                                    <div style="clear:both"></div>
                                </div>
                              <? } ?>
        </div>
  

CSS:

 .commentcover {
    position: absolute;
    top: 0;
    left: 5%;
    width: 90%;
    height: 90%;
    z-index: 500;

    padding:10px;
    background-color: #fff;
    opacity: 0;
    filter:progid:DXImageTransform.Microsoft.BasicImage(opacity=0);
    border-radius: 5px;
    text-align:center
}

.commentholder {
    position:absolute; top:10px; left:5%; z-index:400; width:90%;
}
  

Я довольно долго играл с этим без особого успеха .. и я не хочу, чтобы там были полосы прокрутки :/

Вот ссылка на то, над чем я работаю — запись в таблице расширена, чтобы показать несколько отдельных комментариев. Наведение курсора мыши приводит к тому, что закрывающий div исчезает над комментарием с указанием даты и автора комментария. Просто откройте верхнюю строку таблицы и наведите курсор мыши на комментарии, чтобы увидеть, о чем я говорю (конечно, не работает в IE). Прямо сейчас поля комментариев имеют заданную высоту, но это не идеальное решение. Вы можете видеть, что самый длинный комментарий уже немного переполнен.

Что вы, ребята, думаете?

Комментарии:

1. Вам нужна позиция: абсолютная для всех divs?

2. Я дал им абсолютное свойство, чтобы перекрывать их.. Я открыт и для любых других методов — прямо сейчас я просто использую все, что работает, ха-ха

3. итак, какой эффект тебе нужен, аккордеон? когда вы нажимаете на div.commentcover, чтобы развернуть его пару div.commentholder?

4. взаимосвязь между двумя разделами заключается в том, что при наведении курсора мыши commentcover появляется поверх commentholder, как я демонстрирую в верхней записи на изображении, на которое я ссылался (вы просто не видите мышь на изображении). Вся функциональность есть … теперь это просто проблемы с компоновкой в отношении переполненного текста внизу.

Ответ №1:

Предоставление абсолютной позиции выводит владельца комментария из обычного потока документа. Таким образом, commentdiv притворяется, что его там нет, поэтому текст «переполняет» содержащий commentdiv.

абсолютный

Элемент с position: absolute вынимается из обычного потока страницы и позиционируется в нужных координатах относительно содержащего его блока.

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

ссылка: http://www.quirksmode.org/css/position.html

Редактировать:

Я не совсем уверен, какого перекрытия вы пытаетесь достичь, но этот CSS установит commentcover поверх commentholder. Я удалил непрозрачность: 0, чтобы показать, как это будет выглядеть. И я оставил другие стили как можно ближе к оригиналу.

 .commentdiv {
    padding:10px;
    border-radius: 5px;
    float:left; /* because the children are floated, floating the parent so height changes */
    width:100%; 
    margin-bottom:25px; 
    background-color:#FFF;
}

.commentcover {
    position:relative; /* so z-index still works */
    width: 90%;
    margin:0 auto;
    z-index: 500;
    padding:10px;
    background-color: #fff;
    border-radius: 5px;
    text-align:center;
}

.commentholder {
    position:relative; /* so z-index works */
    float:left;
    z-index:400; 
    width:90%;
    margin-top:-2em;
}
  

Комментарии:

1. спасибо за ваш ответ, я подозревал, что это может быть так. Теперь, есть ли способ либо перекрыть эти разделы без абсолютного позиционирования, либо остановить переполнение содержимого div абсолютным позиционированием?

2. добавлен CSS к исходному ответу. Я считаю, что это тот эффект, которого вы пытаетесь достичь. Хотя, исходя из рисунка, я немного не понимаю, какие элементы макета, по вашему мнению, работают или не работают. Надеюсь, это поможет.

3. вот ссылка, чтобы вы получили лучшее представление о том, что происходит . Нажмите на , чтобы переключить верхнюю запись, а затем наведите курсор мыши на комментарии. Извините за уродливый стиль — все еще играю с этим. Кроме того, я сомневаюсь, что это работает на чем-либо, кроме FF 7 прямо сейчас. Я попробовал ваш стиль, но затем обнаружил, что commentcover больше не соответствует размеру commentholder и исчезает только однострочная часть гораздо большего брата div, если вы понимаете, о чем я говорю.