2011-02-25 82 views
3

我想指定一個圖像用於我的未經檢查和檢查值爲html輸入類型複選框和廣播。添加圖像到一個html類型的輸入複選框或無線電

我有這樣的:

background: url("image.png") no-repeat; 

,但它似乎沒有在電臺和複選框唯一的按鈕工作。

有人知道會有用嗎?

+0

希望這不是由於定位,複選框非常小相對於一個按鈕?圖像背景雖然適用,但可能因此而隱藏。 – adarshr 2011-02-25 12:19:46

回答

2

看看這個Ryan Fait - Custom checkboxes and radio buttons ...希望這是你在找什麼;)

+0

我已經看到這個,但它看起來有點複雜,我想知道如果有一個更簡單的方法嗎? – f1wade 2011-02-27 10:00:10

+0

不知道任何,但不要害怕,它不像看起來那麼複雜 – Elwhis 2011-02-27 10:43:05

+0

我只是試圖讓那個瑞安fait的東西工作,但圖像從來沒有工作。 – f1wade 2011-03-11 10:51:38

0

您不能使用純CSS設置複選框和單選按鈕的樣式。你需要獲得一個JavaScript插件(這裏有很多jQuery插件),它們將爲你做到這一點。基本上,它通過保持默認元素的行爲覆蓋默認元素上的另一個元素。

+0

所以沒有辦法在CSS中添加圖像到收音機和複選框,最簡單的方法來做到這一點與javascript – f1wade 2011-02-27 10:01:20

5

我已經找到並努力回答。 與幫助,從這些論壇 http://forums.digitalpoint.com/showthread.php?t=665980

所有代碼如下:您可以複製到一個單一的文件,並添加自己的圖像,它會工作。

<html> 
<script type="text/javascript"> 
//global variables that can be used by ALL the function son this page. 
var inputs; 
var imgFalse = '52 0 ROff.png'; 
var imgTrue = '52 0 ROn.png'; 

//replace the checkbox with an image and setup events to handle it 
function replaceChecks() { 
    //get all the input fields on the page 
    inputs = document.getElementsByTagName('input'); 

    //cycle trough the input fields 
    for(var i=0; i<inputs.length; i++) { 

    //check if the input is a checkbox 
    if(inputs[i].getAttribute('type') == 'checkbox') { 

     //create a new image 
     var img = document.createElement('img'); 

     //check if the checkbox is checked 
     if(inputs[i].checked) { 
      img.src = imgTrue; 
     } else { 
      img.src = imgFalse; 
     } 

     //set image ID and onclick action 
     img.id = 'checkImage'+i; 
     //set image 
     img.onclick = new Function('checkClick('+i+')'); 

     //place image in front of the checkbox 
     inputs[i].parentNode.insertBefore(img, inputs[i]); 

     //hide the checkbox 
     inputs[i].style.display='none'; 
    } 
} 
} 

//change the checkbox status and the replacement image 
function checkClick(i) { 
if(inputs[i].checked) { 
    inputs[i].checked = ''; 
    document.getElementById('checkImage'+i).src=imgFalse; 
} else { 
    inputs[i].checked = 'checked'; 
    document.getElementById('checkImage'+i).src=imgTrue; 
} 
} 

</script> 
</html> 
<body> 
<input type="checkbox" /> 
<script type="text/javascript">replaceChecks();</script> 
</body> 
+0

工作完美,沒有任何問題。我剛剛開始感到困惑,因爲你用空格寫了圖像的名字。謝謝! – 2013-04-06 19:50:31

0

這就是我做到的。我正在使用無線電輸入。當輸入被選中/未被選擇時,輸入框被隱藏並且每個標籤中的圖像改變。

的jsfiddle:http://jsfiddle.net/EhDsf/

HTML:

<div class="options"> 
    <label title="item1"> 
     <input type="radio" name="foo" value="0" /> 
     Item 1 
     <img /> 

    </label> 
    <label title="item2"> 
     <input type="radio" name="foo" value="1" /> 
     Item 2 
     <img /> 
    </label> 
    <label title="item3"> 
     <input type="radio" name="foo" value="2" /> 
     Item 3 
     <img /> 
    </label> 
</div> 

CSS:

div.options > label > input { 
    visibility: hidden; 
} 

div.options > label { 
    display: block; 
    margin: 0 0 0 -10px; 
    padding: 0 0 48px 0; 
    height: 20px; 
    width: 150px; 

} 

div.options > label > img { 
    display: inline-block; 
    padding: 0px; 
    height:60px; 
    width:60px; 
    background: url(https://cdn2.iconfinder.com/data/icons/snipicons/500/thumbs-down-128.png); 
    background-repeat: no-repeat; 
    background-position:center center; 
    background-size:60px 60px; 
} 

div.options > label > input:checked +img { 
    background: url(https://cdn1.iconfinder.com/data/icons/onebit/PNG/onebit_34.png); 
    background-repeat: no-repeat; 
    background-position:center center; 
    background-size:60px 60px; 
} 
1

在複選框,如果你想改變圖像或/和顏色,然後優化的方式是http://jsfiddle.net/nsoni/4cHSB/5/這裏您可以點擊「項目名稱」或「複選框」並獲得效果。

HTML:

<div class="had"> 
     <div class="ch"> 
      <input type="checkbox" id="sho1" name="chk1"> 
      <div class="so"></div> 
      <label for="sho1">Select one</label> 
     </div> 
     <div class="ch"> 
      <input type="checkbox" id="sho2" name="chk2"> 
      <div class="so"></div> 
      <label for="sho2">Select two</label> 
     </div> 
    </div> 

CSS:

input { 
       display: none; 
    } 

     input [type=checkbox]:checked+.so{ 
       background-image:url('http://goo.gl/3tza1X'); 
       background-repeat:no-repeat;background-color:green; 
       border-radius:50%;background-position: -2px -1px; 
    } 

     input [type=checkbox]:checked+.so+label{ 
      color: red; 
    } 

     .so { 
      margin: 2px; float: left;height: 30px;width: 30px; 
      border: 3px solid #D8D8D8;background-color: #4679BD; 
      border-radius: 5px; 
    } 

     .show { 
       margin-left: 30px; 
    } 

     .had { 
       margin: 50px auto;width: 50%;border: 1px solid black; 
       height: 30px;padding:10px; 
    } 

     .ch { 
       float: left;margin-left:20px;width:40% 
    } 

     label { 
       height: 30px;width: 100%;position:relative; 
       display:block;margin-top: 5px; 
    } 
相關問題