html - 如何使体育场盒子的高度相互成比例?(HTML 和 CSS)
问题描述
第一排有两个体育场包厢,第二排有三个体育场包厢。理想情况下,所有框的高度将相对于它们各自的行彼此成比例。
第一行的前两个框的高度应该相同,第二行的三个框的高度应该相同。
根据盒子所在的行,使盒子的高度彼此成比例的最佳方法是什么?
我尝试在每个“p”标签之间添加中断语句以在文本中添加一个空格,但这会导致体育场框在调整屏幕大小或在平板电脑模式下查看时变得不均匀。
我还尝试在 .review-col 和 .review-col-2 类的 height 属性中使用 vh 测量值,但这会导致在调整屏幕大小时文本有时会超出体育场框的边界。
这是上下文的图片。
HTML
<html>
<div class="review-row">
<div class="review-col">
<div class="icon">
<img src="images/facials.PNG">
<div class="user-info">
<h4>Facials</h4>
</div>
</div>
<p>Custom Facials<br>
Custom Chemical Peel Facials<br>
Image O2 Lift Facial<br>
Galvanic Facial<br>
Circadia Oxygen RX Facial<br>
Dermaplaning Facial<br>
Microdermabrasion Facial<br>
Microneeding Facial<br>
Fox C Peel Facial<br>
Plamere Skin Tightening Facial<br>
Plasma Fusion Facial<br>
FCR Facial
</p>
</div>
<div class="review-col">
<div class="icon">
<img src="images/skin_solutions.PNG">
<div class="user-info">
<h4>Skin Care Solutions</h4>
</div>
</div>
<p>Skin Tags<br>
Cherry Angiomas<br>
Sebacious Hyperplasia<br>
Fibromas<br>
Seborrheic Keratosis<br>
Flat Hyperigmentation<br>
Acne Lesions<br>
Milias<br>
Closed Comedones<br>
Cappillaries
</p>
</div>
</div>
<div class="review-row-2">
<div class="review-col-2">
<div class="icon">
<img src="images/lash.PNG">
<div class="user-info">
<h4>Custom Lashes</h4>
</div>
</div>
<p>Full Set of Classic and Volume Lash Extension<br>
Lash Extension Fill<br>
Lash Extension Removal<br>
Lash Lift and Tint<br>
</p>
</div>
<div class="review-col-2">
<div class="icon">
<img src="images/microblading.PNG">
<div class="user-info">
<h4>Microblading</h4>
</div>
</div>
<p>Permanent Eyebrow Tattoo Techinque
</p>
</div>
<div class="review-col-2">
<div class="icon">
<img src="images/eyebrow_treatment.PNG">
<div class="user-info">
<h4>Eyebrow Treatment</h4>
</div>
</div>
<p>Eyebrow Waxing<br>
Eyebrow Tint
</p>
</div>
</div>
</section>
</html>
CSS
.review-row{
width: 90%; /*changes the width of the box*/
margin: auto;
display: flex;
justify-content: center;
align-items: flex-start;
flex-wrap: wrap;
}
.review-row-2{
width: 80%;
margin: auto;
display: flex;
justify-content: center;
align-items: flex-start;
flex-wrap: wrap;
}
.review-col{
flex-basis: 33%; /*36.3*/
padding: 20px;
margin-bottom: 10px;
margin-right: 10px;
border-radius: 30px;
box-shadow: 0 15px 20px 3px #00968814;
cursor: pointer;
transition: transform .5s;
height: 40%; /*47vh*/
background-color: #c3f7ef;
}
.review-col-2{
flex-basis: 28.2%; /*23.2%*/
padding: 15px;
margin-bottom: 10px;
margin-right: 10px;
border-radius: 30px;
box-shadow: 0 15px 20px 3px #00968814;
cursor: pointer;
transition: transform .5s;
height: 100%; /*30vh*/
background-color: #c3f7ef;
}
.review-col p{
font-size: 20px;
margin-left: 20px;
font-family: 'Open Sans', sans-serif;
}
.review-col-2 p{
font-size: 20px;
margin-left: 20px;
font-family: 'Open Sans', sans-serif;
}
.icon{
display: flex;
align-items: center;
margin: 20px 0;
text-align: center;
/*justify-content: center;*/ /*centers all title/header content*/
}
.icon img{
width: 70px;
margin-right: 20px;
border-radius: 30px; /* 3px for stadium effect*/
}
.user-info h4{
/*text-align: center;*/
font-family: 'Kaushan Script', cursive;
margin-bottom: 10px;
font-size: 20px;
}
.user-info small{
color:#009688;
}
.review-col:hover{
transform: translateY(-8px);
}
.review-col-2:hover{
transform: translateY(-8px);
}
.review-row read-more-button{
display: flex;
justify-content: center;
flex-direction: column;
}
@media screen and (max-width: 770px){
.review-row{
width: 100%;
justify-content: center;
}
.review-col{
flex-basis: 100%;
height: 100%;
}
.review-row-2{
width: 100%;
justify-content: center;
}
.review-col-2{
flex-basis: 100%;
height: 100%;
}
}
解决方案
您可以将行包装在 diveq-height
中,并为行定义flex: 1;
. 您需要从两个行类中删除高度才能使其生效。
.review-row {
width: 90%;
/*changes the width of the box*/
margin: auto;
display: flex;
justify-content: center;
align-items: flex-start;
flex-wrap: wrap;
}
.eq-height {
display: flex;
}
.review-col {
flex: 1;
}
.review-row-2 {
width: 80%;
margin: auto;
display: flex;
justify-content: center;
align-items: flex-start;
flex-wrap: wrap;
}
.review-col {
flex-basis: 33%;
/*36.3*/
padding: 20px;
margin-bottom: 10px;
margin-right: 10px;
border-radius: 30px;
box-shadow: 0 15px 20px 3px #00968814;
cursor: pointer;
transition: transform .5s;
background-color: #c3f7ef;
}
.review-col-2 {
flex-basis: 28.2%;
/*23.2%*/
padding: 15px;
margin-bottom: 10px;
margin-right: 10px;
border-radius: 30px;
box-shadow: 0 15px 20px 3px #00968814;
cursor: pointer;
transition: transform .5s;
background-color: #c3f7ef;
}
.review-col p {
font-size: 20px;
margin-left: 20px;
font-family: 'Open Sans', sans-serif;
}
.review-col-2 p {
font-size: 20px;
margin-left: 20px;
font-family: 'Open Sans', sans-serif;
}
.icon {
display: flex;
align-items: center;
margin: 20px 0;
text-align: center;
/*justify-content: center;*/
/*centers all title/header content*/
}
.icon img {
width: 70px;
margin-right: 20px;
border-radius: 30px;
/* 3px for stadium effect*/
}
.user-info h4 {
/*text-align: center;*/
font-family: 'Kaushan Script', cursive;
margin-bottom: 10px;
font-size: 20px;
}
.user-info small {
color: #009688;
}
.review-col:hover {
transform: translateY(-8px);
}
.review-col-2:hover {
transform: translateY(-8px);
}
.review-row read-more-button {
display: flex;
justify-content: center;
flex-direction: column;
}
@media screen and (max-width: 770px) {
.eq-height {
flex-direction: column;
flex-basis: 100%;
}
.review-row {
width: 100%;
justify-content: center;
}
.review-col {
flex-basis: 100%;
}
.review-row-2 {
width: 100%;
justify-content: center;
}
.review-col-2 {
flex-basis: 100%;
}
}
<div class="review-row">
<div class="eq-height">
<div class="review-col">
<div class="icon">
<img src="images/facials.PNG">
<div class="user-info">
<h4>Facials</h4>
</div>
</div>
<p>Custom Facials<br> Custom Chemical Peel Facials<br> Image O2 Lift Facial<br> Galvanic Facial<br> Circadia Oxygen RX Facial<br> Dermaplaning Facial<br> Microdermabrasion Facial<br> Microneeding Facial<br> Fox C Peel Facial<br> Plamere Skin Tightening
Facial
<br> Plasma Fusion Facial<br> FCR Facial
</p>
</div>
<div class="review-col">
<div class="icon">
<img src="images/skin_solutions.PNG">
<div class="user-info">
<h4>Skin Care Solutions</h4>
</div>
</div>
<p>Skin Tags<br> Cherry Angiomas<br> Sebacious Hyperplasia<br> Fibromas
<br> Seborrheic Keratosis<br> Flat Hyperigmentation<br> Acne Lesions<br> Milias
<br> Closed Comedones<br> Cappillaries
</p>
</div>
</div>
</div>
<div class="review-row-2">
<div class="eq-height">
<div class="review-col-2">
<div class="icon">
<img src="images/lash.PNG">
<div class="user-info">
<h4>Custom Lashes</h4>
</div>
</div>
<p>Full Set of Classic and Volume Lash Extension<br> Lash Extension Fill<br> Lash Extension Removal<br> Lash Lift and Tint<br>
</p>
</div>
<div class="review-col-2">
<div class="icon">
<img src="images/microblading.PNG">
<div class="user-info">
<h4>Microblading</h4>
</div>
</div>
<p>Permanent Eyebrow Tattoo Techinque
</p>
</div>
<div class="review-col-2">
<div class="icon">
<img src="images/eyebrow_treatment.PNG">
<div class="user-info">
<h4>Eyebrow Treatment</h4>
</div>
</div>
<p>Eyebrow Waxing<br> Eyebrow Tint
</p>
</div>
</div>
</div>
推荐阅读
- java - 在 JSP 中使用循环创建按钮,每个按钮给出不同的值
- react-navigation - 返回上一个屏幕时,反应导航立即关注输入模糊
- powerbi - 将月份四舍五入到正确的年份
- python - 在 Saleor 中编辑模型和扩展数据库结构
- android - 如何在android studio中检查用户是否在线
- html - 调整视差上的叠加层大小时出现问题
- laravel - laravel api 验证自定义消息
- css - 在 LESS 循环中为输出转义 et 字符 (&)
- javascript - 如何从一个组件单击按钮运行一个功能,并在反应原生的另一个组件上运行功能
- java - 使用 PDF Stamper 对具有数字签名的 PDF 进行密码保护