#html #css #alignment #vertical-alignment
#HTML #css #выравнивание #выравнивание по вертикали
Вопрос:
Я пытаюсь выровнять эту серую дату внизу справа в этом контейнере. Она должна располагаться в нижней части контейнера, а не в конце текста. Я создал для этого CodePen:http://codepen.io/adrianTNT/pen/IciCH
Есть идеи? Вероятно, я могу сделать это с помощью неаккуратного кода, но я уверен, что должен быть чистый способ сделать это с помощью правильного CSS-кода.
body{
background-color:#0e91a1;
padding:10px;
}
.comment{
padding:10px;
margin:0px;
margin-bottom:10px;
background-color:#FFF;
border-radius:4px;
box-shadow: 1px 1px 1px #555;
min-height:50px;
}
.comment_text{
font-family:monospace, Consolas, "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", Monaco, "Courier New";
}
.comment_date{
font-family:monospace, Consolas, "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", Monaco, "Courier New";
color:#CCC;
display:inline-block;
float:right;
}
img.comment_avatar{
border-radius:4px;
position:relative;
display:inline;
margin-right:10px;
margin-bottom:5px;
}
.comment_name{
font-weight:bold;
}
Ответ №1:
Вот другое решение: http://jsfiddle.net/7kdar/2 /.
Во-первых, .comment
абзац расположен относительно:
.comment{
padding:10px;
margin:0px;
margin-bottom:10px;
background-color:#FFF;
border-radius:4px;
box-shadow: 1px 1px 1px #555;
min-height:50px;
position: relative;
}
Во-вторых, .comment_date
позиционируется абсолютно с использованием .comment
координат:
.comment_date{
font-family:monospace, Consolas, "Andale Mono", "Lucida Console",
"Lucida Sans Typewriter", Monaco, "Courier New";
color:#CCC;
position: absolute;
bottom: 10px;
right: 10px;
}
В-третьих, чтобы убедиться, что .comment_date
не перекрывается с .comment_text
, в конце .comment_date
добавляется новый невидимый элемент, размер которого равен наибольшей дате:
.comment_text:after {
content: "3 Jul 23:36";
color: white;
}
Комментарии:
1. Кажется, работает, но не правильнее ли
.comment_text:after
использоватьmargin-right:80px;
вместо.comment_text
? Кажется, работает в первых тестах, если вы согласны, то, возможно, вы сможете скорректировать ответ.2. Ну, во-первых,
span
s — это строки, поэтому вы не можете установитьmargin-right
на них..comment_text
отображение можно изменить наinline-block
, а затемmargin-right
можно установить. Эффект не так уж велик: jsfiddle.net/7kdar/5 , потому что весь текст перемещается влево. Вот почему я предложил добавить фрагмент невидимого текста с помощью:after
. Последний метод влияет только на последнюю строку.3. Кстати,
:after
фрагмент кода предназначался для реализации заполнения последней строки текста иcontent: "3 Jul 23:36";
предназначен для создания достаточного пространства. Для рабочей версии вы можете явно задать ширину:after
элемента. Вот скрипт, который устанавливает:after
содержимое какinline-block
и расширяет его до 110 пикселей. Возможно, вам потребуется скорректировать это число в соответствии с вашими целями. Это чище, чем использование текста даты. jsfiddle.net/7kdar/6 . Приветствия.
Ответ №2:
Как насчет того, чтобы просто использовать float: right;
для вашего .comment_date
span
лайка на http://codepen.io/anon/pen/HpBGd
РЕДАКТИРОВАТЬ: Также удалите display:inline-block
и измените <p>
на <div>
и comment_date
<span>
на div, как я сделал в приведенном выше codepen (обновленном), и я думаю, что это решит проблемы.
Комментарии:
1. само по себе это не помогает, потому что оно всплывает после текста комментария, а не в нижней части этого контейнера.
2. Другими словами, если в комментарии только одно слово, то элемент даты / времени все равно должен находиться в правом нижнем углу.
3. @DRD точно. Итак, если есть только очень короткий текст, то дата должна быть НЕ сверху, а справа внизу.