我正在展示我的问题的最简单版本。水平线上有三个按钮。根据它们的状态,它们中的任何一个都可以包含一行或两行文本。第一张图片显示它们仅用一行渲染:
当按下按钮时,现在必须显示两行文本,这就是结果:
按下的按钮不会移动,但正如您所看到的,所有其他按钮都会向下移动。
这是 html:
<!DOCTYPE html>
<html>
<head>
<title>TEST</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="data:,">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="card-grid">
<p>
<button class="button-up" id="bUP"><span id="state-up">%STATE_UP%</span></button>
<button class="button-off" id="bOFF"><span id="state-off">%STATE_OFF%</span></button>
<button class="button-down" id="bDOWN"><span id="state-down">%STATE_DOWN%</span></button>
</p>
</div>
<script src="script.js"></script>
</body>
</html>
这是CSS:
html {
font-family: Arial, Helvetica, sans-serif;
text-align: center;
}
h1 {
font-size: 1.8rem;
color: white;
}
body {
padding: 25px;
}
.card-grid {
max-width: 800px;
display: grid;
gap: 15px;
grid-template-columns: auto;
}
button {
text-align: center;
font-size: 25px;
width: 150px;
height: 150px;
}
.button-up {
background-color: green;
}
.button-off {
background-color: red;
}
.button-down {
background-color: green;
}
我在网上搜索过,没有找到这个问题正在解决。我猜这是因为修复非常简单。但它已经打败了我。
我尝试过各种填充、边距、按钮大小的组合(你可以看到它们很大),但无法摆脱这种效果,即按下一个按钮会影响所有其他按钮的位置。
您需要设置按钮的垂直对齐方式。
button {
vertical-align: middle;
}