2009-09-14 86 views
0

我想完成的事情很简单:通过CSS更改浏览器复选框的布局。可能吗?或者我需要使用JavaScript的呢?如何?CSS自定义复选框布局

在此先感谢!

+0

你是什么意思的浏览器复选框? – rahul 2009-09-14 09:07:40

+0

复选框布局?请更多地解释你的问题。 – Randell 2009-09-14 09:25:48

+0

是否要更改复选框的默认三维外观? – rahul 2009-09-14 09:30:10

回答

1

没关系研究员这样一来,发现我自己的sollution。

我编写的这个脚本要求你为每个复选框设置一个div/span,每个布局使用“checked”和“unchecked”类以及每个复选框中的onclick事件,并使用以下代码(即'b_availcheck'相应的复选框的id):

<div class="checked" onclick="javascript:change_checkbox(this, 'b_availcheck');"></div> 

的JavaScript:

function hide_checkboxes() { 
    var checkboxes = document.getElementsByTagName('input'); 
    for (var i = 0; i < checkboxes.length; i++) { 
     if (checkboxes[i].type == 'checkbox') { 
      checkboxes[i].style.visibility = 'hidden'; 
     } 
    } 
} 

function change_checkbox(e, target) { 
    if (e.className == 'checked') { 
     document.getElementById(target).checked=false; 
     e.className = 'unchecked'; 
    } 
    else { 
     document.getElementById(target).checked=true; 
     e.className = 'checked'; 
    } 
} 

window.onload = hide_checkboxes; 

这个脚本附加一个onload事件的窗口,所以默认复选框得到隐藏在开始..另外,如果JavaScript被禁用,默认的复选框将起作用,而不是这个(很多感谢Tigraine的提示)

0

如果您需要独立于浏览器的自定义控件。

看一看

jQuery custom styled checkbox

如果你不想要一个基于jQuery的一个,然后寻找

Checkboxes, Radio Buttons, Select Lists, Custom HTML Form Elements

+0

我想要更好的没有JQuery的溶剂。我知道如何在这个框架中做到这一点,但在这种情况下不需要使用它,因为我唯一需要的JavaScript就是用于此目的。 – yoda 2009-09-14 09:46:42

+0

凤凰,你的第二个例子使用太多的代码来实现简单的事情,第三个例子实际上使用jquery。 – yoda 2009-09-14 09:54:21

0

这是不可能的CSS,你必须使用JavaScript 。我真的推荐fancy-form

2

我们通常在工作中做的是创建一个自定义Javascript解决方案(一个点击时改变颜色的div),它改变了隐藏复选框的值。

你没有被限制CSS,如果已禁用Javascript这将很好地降低到正常复选框(用于辅助功能很重要)

+0

感谢提示:D – yoda 2009-09-14 10:47:24

+0

+1渐进增强节拍仅JS。但是,重新实施表单控件仍然可能存在可访问性问题;例如yoda的示例代码不能像真正的复选框那样受键盘控制。 – bobince 2009-09-14 12:17:06