首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS尺寸- 1cm != 1cm

CSS尺寸- 1cm != 1cm
EN

Stack Overflow用户
提问于 2015-02-19 22:48:56
回答 3查看 1.5K关注 0票数 1

有一段奇怪的时间,弄清楚为什么这似乎不起作用。

我应用了CSS背景梯度,例如:

代码语言:javascript
复制
.element {
  width: 10cm;
  height: 5cm;
  background-size: 1cm;
  background-image: repeating-linear-gradient(
    90deg,
    red,
    black
  );
}
.child {
  width: 1cm;
  height: 1cm;
  background: green;
  outline: 1px solid black;
  float:left;
}
.child:before {
  content: "1cm";
  color: white;
}
代码语言:javascript
复制
<div class="element">
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
</div>

现在,当查看时(这是来自Chrome的,但我在其他浏览器中看到类似的结果),线条与元素不匹配。我希望看到10个均匀间隔的“背景”重复,其中最右边的排列正好与元素的边缘。

这个额外空间的原因是什么?

http://codepen.io/anon/pen/JoLVem

在codepen示例中,我有一个具有我想要的背景的元素,该元素有10个子元素。父母是10厘米,孩子是1厘米。正好有10个孩子适合父母,因为1cm * 10 = 10 1cm。

然而,背景是重复一个1厘米宽的梯度。这将导致在一个10厘米宽的元素上精确地重复10个背景。正如你所看到的,每一幅背景图像都不超过1cm。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-19 22:55:21

CSS单位不一定等同于精确的尺寸。最后,显示在屏幕上的每个CSS度量最终都以像素为单位进行计算。

CSS假设屏幕有96 dpi,所以使用inptpc通常是安全的,尽管不同的监视器分辨率或用户定义的缩放可能会影响结果。

然而,度量单位是另一回事,因为没有对像素的精确计算,因此这些数字被浏览器舍入,以传递接近指定度量的结果。这是单位用于屏幕目标布局的原因之一。

在你的例子中:

代码语言:javascript
复制
1cm ≈ 37px or 38px 
10cm ≈ 370px

唯一的选择是将毫米级标准化为每毫米3或4 px。这是不好的,因为它不会让你接近厘米的测量在更大的水平。

正如您在下面的示例中所看到的,这在英寸单位中是正确的,因为像素的计算是准确的:

代码语言:javascript
复制
.element {
    background-image: repeating-linear-gradient(
    	90deg,
    	white,
    	black 100%
    );
    background-size: 1in;
    width: 5in;
    height: 4in;
}

.child {
  width: 1in;
  height: 1in;
  background: green;
  outline: 1px solid black;
  float:left;
}
.child:before {
  content: "1in";
  color: white;
}
代码语言:javascript
复制
<div class="element">
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
</div>

票数 6
EN

Stack Overflow用户

发布于 2015-02-19 23:03:42

设置background-size :10%将修复它。

也就是说,如果您使用像素值,它将正确工作。

代码语言:javascript
复制
.element {
  background-image: repeating-linear-gradient(90deg, white, black 100%);
  background-size: 30px;
  width: 300px;
  height: 100px;
  border: 1px solid #000000;
}
代码语言:javascript
复制
<div class="element"></div>

票数 0
EN

Stack Overflow用户

发布于 2015-02-19 22:58:27

给背景元素一个百分比宽度:

代码语言:javascript
复制
.element {
  background-image: repeating-linear-gradient(90deg, white, black 100%);
  background-size: 10%;
  width: 300px;
  height: 100px;
  border: 1px solid #000000;
}
代码语言:javascript
复制
<div class="element"></div>

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28618532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档