【发布时间】:2022-02-11 13:06:20
【问题描述】:
期望的结果:我有三列。我需要它们都具有相同的宽度,并且文本和按钮在所有三个中都处于同一水平。
问题:根据字数,当文本调整大小时,列会变宽,按钮开始跳跃,并且所有三个文本都在不同的点上调整大小。我需要防止这种情况。我怎样才能做到这一点?
HTML:
<section class="sub-offer">
<div class="offer-container">
<div class="offer-up">
<h2>Lorem, ipsum.</h2>
<img src="https://via.placeholder.com/150x150.png/09f/fff" alt="" />
</div>
<div class="offer-down">
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minus a
rerum sapiente odit porro obcaecati fugit, maxime modi veritatis
quis!
</p>
</div>
<div class="more-btn">
<a href="#">Lorem, ipsum.</a>
</div>
</div>
<div class="offer-container">
<div class="offer-up">
<h2>Lorem, ipsum.</h2>
<img src="https://via.placeholder.com/150x150.png/09f/fff" alt="" />
</div>
<div class="offer-down">
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Excepturi
perspiciatis voluptas qui iste, voluptatem atque ab rerum illum quia
incidunt odio?
</p>
</div>
<div class="more-btn">
<a href="#">Lorem, ipsum.</a>
</div>
</div>
<div class="offer-container">
<div class="offer-up">
<h2>Lorem, ipsum.</h2>
<img src="https://via.placeholder.com/150x150.png/09f/fff" alt="" />
</div>
<div class="offer-down">
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Beatae
vitae aut fugit dicta repellendus dolorem, quam, accusamus hic nemo
ullam quod porro atque error?
</p>
</div>
<div class="more-btn">
<a href="#">Lorem, ipsum.</a>
</div>
</div>
</section>
CSS:
.sub-offer {
text-align: center;
display: flex;
position: relative;
.offer-container {
background: linear-gradient(to bottom right, #2e2e3b, #0f1519);
}
h2 {
font-family: 'Playfair Display', serif;
font-size: 15px;
position: absolute;
margin-left: auto;
margin-right: auto;
margin-top: 4.3em;
width: 33%;
text-align: center;
}
p {
font-size: 12px;
margin-top: 2em;
padding: 0 0.5em 0 0.5em;
font-family: 'Montserrat', sans-serif;
}
a {
display: inline-block;
font-family: 'Montserrat', sans-serif;
font-size: 12px;
background: white;
margin: 3em 0 2.5em 0;
padding: 0.5em;
text-decoration: none;
color: black;
&:hover {
background: #e5e5e5;
}
}
}
它们现在的样子:
【问题讨论】:
-
CSS-Grid或Flexbox将为您解决。 CSS-Grid:section.sub-offer { display: grid; grid-template-columns: repeat(3, 1fr); }Flexbox:section.sub-offer { display: flex; } .offer-container { width: calc(100% / 3); } -
您能否再描述一下您所说的“文本...处于同一水平”是什么意思。您是说无论每个文本中有多少文本,无论图像的纵横比如何,文本都必须从相同的垂直水平开始。同样,所有按钮都必须处于同一垂直高度?
-
@tacoshy 很好,确实解决了宽度问题,谢谢!但是我还需要对齐里面的元素
-
@AHaworth 是的,我的意思是我不希望按钮位于不同的起点,因为它现在在图片上。现在他们跳转 bcs 文本有不同数量的单词。我需要将所有按钮放置在同一水平面上,因此它们看起来有点对齐。当他们调整大小时,我希望他们一起调整大小,仍然保持这种视觉对齐。希望这是有道理的......