是.这是可能的.
你不能直接设置复选框元素的样式,但如果你将一个<label>元素与复选框一起使用,那么你可以实现你想要的效果.
<input type="checkbox" id="field1" class="mycheckbox" />
<label for="field1" class="mycheckbox-label">Label here</label>
Run Code Online (Sandbox Code Playgroud)
然后你的CSS看起来像这样:
.mycheckbox {
display:none;
}
.mycheckbox + label {
padding:20px; /*or however wide your graphic is*/
background:url(/fancy-unchecked.gif) no-repeat left center;
}
.mycheckbox:checked + label {
background:url(/fancy-checked.gif) no-repeat left center;
}
Run Code Online (Sandbox Code Playgroud)
这是一个工作示例:http://jsfiddle.net/TVaPX/(使用Firefox 5测试)
这种方法的问题在于它只适用于现代浏览器.较旧的浏览器可能不支持CSS选择器:checked或+CSS选择器.但如果你没有支持旧版本的IE,那么这将是有效的.上面的例子在IE8中不起作用(它支持+但不支持:checked).
如果您对此不满意,那么您将不得不坚持使用Javascript解决方案.
但是,使用与此类似的方法,您仍然可以使用非常少量的Javascript代码执行此操作:只需要一个单行JS,在选中时切换复选框的类,并且您可以使用上述所有代码,但是使用备用类名而不是:checked选择器.这将适用于IE7和IE8.
希望有所帮助.