【问题标题】:Layout using vh does not scale with zoom使用 vh 的布局不会随缩放而缩放
【发布时间】:2015-05-05 23:43:20
【问题描述】:

我尝试使用仅vh 大小创建登录表单。 这样做是为了希望表单总体上会根据视口进行缩放。

没有!出于某种原因,放大时会在输入字段和下面的文本之间创建一个随着放大而不断变大的空白区域。

http://jsfiddle.net/TnY3L/

小提琴制作得不是很好,只是从我的项目中复制的。 但你可以看到哪里出了问题——这才是最重要的。

有人知道我该如何解决这个问题吗?

<span id="loginform">
    <input type="text" name="login" class="LFORM" placeholder="USERNAME" />
    <input type="password" name="password" class="LFORM" placeholder="PASSWORD" />
    <button id="LB" type="button" style="font-size: 1.4vh;">OK!</button><br />
    <a href="" id="CALINK" style="font-size:1.4vh;">Create account</a>
    <a href="" id="FLLINK" style="font-size:1.4vh;">Forgot login?</a>
</span>

::-webkit-input-placeholder {
     font-size: 1.4vh;
}
#loginform {
     float: right;
     position: relative;
     top: 50%;
     transform: translateY(-50%);
     right: 1.5vh;
}
#CALINK {
     float:left;
     font-family:my_fat_font;
}
#FLLINK {
     float:right;
     font-family:my_fat_font;
}
#LB {
     border-radius: 0.4vh;
     font-family: my_fat_font;
     color: #ffffff;
     background: #ff9f2d;
     padding: 0.2vh 0.8vh 0.2vh 0.8vh;
     text-decoration: none;
     border: none;
     height: 2vh;
     margin-left: .5vh;
     margin-right: 0px;
     border: 0;
}
#LB:hover {
     background: #3e4188;
     text-decoration: none;
} 
.LFORM {
     width: 10vh;
     height: 1.8vh;
     border-radius: .3vh;
     border: none;
     padding-left: .6vh;
}
[placeholder]:focus::-webkit-input-placeholder {
     color: transparent;
}
#loginform a:hover {
     color: #ff9f2d;
     text-decoration:underline;  
}
#loginform a {
     color: #ff9f2d;
     text-decoration: none;
}

【问题讨论】:

  • 我真的看不出有什么问题。视口高度没有改变,只是在其中呈现事物的方式。 Viewport (computing)
  • 那么我可能对“vh”如何工作有一个错误的想法。在我看来,它将被渲染到完全相同的位置。
  • 视口应该代表显示器的物理空间。缩放不会改变显示器的物理空间,而是改变显示器的内容。把它想象成通过放大镜看东西。它实际上并没有改变物理对象的大小,只是改变它的显示大小。
  • 那么还有其他合理的方法可以实现吗?
  • 这样的? jsfiddle.net/TnY3L/5

标签: css scale viewport viewport-units


【解决方案1】:

vhvh 单位是相对于视口大小的度量。 1vh 是当前视口高度的 1%,所以 100vh 始终是 100% 高度。无论您放大和缩小多少,视口仍然是相同的大小。

放大时,会放大整个文档(但不是视口)。如果在视口单元中也没有定义该空间,那么放大页面时元素之间的空间会增加是合乎逻辑的。因为其他元素没有增加,所以文档不成比例。

如果您想创建随放大而缩放的元素,请尝试使用rem 单位。这与正文的字体大小有关,因此当您放大页面时,rem 中表示的每个值都会相应地缩放。

【讨论】:

  • 如果你拿一个 div,给它200px 宽度并放大,它会缩放吗?如果是,你的解释是错误的。
猜你喜欢
  • 2017-12-25
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 2016-01-01
  • 2012-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多