复选框和单选按钮样式在Firefox中不起作用

时间:2016-07-29 22:35:00

标签: html css

我知道这是一个老问题并且已经多次回答,但我无法弄清楚如何将修复基础与其他示例结合起来。

确定复选框样式后,它在Chrome和Opera中看起来很不错(它应该看起来如何),但在Firefox和IE中它仍然看起来像丑陋的复选框。有没有一种简单的方法来解决这个问题,所以它在所有浏览器中看起来都一样如果是这样,那些对我的CSS有了全新视角的人请帮助我解决这个问题。我正在使用联系表单7,因此HTML不可更改,或者我会根据其他教程自行更改HTML代码。

/*Below is for Radio Buttons*/
.wpcf7-form-control.wpcf7-radio input[type="radio" ] {
    margin: 5px 20px 0px 3px;
    border: 2px solid #35a4d5;
    padding: 10px;
    -webkit-appearance: none;
    border-radius: 50%;
}
.wpcf7-list-item.first .wpcf7-list-item-label,.wpcf7-list-item.last .wpcf7-list-item-label {
    font-size: 18px;
    vertical-align: 5px;
}
.wpcf7-form-control.wpcf7-radio input[type="radio" ]:checked{
  background:#555;
  box-shadow: inset 0px 0px 0px 3px white;
  -webkit-box-shadow: inset 0px 0px 0px 3px white;
  -moz-box-shadow: inset 0px 0px 0px 3px white;
  -o-box-shadow: inset 0px 0px 0px 3px white;
  -webkit-border-radius: 100%;
  -moz-border-radius: 100%;
  -o-border-radius: 100%;
}
.wpcf7-form-control.wpcf7-radio input:focus{
  outline:none;
}
/*END*/



/*Below is for Check Boxes*/
.wpcf7-form-control.wpcf7-checkbox input[type="checkbox" ]{
  margin: 5px 4px 0px 3px;
    border: 2px solid #35a4d5;
    padding: 10px;
    -webkit-appearance: none;
}
.wpcf7-list-item.first.last .wpcf7-list-item-label{
  font-size: 20px;
  vertical-align: 5px;
}
.wpcf7-form-control.wpcf7-checkbox input[type="checkbox" ]:checked{
  background:#555;
  box-shadow: inset 0px 0px 0px 3px white;
  -webkit-box-shadow: inset 0px 0px 0px 3px white;
  -moz-box-shadow: inset 0px 0px 0px 3px white;
  -o-box-shadow: inset 0px 0px 0px 3px white;
}
.wpcf7-form-control.wpcf7-checkbox input:focus{
  outline:none;
}
/*END*/
<span class="wpcf7-form-control-wrap RVCategory">
     <span class="wpcf7-form-control wpcf7-radio">
          <span class="wpcf7-list-item first">
               <span class="wpcf7-list-item-label" style="">Motorhome
               </span> &nbsp;
<input type="radio" name="RVCategory" value="Motorhome" checked="checked">
</span>
<span class="wpcf7-list-item last">
          <span class="wpcf7-list-item-label">Trailer
          </span>&nbsp;
<input type="radio" name="RVCategory" value="Trailer">
</span>
</span>
</span>
<p></p>
<span class="myCheckboxes">
     <span class="wpcf7-form-control-wrap checkbox-112">
          <span class="wpcf7-form-control wpcf7-checkbox">
               <span class="wpcf7-list-item first last">
                    <input type="checkbox" name="checkbox-112[]" value="Electric Generator"> 
                    <span class="wpcf7-list-item-label">Electric Generator</span>
               </span>
          </span>
     </span>
</span>

1 个答案:

答案 0 :(得分:1)

我刚刚做了一个项目,需要自定义复选框和无线电样式,并要求符合跨浏览器标准。不幸的是,只需通过样式化input标记,您就无法在Firefox和大多数IE中实现这一目标。如果您愿意重新构建HTML,这是我使用的方法。

我很快把它拼凑在一起所以我可能错过了我在制作中使用过的东西。非常简单,HTML只需要在输入后输入和标签跟随。

<input type="checkbox" id="checkbox1" name="checkbox">
<label for="checkbox1">Checkbox One</label>

现在CSS看起来像:

/* Hide inputs visually from being seen - don't use display: none as this will break in accessibility */
input[type="checkbox"],
input[type="radio"] {
  float: left;
  opacity: 0.01;
  position: absolute;
}

input[type="checkbox"] + label,
input[type="radio"] + label {
  display: inline-block;
  line-height: 1.4;
  margin: 0;
  padding-left: 30px;
  position: relative;
}

/* Actually create a fake input element with pseudo */
input[type="checkbox"] + label::before,
input[type="radio"] + label::before {
  background: no-repeat center center;
  border: 1px solid #a6a6a6;
  border-radius: 3px;
  content: "";
  cursor: pointer;
  display: block;
  height: 20px;
  left: 0;
  position: absolute;
  top: -1px;
  width: 20px;
}

/* Fake Styling for checked state */
input[type="checkbox"]:checked + label::before,
input[type="radio"]:checked + label::before {
  background-color: #00ba00;
  background-image: url(something);
  background-size: 10px 8px;
  border-color: #00ba00;
}

/* Because this element isn't actually an input I've added the accessibility focus rings */
input[type="checkbox"]:focus + label::before,
input[type="radio"]:focus + label::before {
  outline: auto 5px -webkit-focus-ring-color;
}

/* Radio button styling */
input[type="radio"] + label::before {
  border-radius: 50%;
}

input[type="radio"]:checked + label::before {
  background-color: #00ba00;
  background-image: url(something);
  background-position: center center;
  background-repeat: no-repeat;
  background-size: 8px 8px;
}

以下是行动http://codepen.io/jerrylow/pen/BzPkZw

中的代码