【发布时间】:2011-04-15 21:30:00
【问题描述】:
我在表格中有一个复选框列表。 (该行中的多个 CB 之一)
<tr><td><input type="checkbox" class="custom_image" value="1" id="CB1" /><label for='CB1'> </label></td></tr>
<tr><td><input type="checkbox" class="custom_image" value="2" id="CB2" /><label for='CB2'> </label></td></tr>
<tr><td><input type="checkbox" class="custom_image" value="3" id="CB3" /><label for='CB3'> </label></td></tr>
<tr><td><input type="checkbox" class="custom_image" value="4" id="CB4" /><label for='CB4'> </label></td></tr>
我想用一对自定义开/关图像替换复选框图像,我想知道是否有人对如何使用 CSS 做到这一点有更好的了解?
我找到了这个“CSS ninja”教程,但我不得不承认我觉得它有点复杂。 http://www.thecssninja.com/css/custom-inputs-using-css
据我所知,你可以使用伪类
td:not(#foo) > input[type=checkbox] + label
{
background: url('/images/off.png') 0 0px no-repeat;
height: 16px;
padding: 0 0 0 0px;
}
我的期望是,通过添加上面的 CSS,复选框至少会默认以关闭状态显示图像,然后我会添加以下内容以获得开启
td:not(#foo) > input[type=checkbox]:checked + label {
background: url('/images/on.png') 0 0px no-repeat;
}
不幸的是,我似乎在某处遗漏了关键步骤。我尝试使用自定义 CSS3 选择器语法来匹配我当前的设置 - 但一定缺少一些东西(如果重要,图像大小为 16x16)
http://www.w3.org/TR/css3-selectors/#checked
编辑: 我在教程中遗漏了一些东西,他将图像更改应用于标签而不是输入本身。我仍然没有得到页面上复选框结果的预期交换图像,但我认为我更接近了。
【问题讨论】:
-
有一个名为 Uniform 的 jQuery 插件在这方面做得非常好。
-
遗憾的是我们正在使用原型,我无法改变它(连锁效应会很严重)。我会寻找一个原型插件(花哨的形式)......但我的“个人”目标的一部分是让它使用非 js 方法工作。我知道它可以完成(参见教程)我感觉就像我已经接近了......而且我认为知道如何做到这一点将提高我处理未来类似任务的能力。显然,如果它不可能是方钉圆孔,我会放弃并转向某种 JS 技巧。
-
等等——“纯 CSS”就像没有图像的 CSS 或没有 Javascript 的 CSS?
-
哦 - 我的意思是“半纯”我现在肯定在使用图像,但我想可以使用“数据/mime”标签将图像放入 CSS . (我最近看到了一篇关于这个的文章,虽然我现在不知道确切的位置)
-
等等,“纯 CSS”就像在带有 javascript 和/或额外 dom 节点的 CSS 中一样?
标签: css checkbox css-selectors