【发布时间】:2010-11-10 09:21:31
【问题描述】:
input 的任何样式都会影响每个输入元素。有没有办法指定样式以仅应用于复选框而不将类应用于每个复选框元素?
【问题讨论】:
标签: css
input 的任何样式都会影响每个输入元素。有没有办法指定样式以仅应用于复选框而不将类应用于每个复选框元素?
【问题讨论】:
标签: css
【讨论】:
outline,而不是border。
【讨论】:
input[type="checkbox"] {
/* your style */
}
但这仅适用于除 IE7 及以下版本之外的浏览器,对于那些您必须使用类的浏览器。
【讨论】:
虽然 CSS 确实为您提供了一种方法来实现特定于复选框类型或其他类型的样式,但不支持此功能的浏览器会出现问题。
我认为在这种情况下您唯一的选择是将类应用于您的复选框。
只需将 class="checkbox" 添加到您的复选框中即可。
然后在您的 css 代码中创建该样式。
你可以做的一件事是:
main.css
input[type="checkbox"] { /* css code here */ }
ie.css
.checkbox{ /* css code here for ie */ }
然后使用IE特定的css包括:
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]-->
您仍然需要添加该类以使其在 IE 中工作,并且在其他不支持 IE 的非 IE 浏览器中将无法工作。但这将使您的网站具有前瞻性的 css 代码,并且随着 IE 获得支持,您将能够从复选框中删除 ie 特定的 css 代码以及 css 类。
【讨论】:
由于 IE6 不支持属性选择器,您可以将只有 IE6(带有条件 cmets)才能看到的脚本和 jQuery 或 Dean Edwards 的 IE7.js 组合起来。
IE7(.js) 是一个 JavaScript 库,使 Microsoft Internet Explorer 的行为类似于符合标准的浏览器。它修复了许多 HTML 和 CSS 问题,并使透明 PNG 在 IE5 和 IE6 下正常工作。
使用类或 jQuery 或 IE7.js 的选择取决于您的好恶以及您的其他需求(可能是整个网站的 PNG-24 透明度,而不必依赖具有回退到 1 位的完全透明度的 PNG-8 IE6 上的透明度 - 仅由 Fireworks 和 pngnq 等创建)
【讨论】:
类也很好用,比如:
<style>
form input .checkbox
{
/* your checkbox styling */
}
</style>
<form>
<input class="checkbox" type="checkbox" />
</form>
【讨论】:
form 标签对于将输入控件绑定到默认提交控件不是必需的吗?
我最近发现了一些用于样式单选按钮和复选框的东西。之前,我不得不使用 jQuery 和其他东西。但这太简单了。
input[type=radio] {
padding-left:5px;
padding-right:5px;
border-radius:15px;
-webkit-appearance:button;
border: double 2px #00F;
background-color:#0b0095;
color:#FFF;
white-space: nowrap;
overflow:hidden;
width:15px;
height:15px;
}
input[type=radio]:checked {
background-color:#000;
border-left-color:#06F;
border-right-color:#06F;
}
input[type=radio]:hover {
box-shadow:0px 0px 10px #1300ff;
}
您可以对复选框执行相同的操作,显然将input[type=radio] 更改为input[type=checkbox] 并将border-radius:15px; 更改为border-radius:4px;。
希望这对您有所帮助。
【讨论】:
Trident 为复选框和单选按钮控件提供::-ms-check 伪元素。例如:
<input type="checkbox">
<input type="radio">
::-ms-check {
color: red;
background: black;
padding: 1em;
}
在 Windows 8 的 IE10 中显示如下:
【讨论】:
我创建自己的无标签解决方案
input[type=checkbox] {
position: relative;
cursor: pointer;
}
input[type=checkbox]:before {
content: "";
display: block;
position: absolute;
width: 16px;
height: 16px;
top: 0;
left: 0;
border: 2px solid #555555;
border-radius: 3px;
background-color: white;
}
input[type=checkbox]:checked:after {
content: "";
display: block;
width: 5px;
height: 10px;
border: solid black;
border-width: 0 2px 2px 0;
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
position: absolute;
top: 2px;
left: 6px;
}
<input type="checkbox" name="a">
<input type="checkbox" name="a">
<input type="checkbox" name="a">
<input type="checkbox" name="a">
input[type=checkbox] {
position: relative;
cursor: pointer;
}
input[type=checkbox]:before {
content: "";
display: block;
position: absolute;
width: 20px;
height: 20px;
top: 0;
left: 0;
background-color:#e9e9e9;
}
input[type=checkbox]:checked:before {
content: "";
display: block;
position: absolute;
width: 20px;
height: 20px;
top: 0;
left: 0;
background-color:#1E80EF;
}
input[type=checkbox]:checked:after {
content: "";
display: block;
width: 5px;
height: 10px;
border: solid white;
border-width: 0 2px 2px 0;
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
position: absolute;
top: 2px;
left: 6px;
}
<input type="checkbox" name="a">
<input type="checkbox" name="a">
<input type="checkbox" name="a">
<input type="checkbox" name="a">
【讨论】:
position: relative;
感谢所有为这篇文章做出贡献的人。 看看我使用纯 CSS 能够完成什么。
input[type=checkbox] {
position: absolute;
cursor: pointer;
width: 0px;
height: 0px;
}
input[type=checkbox]:checked:before {
content: "";
display: block;
position: absolute;
width: 34px;
height: 34px;
border: 4px solid #FFCB9A;
border-radius: 20px;
background-color: #445768;
transition: all 0.2s linear;
}
input[type=checkbox]:before {
content: "";
display: block;
position: absolute;
width: 34px;
height: 34px;
border: 4px solid #FFCB9A;
border-radius: 3px;
background-color: #445768;
}
input[type=checkbox]:after {
content: "";
display: block;
width: 0px;
height: 0px;
border: solid #FFCB9A;
border-width: 0 0px 0px 0;
-webkit-transform: rotate(180deg);
-ms-transform: rotate(180deg);
transform: rotate(180deg);
position: absolute;
top: 0px;
left: 50px;
transition: all 0.2s linear;
}
input[type=checkbox]:checked:after {
content: "";
display: block;
width: 12px;
height: 21px;
border: solid #FFCB9A;
border-width: 0 5px 5px 0;
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
position: absolute;
top: 2px;
left: 14px;
}
<input type="checkbox">
摘要
因此,以下控制我们通过添加 h:0 和 w:0 隐藏的实际复选框。
input[type=checkbox] {...}
其余部分控制虚拟复选框。
这控制了选中时虚拟复选框的背景。
input[type=checkbox]:checked:before {...}
这将控制未选中时虚拟复选框的背景。
input[type=checkbox]:before {...}
当 UNCHECKED 时,这控制虚拟复选框的前景。
input[type=checkbox]:after {...}
这在 CHECKED 时控制虚拟复选框的前景。
input[type=checkbox]:checked:after {...}
我真的希望它能像它帮助我一样帮助你:)
【讨论】: