我遇到 y 轴溢出问题。我正在寻找一种解决方案来缩放所有内容,使其始终适合 100% 宽度和 100% 高度。由于我永远不知道将放入多少内容,因此它必须缩放以适合事件窗口。由于需要显示所有数据,因此无法 overflow hidden 。
我尝试过使用视口(viewport)设置,我为此搜索了 vanilla js 和 jquery 解决方案,但没有找到解决此问题的解决方案,我确定有一个解决方案吗?
这是我当前的 html - JSFiddle
body,
html {
margin: 0;
padding: 0;
height: 100%;
width: 100%;
font-size: 1em;
}
* {
box-sizing: border-box;
}
#wrapper {
height: 100%;
width: 100%;
display: inline-block;
position: relative;
}
.process {
display: table;
table-layout: fixed;
width: 100%;
}
.process div {
display: table-cell;
position: relative;
}
.process div:nth-child(even) {
background-color: #edf0f6;
}
.process div:nth-child(odd) {
background-color: #fafcff;
}
<body>
<div id="wrapper">
<div class="process">
<div>
<header>Idle</header>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
<span class="warning">1009999999</span> <span class="date warning">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
</div>
<div>
<header>Weighing</header>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
<span class="error">1009999999</span> <span class="date error">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
</div>
<div>
<header>Mixing</header>
</div>
<div>
<header>Pressing</header>
</div>
<div>
<header>Done</header>
</div>
</div>
<div class="process">
<div>
<header>Idle</header>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
<span class="warning">1009999999</span> <span class="date warning">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
</div>
<div>
<header>Weighing</header>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
<span class="error">1009999999</span> <span class="date error">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
</div>
<div>
<header>Curing</header>
</div>
<div>
<header>Mixing</header>
</div>
<div>
<header>Pressing</header>
</div>
<div>
<header>Finishing</header>
</div>
<div>
<header>Done</header>
</div>
</div>
<div class="process">
<div>
aasd
</div>
</div>
</div>
</body>
</html>
正如您所看到的,其中有一些文本,并且可能会更多,并且它必须适合您当前的窗口,不允许滚动。
所以我正在寻找的是 100% 高度和 100% 宽度,总是缩放所有内容以适合窗口,无论数据有多少,文本大小可以超小,这很好,但总是从大窗口缩放到最少的。
最佳答案
Flexbox 并更新为使用字体缩放器,已在构建后粘贴到 css 中,但这个 mixin 是如何生成的:-
@mixin font-scaler($min_width:400, $max_width: 800, $min_font:12, $max_font:24) {
//Usage:-
// @include font-scaler(768, 1200, 12, 24);
@media (min-width: #{$min_width}px) and (max-width: #{$max_width}px) {
font-size: calc(#{$min_font}px + (#{$max_font} - #{$min_font}) * ((100vw - #{$min_width}px) / (#{$max_width} - #{$min_width})));
}
}
body,
html {
margin: 0;
padding: 0;
height: 100%;
width: 100%;
font-size: 1em;
}
* {
box-sizing: border-box;
}
#wrapper {
height: 100%;
width: 100%;
display: flex;
flex-direction: column;
position: relative;
}
@media (min-width: 320px) and (max-width: 1920px) {
#wrapper {
font-size: calc(9px + (20 - 9) * ((100vw - 320px) / (1920 - 320))); } }
.process {
display: flex;
width: 100%;
height: 100%;
}
.process div {
flex: 1 1 auto;
}
.process div:nth-child(even) {
background-color: #edf0f6;
}
.process div:nth-child(odd) {
background-color: #fafcff;
}
<body>
<div id="wrapper">
<div class="process">
<div>
<header>Idle</header>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
<span class="warning">1009999999</span> <span class="date warning">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
</div>
<div>
<header>Weighing</header>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
<span class="error">1009999999</span> <span class="date error">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
</div>
<div>
<header>Mixing</header>
</div>
<div>
<header>Pressing</header>
</div>
<div>
<header>Done</header>
</div>
</div>
<div class="process">
<div>
<header>Idle</header>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
<span class="warning">1009999999</span> <span class="date warning">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
</div>
<div>
<header>Weighing</header>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
<span class="error">1009999999</span> <span class="date error">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
<p>
1009999999 <span class="date">2017-06-15</span>
<span class="details">Additional data needed for the order, 2 rows maximum.</span>
</p>
</div>
<div>
<header>Curing</header>
</div>
<div>
<header>Mixing</header>
</div>
<div>
<header>Pressing</header>
</div>
<div>
<header>Finishing</header>
</div>
<div>
<header>Done</header>
</div>
</div>
<div class="process">
<div>
aasd
</div>
</div>
</div>
</body>
</html>
关于javascript - 缩放内容以始终适合窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43938131/