CSS:在IE11中不工作之前

时间:2016-06-15 18:37:51

标签: html css internet-explorer-11

我用FontAwesome中的图标替换传统的单选按钮。一切都在Chrome和Firefox中运行良好,但是IE11有问题 - 我正在更换单选按钮的图标根本没有出现。

使用工作小提琴进行编辑: https://jsfiddle.net/sow1a04m/

Chrome中的示例:

enter image description here

IE11中的示例:

enter image description here

这是我的HTML:

<tr>
    <td class="vert-align">Valid Signed and dated delivery ticket in patient's record.</td>
    <td class="text-center vert-align">
        <label>
            <input type="radio" name="radio-group-1" id="radio-group-1-Y" value="Y" />
        </label>
    </td>
    <td class="text-center vert-align">
        <label>
            <input type="radio" name="radio-group-1" id="radio-group-1-N" value="N" />
        </label>
    </td>
    <td class="text-center vert-align">
        <label>
            <input type="radio" name="radio-group-1" id="radio-group-1-NA" value="NA" />
        </label>
    </td>
</tr>

这是我的CSS:

#dlg-audit-intake-compliance-checklist input[type=radio] {
    visibility: hidden;
}

#dlg-audit-intake-compliance-checklist input[type=radio]:hover {
    cursor: pointer;
}

#dlg-audit-intake-compliance-checklist input[type=radio]:before {
    visibility: visible;
    font-family: FontAwesome;
    content: "\f10c";
    font-size: 25px;
    text-shadow: 1px 1px 0px #ddd;
    margin-bottom: 10px !important;
}

#dlg-audit-intake-compliance-checklist input[value=Y]:checked:before {
    color: #009C15;
    content: "\f00c";
}

#dlg-audit-intake-compliance-checklist input[value=N]:checked:before {
    color: #AD0000;
    content: "\f00d";
}

#dlg-audit-intake-compliance-checklist input[value=NA]:checked:before {
    color: #F7D200;
    content: "\f05e";
}

我认为这可能与我应用的visibility设置有关,但我无法自行解决。

2 个答案:

答案 0 :(得分:4)

问题是在输入元素上使用伪元素,它在IE中不起作用,而是使用标签作为目标......它实际上不应该在Chrome中工作,因为伪元素假设不起作用单个标签元素。

我更改了此规则以显示您的操作方式,因此您现在可以看到它适用于FontAwesome

#dlg-audit-intake-compliance-checklist label:before {
    font-family: FontAwesome;
    content: "\f10c";
    font-size: 25px;
    text-shadow: 1px 1px 0px #ddd;
    margin-bottom: 10px !important;
}

Updated fiddle

答案 1 :(得分:3)

您无法在浏览器和操作系统中可靠地设置复选框和无线电输入的样式。这不是IE特有的问题。它是一个操作系统控件。使用CSS定位输入标签并隐藏复选框。

HTML

<input type="checkbox" id="checkbox">
<label for="checkbox"></label>

CSS

input[type="checkbox"] {
  display: none;
}

input[type="checkbox"] + label {
  background-image: /* whatever */
}

input[type="checkbox"]:checked + label {
  background-image: /* whatever */
}