#html #css #flexbox
Вопрос:
У меня есть контейнер flex box с тремя внутренними элементами, я пытаюсь сделать средний элемент больше, чем остальные, с центрированным изображением. Действительно борется с этим. Вот код.
<!doctype html>
<html>
<head>
<title>Portfolio</title>
<style> .holdingcontainer0{width: 100%; display: flex; }
.internalcontainerL0{flex:1; background: #C1C1C1; padding: 30px; border-radius: 20px; font-size:20px; font-family: arial; margin:10px; color: #00486B;}
.internalcontainerM0{flex-grow:2; background: #00486B; padding:30px; border-radius: 20px; font-size: 20px; font-family: arial; margin: 10px; color: #00386B;}
.internalcontainerR0{flex:1; background: #C1C1C1; padding:30px; border-radius: 20px; font-size:20px;font-family: arial; margin: 10px; color: #00486B}
.title {font-size: 50px; text-align: center; background-color: #C1C1C1; border-radius: 20px; font-family:arial; color: #00486B;}
</style>
</head>
<h1 class="title">PORTFOLIO </h1>
<body>
<div class="holdingcontainer0">
<div class="internalcontainerL0"> <a href="#"><h1>OLD WORK</h1></a>
<img src="circ.png" alt="jojo" width="100" height="100"></div>
<div class="internalcontainerM0"> <a href="#"><h1>GAMES</h1></a>
<img src="joseph.jpg" alt="jojo" width="200" height="150"></div>
<div class="internalcontainerR0"> <a href="#"><h1>ABOUT ME</h1></a>
<img src="circ.png" alt="jojo" width="100" height="100"></div>
</div>
</div>
</body>
</html>
Комментарии:
1. это не имеет никакого отношения к вашей проблеме, но ваш код недействителен — у вас есть тег h1 между тегами головы и тела и дополнительный закрывающий div
2. Сделайте контейнер div также гибким элементом, а затем используйте либо
align-items: center
на нем, если вы хотите центрировать как ссылку, так и изображение, либо применяйтеalign-self: center
только к изображению.
Ответ №1:
Вы можете снова использовать атрибут flex внутри внутренних контейнеров. Затем выровняйте элементы по центру(по горизонтали и вертикали). Я использовал приведенный ниже класс для всех ваших внутренних контейнеров.
.sub-container{
display: flex;
flex-flow: column;
justify-content: center;
align-items: center;
}
<!doctype html>
<html>
<head>
<title>Portfolio</title>
<style> .holdingcontainer0{width: 100%; display: flex; }
.internalcontainerL0{flex:1; background: #C1C1C1; padding: 30px; border-radius: 20px; font-size:20px; font-family: arial; margin:10px; color: #00486B;}
.internalcontainerM0{ flex-grow:2; background: #00486B; padding:30px; border-radius: 20px; font-size: 20px; font-family: arial; margin: 10px; color: #00386B;}
.internalcontainerR0{flex:1; background: #C1C1C1; padding:30px; border-radius: 20px; font-size:20px;font-family: arial; margin: 10px; color: #00486B}
.title {font-size: 50px; text-align: center; background-color: #C1C1C1; border-radius: 20px; font-family:arial; color: #00486B;}
.sub-container{
display: flex;
flex-flow: column;
justify-content: center;
align-items: center;
}
</style>
</head>
<h1 class="title">PORTFOLIO </h1>
<body>
<div class="holdingcontainer0">
<div class=" sub-container internalcontainerL0"> <a href="#"><h1>OLD WORK</h1></a>
<img src="circ.png" alt="jojo" width="100" height="100"></div>
<div class="sub-container internalcontainerM0"> <a href="#"><h1>GAMES</h1></a>
<img src="joseph.jpg" alt="jojo" width="200" height="150"></div>
<div class="sub-container internalcontainerR0"> <a href="#"><h1>ABOUT ME</h1></a>
<img src="circ.png" alt="jojo" width="100" height="100"></div>
</div>
</div>
</body>
</html>
Комментарии:
1. Именно то, что я хотел, спасибо.
Ответ №2:
Это быстрое исправление вашего кода.
Информация о заголовке может использоваться агентами пользователей для автоматического построения оглавления документа. Так что не очень хорошая идея иметь только теги H1. Пожалуйста, ознакомьтесь с этой темой.
margin: auto
в этом случае это хороший выбор, но изображение должно иметь свой собственный контейнер.
.holdingcontainer0 {
width: 100%;
display: flex;
}
.internalcontainerL0 {
flex:1;
background: #C1C1C1;
padding: 30px;
border-radius: 20px;
font-size:20px;
font-family: arial;
margin:10px;
color: #00486B;
}
.internalcontainerM0 {
flex-grow:2;
background: #00486B;
padding:30px;
border-radius: 20px;
font-size: 20px;
font-family: arial;
margin: 10px;
color: #00386B;
}
.internalcontainerM0 > img {
display: flex;
margin: auto;
}
.internalcontainerR0 {
flex:1;
background: #C1C1C1;
padding:30px;
border-radius: 20px;
font-size:20px;
font-family: arial;
margin: 10px;
color: #00486B
}
.title {
font-size: 50px;
text-align: center;
background-color: #C1C1C1;
border-radius: 20px;
font-family:arial;
color: #00486B;
}
<body>
<h1 class="title">PORTFOLIO </h1>
<div class="holdingcontainer0">
<div class="internalcontainerL0">
<a href="#"><h2>OLD WORK</h2></a>
<img src="circ.png" alt="jojo" width="100" height="100">
</div>
<div class="internalcontainerM0">
<a href="#"><h2>GAMES</h2></a>
<img src="https://webkit.org/demos/srcset/image-src.png" alt="jojo" width="200" height="150" >
</div>
<div class="internalcontainerR0">
<a href="#"><h2>ABOUT ME</h2></a>
<img src="circ.png" alt="jojo" width="100" height="100">
</div>
</div>
</body>
Ответ №3:
Ваш код хорошо работает для меня. Ты просто делаешь две ошибки:-
1. Посмотрите на тег h1 с названием класса. Он находится за пределами метки тела.
2. Посмотрите на два закрывающих тега div (). Один тег является дополнительным.
Но даже с учетом этих ошибок это хорошо работает для меня. Средний элемент больше, чем два других, так как вы дали flex-grow:2 для среднего элемента. На рабочем столе он работает нормально.
Я думаю, вы говорите о более низких экранах устройств. Поэтому для этого вы можете использовать медиа-запросы. Или вы можете использовать bootstrap, чтобы легко сделать его ответственным.