html - 边界半径不像预期的那样圆

标签 html css responsive-design border

codepen

在上面的例子中,我尝试了开关盒样式,我也尝试了 em 值,当我根据他们的 parent 写了 16px 的字体大小时,根据 veiwport 字体大小会发生变化,而改变开关盒圆圈并不完美,对于特定的字体大小是合适的(eg:parent font-size 20px,22px)

这是代码

.parent {
  font-size: 16px;
  text-align: center;
  margin-top: 10px
}

.BP_swtchbox {
  display: inline-block;
  font-size: 1em
}

.BP_Swtch {
  cursor: pointer;
  background: #d7d9dd;
  border-radius: 0.313em;
  height: 0.625em;
  width: 1.500em;
  display: inline-block;
  position: relative;
  transition: .4s;
  -ms-transition: .4s;
  -moz-transition: .4s;
  -webkit-transition: .4s
}

.BP_swtchbox input {
  display: none
}

.BP_Swtbx_lb {
  background: #fff;
  border-radius: 50%;
  box-shadow: 0 1px 4px 0 #777;
  height: 0.875em;
  width: 0.875em;
  position: absolute;
  top: 0;
  left: 0;
  transition: .3s cubic-bezier(.4, 1.3, .65, 1.1);
  -ms-transition: .3s cubic-bezier(.4, 1.3, .65, 1.1);
  -moz-transition: .3s cubic-bezier(.4, 1.3, .65, 1.1);
  -webkit-transition: .3s cubic-bezier(.4, 1.3, .65, 1.1);
  bottom: 0;
  margin: auto
}

.BP_swtchbox input:checked+.BP_Swtch {
  box-shadow: 0 0 0 0.375em #58b14c inset
}

.BP_swtchbox input:checked+.BP_Swtch .BP_Swtbx_lb {
  left: calc(100% - 0.875em);
  left: -ms-calc(100% - 0.875em);
  left: -moz-calc(100% - 0.875em);
  left: -webkit-calc(100% - 0.875em)
}
<div class="parent">
  <label class="BP_swtchbox" for="BPSwitch">
    <input type="checkbox" id="BPSwitch" class="hide">
      <label class="BP_Swtch" for="BPSwitch">
        <span class="BP_Swtbx_lb"></span>
      </label>
  </label>
</div>

这是父类字体大小为 20px 的屏幕截图......用于开关图标

enter image description here

为此要做什么....

最佳答案

这很有趣。看来当.parent有一个 font-size20px , widthheight.BP_Swtbx_lb (均表示为 0.875em )计算为 17.5 像素。由于像素不能是小数,因此它们会四舍五入,但这里奇怪的是高度四舍五入为 17 而宽度四舍五入为 18。

.parent有一个 font-size22px ,它似乎是完全相反的,height被围捕和width四舍五入。在这种情况下,它们肯定都应该明确地向下舍入,因为它被计算为 19.25 像素。

奇怪的形状似乎是由根据非舍入值而不是舍入值计算的曲线引起的。比较设置非四舍五入值时的形状和显式设置四舍五入值时的形状,前者略微呈矩形,后者完全呈椭圆形。所以渲染曲线和渲染尺寸之间存在不一致。

这似乎只出现在 Chrome 中。 Safari 和 Firefox 都不显示此行为。
现在,如何舍入小数像素取决于浏览器实现,但您认为它至少在内部是一致的。我愿意得出结论,这是一个浏览器错误,应该向 Google Chrome 开发团队报告。

关于html - 边界半径不像预期的那样圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44907899/

相关文章:

javascript - 按元素和类拆分 html

html - 基于 Flex 的 css 对齐

jquery - 使用页脚实现匹配卡高度

javascript - 如何保持并排图像的纵横比,保持图像相同的高度并在图像之间固定填充?

html - 无法使此框响应

html - 强制文本保持在一行

javascript - 使用 jQuery 的背景图像旋转器?

html - 为什么我的右对齐表格在浏览器中没有以 100% 的高度显示?

html - 将 HTML 表格插入 Sharepoint 2013 webpart 脚本

css - 我在哪里可以找到 MDN 上的纯 CSS 模式示例?