【问题标题】:Why does width in percent produce a different result than width in pixels?为什么百分比宽度产生的结果与像素宽度不同?
【发布时间】:2017-12-31 03:01:21
【问题描述】:

我在布局的第二列中有一个水平滚动的 div。出于某种原因,这个 div 的内容会拉长我的页面并破坏我的布局。我已将main__listing 确定为有问题的div。为了测试这是有问题的div,我将宽度更改为10%。它将 div 的内容缩小到您期望的荒谬大小,但是我的页面仍然损坏。我曾经使用 Firefox 开发工具来查找以像素为单位的宽度(290 像素)。然后我将宽度设置为 290px。这修复了我的页面。我需要 div 是流动的,所以这不是一个真正的修复,但我想知道为什么会这样。

TL;DR 宽度设置为 % 的 div 的宽度与设置为相同大小(以像素为单位)的 div 不同。

CSS:

.main__listings {
  width: 100%;
}
.horizontal_scroll {
  display: flex;
  flex-wrap: nowrap;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
}
.card {
  flex: 0 0 200px;
  margin: auto 10px;
}

HTML:

<div className="main__listings">
  <h1>Local Competitions</h1>
  <div className="horizontal_scroll">
    <div className="card">
      <h2>Competition Name</h2>
      <img src="http://via.placeholder.com/280x280" alt="" width="140" height="140"/>
    </div>
    <div className="card">
      <h2>Competition Name</h2>
      <img src="http://via.placeholder.com/280x280" alt="" width="140" height="140"/>
    </div>
    <div className="card">
      <h2>Competition Name</h2>
      <img src="http://via.placeholder.com/280x280" alt="" width="140" height="140"/>
    </div>
    <div className="card">
      <h2>Competition Name</h2>
      <img src="http://via.placeholder.com/280x280" alt="" width="140" height="140"/>
    </div>
    <div className="card">
      <h2>Competition Name</h2>
      <img src="http://via.placeholder.com/280x280" alt="" width="140" height="140"/>
    </div>
    <div className="card">
      <h2>Competition Name</h2>
      <img src="http://via.placeholder.com/280x280" alt="" width="140" height="140"/>
    </div>
    <div className="card">
      <h2>Competition Name</h2>
      <img src="http://via.placeholder.com/280x280" alt="" width="140" height="140"/>
    </div>
  </div>
</div>

【问题讨论】:

  • 在标题中回答你的问题,百分比是(总屏幕宽度“或高度”)* .(你想要的百分比)所以一个例子是想要一个图像是 20%屏幕宽度。在 1820 像素宽的屏幕/浏览器窗口上,宽度为 1820 * .20 = 364 像素。如果您仅使用像素定义宽度,则无论屏幕尺寸如何,它始终是您选择的已定义像素数量。如果您缩放屏幕,这将不断变化。
  • 是的,但是在任何给定的屏幕尺寸下,都有对应的像素尺寸匹配。我有一个按百分比设置一次的 div,然后按像素设置。 div 大小不随百分比变化,但按像素设置时变化。在这两种情况下,div 的内容都发生了变化。

标签: html css flexbox horizontal-scrolling


【解决方案1】:

百分比将根据您的屏幕尺寸而变化,其中像素不会根据屏幕而变化,并且像素不会响应不同的屏幕尺寸。

如果您想给出一些值而不给出百分比,您可以使用“rem”单位。而且反应更灵敏。查看 rem 单位与像素相比的工作原理。

https://www.sitepoint.com/understanding-and-using-rem-units-in-css/

已编辑 => 引用评论:

【讨论】:

  • 我在问为什么宽度为百分比的 div 不会改变大小,只有在按像素设置宽度时才会改变 div 的内容会改变 div 的大小和内容其中。我不确定用一种清晰的方式简洁地提出这样一个微妙的问题。
  • 查看答案所附的图片,看看我们是否在同一个页面上。有两张单独的图像,一张带有像素,一张带有百分比。您也可以参考以下链接stackoverflow.com/questions/3630551/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-23
  • 1970-01-01
  • 2014-06-07
  • 1970-01-01
  • 1970-01-01
  • 2018-01-06
  • 2015-01-13
相关资源
最近更新 更多