【发布时间】:2018-02-01 01:15:11
【问题描述】:
我有几个使用display: flex 定位在div 中的表单按钮。
点击“保存”按钮后,我想隐藏保存按钮的原始内容并显示一个居中的旋转图标。但是,我不希望按钮的宽度发生变化,因为这会导致页面周围的其他元素(按钮)发生变化。这是我现在的情况:
如何确保按钮保持原来的宽度并且不会缩小?我知道我可以在按钮上设置min-width,但这需要我为每个按钮指定不同的宽度,因为每次文本都可能更短或更长。我也尝试将flex-shrink: 0 样式的各种组合添加到按钮,但这似乎也不起作用。
代码笔示例
https://codepen.io/kspearrin/pen/eVNeMX
HTML
<div class="wrapper">
<button type="button" id="save">
<span id="savetext"><i class="fa fa-save"></i> Save</span>
<i class="fa fa-spinner fa-spin hide" id="spinner"></i>
</button>
<button type="button" id="cancel">Cancel</button>
<div class="right">
<button type="button"><i class="fa fa-star"></i></button>
<button type="button"><i class="fa fa-trash"></i></button>
</div>
</div>
CSS
.wrapper {
display: flex;
width: 400px;
align-items: center;
background-color: lightblue;
padding: 10px;
}
button {
margin-right: 10px;
text-align: center;
padding: 5px 10px;
}
button:last-child {
margin-right: 0;
}
.right {
margin-left: auto;
display: flex;
align-items: center;
}
.hide {
display: none;
}
JS
document.getElementById("save").onclick = () => {
document.getElementById("savetext").classList.add("hide");
document.getElementById("spinner").classList.remove("hide");
};
document.getElementById("cancel").onclick = () => {
document.getElementById("savetext").classList.remove("hide");
document.getElementById("spinner").classList.add("hide");
};
【问题讨论】:
-
我认为这与 flexbox 无关:如果没有大小限制,内联框自然会尝试适应其内容。
-
你需要在它上面设置一个最小宽度或者保存 span
visibility:hidden(然后它会保留它的空间)并将微调器绝对放在它上面
标签: javascript html css flexbox