2009-09-14 88 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