#html #css #nested #text-align
#HTML #css #вложенный #выравнивание текста
Вопрос:
Я пытаюсь создать адаптивный веб-сайт (не используя flex). Мне нужно создать заголовок в двух display:table
ячейках, и я бы хотел, чтобы он был центрирован. Основным div, содержащим таблицу, является text-align:justify
. Кажется, что я ничего не делаю, это не исправляет!
Я перепробовал почти все, что смог найти по этому вопросу: text-align:center;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
margin: 0 auto;
просто margin: 0 auto;
и многочисленные комбинации вышеперечисленного. Текст упорно остается в правом углу.
HTML
<div class="row">
<div class="novel novelleft">
<div class="noveltitle">TITLE</div>
stuff
</div>
<div class="novel novelright">
more stuff
</div>
</div>
CSS
.novel {
display: table;
width: 100%;
padding: 10px;
text-align: justify;
text-align-last:left;
background-color: #fff;
}
.novelleft {
width: 40%;
display: table-cell;
vertical-align: top;
padding-left: 13%;
background-color: #fff;
}
.novelright {
width: 60%;
display: table-cell;
vertical-align: middle;
padding-right: 13%;
background-color: #fff;
}
.noveltitle {
font-family: 'Cinzel', serif;
text-align: center;
}
Приношу свои извинения, если это неправильно, я здесь новичок. Спасибо за любую помощь!
Редактировать Вот что он делает
Что я хочу, чтобы это делало
Комментарии:
1. Я действительно не понимаю вашей цели. Можете ли вы включить изображение, чтобы показать, что вы хотите?
2. Есть ли какая-либо конкретная причина, по которой вы не используете flex или любые другие свойства отображения? Я не вижу смысла, почему ячейки должны быть display: table.
3. @AndyHoffman — добавил фотографии для вас
4. @Jason Я не уверен, что вы подразумеваете под «другими свойствами отображения». Отвечая на ваш вопрос о том, чтобы не использовать flex: а) Я очень плохо знаком с ним и все еще изучаю более базовые части CSS. б) Я пытаюсь сделать этот веб-сайт доступным для как можно большего числа людей. Я понимаю, что Flex … может быть, и не является передовым, но уж точно не поддерживается старыми браузерами. Хотя я могу ошибаться — это часто случается
c) Я использую их как
display: table
, чтобы поддерживать их одинаковый размер независимо от содержимого. Все остальное приводит к неравномерным столбцам…5. Имеющийся у вас код не выдает скриншот с надписью «Вот что он делает».
Ответ №1:
Если вы хотите использовать div
s для имитации таблицы, то пройдите с ним весь путь.
- Используйте
table-caption
для заголовка вашей таблицы - Левая и правая ячейки представляют собой группу, поэтому окружите обе ячейки
table-row
и этоtable-row
символомtable-row-group
.novel {
display: table;
width: 100%;
}
.novel-caption {
display: table-caption;
caption-side: top;
text-align: center;
font-family: 'Cinzel', serif;
}
.novel-row-group {
display: table-row-group;
}
.novel-row {
display: table-row;
}
.cell {
display: table-cell;
padding: 15px;
}
.novel-row-group {
display: table-row-group;
}
.novelleft {
background-color: #bfbfbf;
width: 50%;
}
.novelright {
background-color: #404040;
color: #fff;
}
* {
box-sizing: border-box;
}
<div class="novel">
<div class="novel-caption">
TITLE
</div>
<div class="novel-row-group">
<div class="novel-row">
<div class="novelleft cell">stuff</div>
<div class="novelright cell">more stuff</div>
</div>
</div>
</div>
Комментарии:
1. Это отлично работало в рамках моего сайта. Я позаимствовал у W3C для адаптивной таблицы, и, полагаю, она была неполной? В любом случае, большое вам спасибо!
Ответ №2:
Если вам нужна таблица с заголовком по центру, просто используйте таблицу с заголовком по центру.
.novel {
width: 100%;
padding: 10px;
background-color: #fff;
}
.novelleft {
width: 40%;
vertical-align: top;
padding-left: 13%;
background-color: #fff;
}
.novelright {
width: 60%;
vertical-align: middle;
padding-right: 13%;
background-color: #fff;
}
.noveltitle {
font-family: 'Cinzel', serif;
text-align: center;
}
<table class="novel">
<caption class="noveltitle">TITLE</caption>
<tr>
<td class="novelleft">stuff</td>
<td class="novelright">more stuff</td>
</tr>
</table>
Или, если вы предпочитаете не использовать элементы <table>, вы можете использовать use divs, но вам нужно сохранить правильную структуру таблицы:
.novel {
display: table;
width: 100%;
padding: 10px;
background-color: #fff;
}
.novelrow {
display: table-row;
}
.novelleft {
display: table-cell;
width: 40%;
vertical-align: top;
padding-left: 13%;
background-color: #fff;
}
.novelright {
display: table-cell;
width: 60%;
vertical-align: middle;
padding-right: 13%;
background-color: #fff;
}
.noveltitle {
display: table-caption;
font-family: 'Cinzel', serif;
text-align: center;
}
<div class="novel">
<div class="noveltitle">TITLE</div>
<div class="novelrow">
<div class="novelleft">stuff</div>
<div class="novelright">more stuff</div>
</div>
</div>
Ответ №3:
Хотя есть пара ответов, которые, очевидно, сработают, я бы предположил. Я все еще думаю, что вы должны быть открыты для использования flex, а затем обеспечить обратную совместимость с IE с помощью довольно простого CSS.
<div class="container">
<div class="title">
Centered Title Goal
</div>
<div class="items">
<div class="novel">
.novelLeft
</div>
<div class="novel">
.novelRight
<div>
.novelRight
</div>
</div>
</div>
</div>
CSS —
* {
box-sizing: border-box;
}
.container {
width: 100%;
border: solid 1px black;
}
.title {
width: 100%;
text-align: center;
}
.items {
width: 100%;
display: flex;
flex-direction: row;
}
.novel {
flex: 1;
display: inline-block;
width: 50%;
}
.novel:nth-child(1){
background:#404040;
}
.novel:nth-child(2){
background: #bfbfbf;
}
Это создаст flexbox, и в качестве запасного варианта IE, где свойство flex не работает, для novelLeft и novelRight будут установлены значения inline-block шириной 50%. Это намного чище, чем делать контуры старой таблицы. И, как вы можете видеть, дополнительный контент в novelRight также не имеет значения.