css 缩放+溢出的唯一解决方案
css only solution for scaling + overflow
我想在可滚动窗格中以 0.5 的比例显示 html 未定义的宽度和高度。
所以我这样设计容器
.container {
position:absolute;
top:40px;
left:40px;
bottom:40px;
right:40px;
overflow:scroll;
}
和内容
.content {
transform:scale(0.5);
transform-origin: top left;
}
问题是比例因子只会改变方块的外观,不会影响其内部容器。
如果内容为 1000 x 2000,则在 0.5 比例下,可见区域为 500 x 1000,但其 "implicit" 容器仍为 1000 x 2000。
因此,如果我将其放入带有 overflow:scroll 的父容器中,那么一旦您超过 50%
,滚动条就会开始显示空内容
解决方法是什么?最好在 css。或者 javascript 如果这在纯 css.
中是不可能的
.content {
transform:scale(0.5);
transform-origin: top left;
}
.container {
position:absolute;
top:40px;
left:40px;
bottom:40px;
right:40px;
overflow:scroll;
}
/* css behind does not matter */
span
{
display:block;
width:400px;
height:400px;
background-color:red;
border:1px solid green;
}
span:nth-child(2n)
{
height:300px;
background-color:yellow;
}
<html>
<body>
<div class="container">
<div class="content">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
...when zoomed there are empty space here under ...
</div>
</div>
</body>
</html>
只需将 height:0
设置为 .content
:
.content {
transform:scale(0.5);
transform-origin: top left;
height: 0;
}
.container {
position:absolute;
top:40px;
left:40px;
bottom:40px;
right:40px;
overflow:scroll;
}
/* css behind does not matter */
span
{
display:block;
width:400px;
height:400px;
background-color:pink;
border:1px solid green;
}
span:nth-child(2n)
{
height:300px;
background-color:gold;
}
<html>
<body>
<div class="container">
<div class="content">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
...when zoomed there are empty space here under ...
</div>
</div>
</body>
</html>
我想在可滚动窗格中以 0.5 的比例显示 html 未定义的宽度和高度。
所以我这样设计容器
.container {
position:absolute;
top:40px;
left:40px;
bottom:40px;
right:40px;
overflow:scroll;
}
和内容
.content {
transform:scale(0.5);
transform-origin: top left;
}
问题是比例因子只会改变方块的外观,不会影响其内部容器。 如果内容为 1000 x 2000,则在 0.5 比例下,可见区域为 500 x 1000,但其 "implicit" 容器仍为 1000 x 2000。
因此,如果我将其放入带有 overflow:scroll 的父容器中,那么一旦您超过 50%
,滚动条就会开始显示空内容解决方法是什么?最好在 css。或者 javascript 如果这在纯 css.
中是不可能的.content {
transform:scale(0.5);
transform-origin: top left;
}
.container {
position:absolute;
top:40px;
left:40px;
bottom:40px;
right:40px;
overflow:scroll;
}
/* css behind does not matter */
span
{
display:block;
width:400px;
height:400px;
background-color:red;
border:1px solid green;
}
span:nth-child(2n)
{
height:300px;
background-color:yellow;
}
<html>
<body>
<div class="container">
<div class="content">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
...when zoomed there are empty space here under ...
</div>
</div>
</body>
</html>
只需将 height:0
设置为 .content
:
.content {
transform:scale(0.5);
transform-origin: top left;
height: 0;
}
.container {
position:absolute;
top:40px;
left:40px;
bottom:40px;
right:40px;
overflow:scroll;
}
/* css behind does not matter */
span
{
display:block;
width:400px;
height:400px;
background-color:pink;
border:1px solid green;
}
span:nth-child(2n)
{
height:300px;
background-color:gold;
}
<html>
<body>
<div class="container">
<div class="content">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
...when zoomed there are empty space here under ...
</div>
</div>
</body>
</html>