html - 为什么占用这么多初始空间,如何控制呢?
问题描述
让我解释:
body {
display: flex;
flex-direction: column;
align-items: flex-start;
}
.container {
display: flex;
flex-direction: column;
align-items: stretch;
}
.row {
display: flex;
align-items: stretch;
}
.line {
width: 20px;
background-color: blue;
}
.square {
min-height: 200px;
min-width: 200px;
flex: 1;
background-color: red;
}
input {
flex: 1;
}
.inputs {
background-color: yellow
}
.inputs.none {
display: none;
}
.reduce-font-size input {
font-size: 4px;
}
Inputs display none
<div class="container">
<div class="row">
<div class="line"></div>
<div class="square"></div>
<div class="line"></div>
</div>
<div class="row inputs none">
<input/>
<input/>
<input/>
<input/>
</div>
</div>
Inputs visible
<div class="container">
<div class="row">
<div class="line"></div>
<div class="square"></div>
<div class="line"></div>
</div>
<div class="row inputs">
<input/>
<input/>
<input/>
<input/>
</div>
</div>
Inputs reduced font-size
<div class="container">
<div class="row">
<div class="line"></div>
<div class="square"></div>
<div class="line"></div>
</div>
<div class="row inputs reduce-font-size">
<input/>
<input/>
<input/>
<input/>
</div>
</div>
因此,这样做的目的是在不了解参数的情况下使容器灵活且可调整大小。我们为正方形设置了初始参数,一切都必须遵循这些值,然后在调整大小时容器的内容应该会拉伸。唯一的问题是输入。我们不能为它们设置指定的宽度,它们应该填充最大可用宽度,但不扩展它们的行。减小字体大小的示例效果很好。它不会扩展行,但是如果容器的宽度发生变化,它们会跟随它,但是......字体大小会太小。我想要的是与正常字体大小相同的行为。所以字体属性应该有一些东西,但是在玩了几个小时之后,我从你那里得到了一些帮助。有任何想法吗?
解决方案
你可以加:
input {
width:100%;
}
.inputs {
max-width: 100%;
}
到那时你只需要控制容器来设置宽度。相关:为什么 <textarea> 和 <input> 元素不尊重最大宽度?
body {
display: flex;
flex-direction: column;
align-items: flex-start;
}
.container {
display: flex;
flex-direction: column;
align-items: stretch;
}
.row {
display: flex;
align-items: stretch;
}
.line {
width: 20px;
background-color: blue;
}
.square {
min-height: 200px;
min-width: 200px;
flex: 1;
background-color: red;
}
input {
flex: 1;
width:100%;
}
.inputs {
max-width: 100%;
}
.inputs.none {
display: none;
}
.reduce-font-size input {
font-size: 4px;
}
Inputs display none
<div class="container">
<div class="row">
<div class="line"></div>
<div class="square"></div>
<div class="line"></div>
</div>
<div class="row inputs none">
<input/>
<input/>
<input/>
<input/>
</div>
</div>
Inputs visible
<div class="container">
<div class="row">
<div class="line"></div>
<div class="square"></div>
<div class="line"></div>
</div>
<div class="row inputs">
<input/>
<input/>
<input/>
<input/>
</div>
</div>
Inputs reduced font-size
<div class="container">
<div class="row">
<div class="line"></div>
<div class="square"></div>
<div class="line"></div>
</div>
<div class="row inputs reduce-font-size">
<input/>
<input/>
<input/>
<input/>
</div>
</div>
推荐阅读
- python - 使用opencv从ip摄像头检测人脸
- php - 在 docker 的上游找不到 Docker + Nginx 主机
- javascript - 如何在 reactJS 中显示来自 Array 的所有图像?
- angular - 如何将rest api中的给定UTC输出转换为用户可读的本地时间?
- r - 在 R 中拟合和预测 Arima
- fortran - Fortran77:子程序参数中的星号 (*) 是什么意思?
- ios - 在 FSCalendar UIView 上放置按钮
- javascript - 输入文本框仅允许数字单点 (.) 作为我的文本框的价值价格不允许多个点 (.)
- c# - 如何获取 HttpRuntime.Cache 对象的缓存项优先级?
- java - 以相同的频率值增量生成从一个频率到另一个频率的扫描音