css - 包含文本的 Div 调整大小,尽管 box-sizing 边框框
问题描述
我有 4 个水平按钮,相对于应用程序的其余部分,它们需要保持固定大小。
为此,我使用以下语法在我的所有 CSS 上使用 -webkit-box-sizing:border-box 和 box-sizing:border-box:
* {
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
尽管如此,当在按钮中输入文本时,它们会垂直增长并扭曲我的按钮布局。
奇怪的是我同时遇到了相反的问题。我的按钮中的文本不断变化,几个月来我一直未能找到一种方法来动态调整我的文本大小以适应我的按钮的水平约束而不会溢出。
然而,即使使用框大小,按钮也会垂直调整大小以为文本腾出空间。
如何在不调整按钮大小的情况下将文本垂直和水平地保留在按钮内?Clamp 对我来说不是一个选项,因为按钮中的文本有时会很长,有时会很短。所以任何涉及幻数的东西都行不通。
代码笔: https ://codepen.io/TheNomadicAspie/pen/YzVvYjL
<div id="bottom_bar" class="bottom-bar">
<div id="character" class="character">
<img id="character_image" src="https://i.imgur.com/MdgNp7v.png">
</div>
<div id="bottom_display" class="bottom-display">
<div id="answers_display" class="answers-display">
<div id="answer_container_1" class="answer-button-1">
<div id="answer_checkbox_1" class="checkbox">
</div>
<div id="answer_button_container_1" class="answer-button-container">
<button id="answer_button_1" class="button lower-button">
<div id="answer_button_1_text"></div>
</button>
</div>
</div>
<div id="answer_container_2" class="answer-button-2">
<div id="answer_checkbox_2" class="checkbox">
</div>
<div id="answer_button_container_2" class="answer-button-container">
<button id="answer_button_2" class="button lower-button">
</button>
</div>
</div>
<div id="answer_container_3" class="answer-button-3">
<div id="answer_checkbox_3" class="checkbox">
</div>
<div id="answer_button_container_3" class="answer-button-container">
<button id="answer_button_3" class="button lower-button">
</button>
</div>
</div>
<div id="answer_container_4" class="answer-button-4">
<div id="answer_checkbox_4" class="checkbox">
</div>
<div id="answer_button_container_4" class="answer-button-container">
<button id="answer_button_4" class="button lower-button">
</button>
</div>
</div>
</div>
</div>
</div>
* {
outline: none;
opacity: 1;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
html,
body {
position: fixed;
height: 100%;
background-color: #26004b;
font-size: 2vh;
margin: 0 auto;
font-family: open_sans;
}
.bottom-bar {
display: grid;
grid-template-columns: 38.2% 61.8%;
position: relative;
height: 38.2%;
width: 100vw;
bottom: 0%;
}
.character {
grid-column: 1/2;
position: relative;
background-size: contain;
background-repeat: no-repeat;
background-position-y: bottom;
background-position-x: center;
}
.character img {
position: absolute;
max-height: 100%;
bottom: 0%;
left: 0%;
}
.bottom-display {
grid-column: 2/3;
position: relative;
height: 100%;
padding-right: 5vw;
padding-top: 1%;
padding-bottom: 3%;
}
.answers-display {
display: grid;
gap: 1%;
height: 99%;
max-height: 99%;
grid-template-columns: repeat(
auto-fill,
minmax(clamp(28vw, 45vmin, 35vw), 1fr)
);
grid-template-rows: 25% 25% 25% 25%;
height: 100%;
}
.answer-button-1 {
position: relative;
grid-row: 1/2;
display: grid;
grid-template-columns: 20% 80%;
height: 98%;
}
.answer-button-2 {
position: relative;
grid-row: 2/3;
display: grid;
grid-template-columns: 20% 80%;
height: 98%;
}
.answer-button-3 {
position: relative;
grid-row: 3/4;
display: grid;
grid-template-columns: 20% 80%;
height: 99%;
}
.answer-button-4 {
position: relative;
grid-row: 4/5;
display: grid;
grid-template-columns: 20% 80%;
height: 99%;
}
.answer-button-container {
grid-column: 2/3;
padding-left: 5%;
height: 100%;
}
.answer-button-container button {
width: 100%;
padding-left: 5%;
padding-right: 5%;
padding-top: 2%;
padding-bottom: 2%;
}
.button {
display: block;
position: relative;
height: 100%;
width: 100%;
background-color: black; /*Button Color*/
color: #f5f5f5;
font-family: open_sans;
font-size: 1.5rem;
font-size: min(6vw, clamp(1rem, 4.5vh, 4rem));
border-radius: 20px;
text-decoration: none;
box-shadow: 0.1em 0.2em black;
}
.lower-button {
white-space: nowrap;
}
.active {
transition: 0.1s;
box-shadow: 0.01em 0.02em black;
transform: translate(0.05em, 0.1em);
}
.button:active {
transition: 0.1s;
box-shadow: 0.01em 0.02em black;
transform: translate(0.05em, 0.1em);
}
.button:focus .button:hover {
box-shadow: 0.06em 0.12em black;
transform: translate(-0.01em, -0.02em);
}
answer_button_1.innerText = 'Test test test test'
解决方案
推荐阅读
- angularjs - '/:routeparams' 正在覆盖 angularjs 中的其他路由
- python - uwsgi.service 的作业失败,因为在 ubuntu 20.04 上安装 geonode 3.2 期间控制进程以错误代码退出
- android - 颤振构建失败 DER 长度的短读取
- google-apps-script - Google Apps 脚本:TypeError:sheet.getActiveSheet 不是函数 - 全局变量刚刚开始失败
- c# - 有没有办法将参数或属性标记为可序列化?
- ios - 访问 Apple AirTag 数据的 Apple Developer API 是什么?
- javascript - Reactjs 使用 useReducer 更新对象数组中的嵌套数组
- python - 如何在 Pandas uisng for 循环中过滤 DataFrame 中的行?
- python - 禅比;自定义字段未更新
- reactjs - 升级到 Visual Studio 2019 16.10.0 后 React 应用的“加载资源失败:net::ERR_HTTP2_PROTOCOL_ERROR”