当前位置:  开发笔记 > 前端 > 正文

子像素在浏览器中计算和呈现的方式不同

如何解决《子像素在浏览器中计算和呈现的方式不同》经验,为你挑选了1个好方法。

如您所知,问题源于浏览器之间的子像素演算的不同方法

例如,在Chrome中,边框可以具有小数尺寸,但边距处理不同(作为整数).

我没有Chrome团队提供有关它的文档,但它可以在开发工具中看到:

开发工具捕获

AFAIK,没有办法改变这种状况.

相反,您可以将按钮中边距的使用转移到边框.

由于您需要为输入的1px边框获取空间,请在按钮中执行相同操作,设置1px边框(而不是边距),并将其设置为透明.

剩下的技巧是将background-clip属性设置为padding框,这样透明度就不会受到背景的影响

Chrome中还有另一个错误,当浏览器缩放时,以这种精度级别表示的填充不可靠.我在片段中更改了此内容.

由于我们使用边框按钮来获取尺寸,我们可以使用嵌入阴影来设置边框样式.

* {
  margin: 0; padding: 0; box-sizing: border-box;
}
button, input, wrapper {
  display: inline-block; border-radius: 3px;
}

.wrapper {
  position: relative;
  
  width: 60%;
  margin: 1em;
  background-color: #ccc;
}

input {
  border: 1px solid red;
  width: 100%;
  
  background-color: limegreen;
  line-height: 3em;
/*  padding: 0.75em; */
  padding: 10px;
}

button {
  position: absolute;
  right: 0;
  top: 0;
  bottom: 0;
  border: 1px solid transparent;
  width: 7em;
  margin: 0px;
  background-clip: padding-box;
  box-shadow:  inset 0px 0px 0px 2px  black;
}

另一个例子,按钮边框.但是我们需要一个包装器才能使尺寸正常.

* {
  margin: 0; padding: 0; box-sizing: border-box;
}
button, input, wrapper {
  display: inline-block; border-radius: 3px;
}

.wrapper {
  position: relative;
  
  width: 60%;
  margin: 1em;
  background-color: #ccc;
}

input {
  border: 1px solid red;
  width: 100%;
  
  background-color: limegreen;
  line-height: 3em;
/*  padding: 0.75em; */
  padding: 10px;
}

.buttonwrap {
  position: absolute;
  right: 0;
  top: 0;
  bottom: 0;
  border: 1px solid transparent;
  width: 7em;
  margin: 0px;
  background-clip: padding-box;
}
button {
  position: absolute;
  right: 0px;
  top: 0;
  bottom: 0;
  width: 100%;
  border: 2px solid blue;
  margin: 0px;
}



1> vals..:

如您所知,问题源于浏览器之间的子像素演算的不同方法

例如,在Chrome中,边框可以具有小数尺寸,但边距处理不同(作为整数).

我没有Chrome团队提供有关它的文档,但它可以在开发工具中看到:

开发工具捕获

AFAIK,没有办法改变这种状况.

相反,您可以将按钮中边距的使用转移到边框.

由于您需要为输入的1px边框获取空间,请在按钮中执行相同操作,设置1px边框(而不是边距),并将其设置为透明.

剩下的技巧是将background-clip属性设置为padding框,这样透明度就不会受到背景的影响

Chrome中还有另一个错误,当浏览器缩放时,以这种精度级别表示的填充不可靠.我在片段中更改了此内容.

由于我们使用边框按钮来获取尺寸,我们可以使用嵌入阴影来设置边框样式.

* {
  margin: 0; padding: 0; box-sizing: border-box;
}
button, input, wrapper {
  display: inline-block; border-radius: 3px;
}

.wrapper {
  position: relative;
  
  width: 60%;
  margin: 1em;
  background-color: #ccc;
}

input {
  border: 1px solid red;
  width: 100%;
  
  background-color: limegreen;
  line-height: 3em;
/*  padding: 0.75em; */
  padding: 10px;
}

button {
  position: absolute;
  right: 0;
  top: 0;
  bottom: 0;
  border: 1px solid transparent;
  width: 7em;
  margin: 0px;
  background-clip: padding-box;
  box-shadow:  inset 0px 0px 0px 2px  black;
}
推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有