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

时间:2017-07-04 13:56:53

标签: html css css3 responsive-design border

codepen

在上面的例子中,我尝试了开关盒样式,我已经试过了em值,当我根据父母写的字体大小为16px时,根据veiwport,字体大小会有变化而改变开关盒的圆圈并不完美,特定字体大小是合适的(例如:父字体大小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>
&#13;
&#13;
&#13;

以下是父类的字体大小为20px的屏幕截图.....用于切换图标

enter image description here

该怎么做......

1 个答案:

答案 0 :(得分:1)

这非常有趣。当.parent font-size 20px width height.BP_Swtbx_lb 0.875em时,.parent表示为font-size计算到17.5像素。由于像素不能是分数,所以它们会变圆,但这里奇怪的是高度向下舍入到17而宽度向上舍入到18。

22px的{​​{1}} height时,它似乎完全相反,width向上舍入, HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersioin\Winlogon DefaultUserName 向下舍入。在这种情况下,它们绝对应该明确地向下舍入,因为它的计算值为19.25像素。

奇怪的形状似乎是由非圆形值而不是舍入值计算的曲线引起的。将非圆形值设置为明确设置圆角值时的形状进行比较,在前一种情况下略微呈矩形,后者则为椭圆形。因此渲染曲线和渲染尺寸之间存在不一致。

这只是Chrome中的情况。 Safari和Firefox都没有显示这种行为 现在,由浏览器实现如何舍入小数像素,但你认为它至少在内部是一致的。我愿意断定这是一个浏览器错误,应该向谷歌Chrome开发团队报告。