javascript - Flexbox 项目(隐藏和显示)修改我之前项目的对齐方式,我该怎么办?
问题描述
我有一个带有 display:flex 的 div,里面有 4 个项目,但最后一个项目是一个跨度,只有在按下按钮后才会显示,这个跨度以 display:none 开头。项目在 div 中垂直和水平居中。当我按下按钮时,跨度出现但改变了先前元素的位置。
正如你所看到的,前三个元素,当出现跨度时,它们向上和向左移动。
当 span 出现时,我想保持前 3 个元素的位置不变。我希望前三个元素像第一个图像一样居中,并且 span 出现在第三个元素下方但不移动其他元素。
我能做些什么?有什么建议么?
先感谢您。
HTML:
<div id="buy">
<p>Prezzo: 39,10 €</p>
<div id="quantityDiv"></div>
<button id="button0">Aggiungi al carrello</button>
<span id="messageAdd0"></span>
</div>
CSS:
#buy {
margin-left: auto;
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
}
#buy > * {
margin: 0 auto;
}
#buy span {
background: #24252A;
display: none;
}
按下按钮时,JS 只使用 hide() 和 show() 作为 span。
解决方案
由于您不能justify-self: end;
在不影响其他 flex 子元素的位置的情况下使用该特定元素 -
到目前为止,您可以做的最好的事情(除非出现更好的想法)是在父元素内部使用position:absolute
该元素:top:100%
position:relative
.product {
display: flex;
}
.buy {
position: relative; /* Add this one */
margin-left: auto;
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
}
.buy > * {
margin: 0 auto;
}
.buy > .messageAdd {
position: absolute;
top: 100%;
right: 0;
white-space: nowrap;
color: red;
}
<div class="product">
<h1>Prodotto 1</h1>
<div class="buy">
<p>Prezzo: 39,10 €</p>
<div class="quantityDiv"></div>
<button class="button" disabled>Aggiungi al carrello</button>
<span class="messageAdd">È stato raggiunto il limite di 5 biglietti!</span>
</div>
</div>
另外,不要使用 ID 代替类。使用类。ID应该是唯一的!此外,在 SEO 方面,每个文档
不要使用超过一个。h1
修改您的 HTML!
您可以改为通过为产品规范引入父级来修改 HTML 标记:
.product {
display: flex;
}
.buy {
display: flex;
flex-direction: column;
margin-left: auto;
}
.buy-specs {
display: flex;
flex-direction: column;
align-items: center;
}
.buy > * {
margin-left: auto;
}
.buy-message {
color: red;
}
<div class="product">
<h1>Prodotto 1</h1>
<div class="buy">
<div class="buy-specs">
<p class="buy-specs-price">Prezzo: 39,10 €</p>
<div class="buy-specs-quantity"></div>
<button class="buy-specs-add button" disabled>Aggiungi al carrello</button>
</div>
<span class="buy-message">È stato raggiunto il limite di 5 biglietti!</span>
</div>
</div>
推荐阅读
- python - Django 查询集 - 查找两个查询集之间的百分比
- sql - 在 SQL Developer 中设置时间范围
- php - 用 withcount 和 orderby 分块巨大的查询
- python - 处理熊猫路径的最佳方法
- node.js - 接吻的消息顺序 - whatsapp
- azure-data-studio - Azure Data Studio - 分离结果窗口
- c# - 无法显示TreeView的所有节点
- python - 使用 numpy.where() 进行矢量化
- python - pandas binning via cut 包括单值(零)bin
- django - ValueError:“封面”属性没有与之关联的文件