自定义CSS复选框不适用于Mozilla,适用于所有其他浏览器

时间:2017-08-02 20:46:32

标签: css input cross-browser

我为Chrome浏览器创建了一个自定义复选框,我在Chrome上开发,但是一旦完成,我就进行了浏览器测试,它根本不适用于Firefox。我在codepen中附上了我的代码副本。除了psuedo类之前和之后,有没有其他方法可以构建自定义复选框?

 [1]: https://codepen.io/Edward-Developer/pen/NvRbzR


HTML

    <div class="img-icon-wrapper">
      <p>            
       <span class="wpcf7-form-control-wrap checkbox-972"><span class="wpcf7-form-
       control     wpcf7-checkbox wpcf7-exclusive-checkbox lori"><span 
       class="wpcf7-list-item first       last"><label><input type="checkbox" 
       name="checkbox-972" value="Lori St. Louis" />     <span class="wpcf7-list-
       item-label">Lori St. Louis</span></label></span></span>       </span>
      </p>
   </div>

CSS


input:before {
    position: absolute;
  width: 38px;
  background: #fff;
  height: 38px;
  content: "";
  border: 5.2px solid blue;
  top: 0;
}

input:before {
    position: absolute;
  width: 38px;
  background: #fff;
  height: 38px;
  content: "";
  border: 5.2px solid $lightBlue;
  top: 0;
}

input[type="checkbox"]:checked:after {
    position: relative;
    width: 10px;
    height: 10px;
    margin-left: -5px;
    margin-top: -4px;
    content: "✓";
    height: 41px;
    width: 19px;
    -webkit-transform: rotate(7deg) skew(0deg);
    left: 8px;
    bottom: 38px;
    font-size: 65px;

}
input[type="checkbox"]:hover:checked:after {
  border-color: $darkBlue;
}

input[type="checkbox"]{
  margin-left:0;
}

2 个答案:

答案 0 :(得分:0)

如果我理解正确,Firefox会忽略:before和:之后父元素不呈现子元素。所以,:before和:after不适用于type = checkbox的输入。

有关跨浏览器的替代方法,请参阅:https://stackoverflow.com/a/21863085/542047

答案 1 :(得分:0)

我有同样的问题。最后,通过添加一个属性使复选框可见

-moz-appearance:initial

此属性本机(基于平台)将其外观用作OS主题。