自定义图像作为单选按钮
Custom images as radio buttons
我一直在尝试使用HTML,CSS和JavaScript制作自定义单选按钮。我一直在浏览之前关于单选按钮的问题,我觉得我已经实现了这些建议,但我的 jpeg 图像仍然被切成两半。我显然错过了一些东西,但不确定它是什么。下面是我的HTML CSS和JavaScript。任何意见将不胜感激。
<style TYPE="text/css">
.has-js .label_check,
.has-js .label_radio { padding-left: 40px;}
.has-js .label_radio {
background: url(images/radio_button-21.jpg) no-repeat;
width: 33px;
height: 35px;}
.has-js .label_check { background: url(check-off.png) no-repeat; }
.has-js label.c_on { background: url(check-on.png) no-repeat; }
.has-js label.r_on {
background: url(images/radio_button_selected.jpg) no-repeat;
width: 33px;
height: 35px;}
.has-js .label_check input,
.has-js .label_radio input { position: absolute; left: -9999px;}
</style>
</head>
<label class="label_radio" for="radio-01">
<input name="sample-radio" id="radio-01" value="1" type="radio" />
Yes
</label>
<br />
<br />
<label class="label_radio" for="radio-02">
<input name="sample-radio" id="radio-02" value="2" type="radio" />
No
</label>
<br />
<br />
<label class="label_radio" for="radio-03">
<input name="sample-radio" id="radio-03" value="3" type="radio" />
Maybe
</label>
</body>
JavaScript 代码
onload = function() {
var body = gebtn(d,'body')[0];
body.className = body.className && body.className != '' ? body.className + ' has-js' : 'has-js';
if (!d.getElementById || !d.createTextNode) return;
var ls = gebtn(d,'label');
for (var i = 0; i < ls.length; i++) {
var l = ls[i];
if (l.className.indexOf('label_') == -1) continue;
var inp = gebtn(l,'input')[0];
if (l.className == 'label_check') {
l.className = (safari && inp.checked == true || inp.checked) ? 'label_check c_on' : 'label_check c_off';
l.onclick = check_it;
};
if (l.className == 'label_radio') {
l.className = (safari && inp.checked == true || inp.checked) ? 'label_radio r_on' : 'label_radio r_off';
l.onclick = turn_radio;
};
};
};
var check_it = function() {
var inp = gebtn(this,'input')[0];
if (this.className == 'label_check c_off' || (!safari && inp.checked)) {
this.className = 'label_check c_on';
if (safari) inp.click();
} else {
this.className = 'label_check c_off';
if (safari) inp.click();
};
};
var turn_radio = function() {
var inp = gebtn(this,'input')[0];
if (this.className == 'label_radio r_off' || inp.checked) {
var ls = gebtn(this.parentNode,'label');
for (var i = 0; i < ls.length; i++) {
var l = ls[i];
if (l.className.indexOf('label_radio') == -1) continue;
l.className = 'label_radio r_off';
};
this.className = 'label_radio r_on';
if (safari) inp.click();
} else {
this.className = 'label_radio r_off';
if (safari) inp.click();
};
};
很难说不能运行你的代码,或者至少看到它的外观的屏幕截图。 但在我看来,单选按钮(或其周围的包含元素)的宽度和/或高度对于您使用的图像大小来说太小了。 如果是这样,指定适当宽度或高度的 CSS 声明应该修复它。
编辑:为了解决这些事情,我喜欢在Chrome浏览器中完成我的工作,这样我就可以使用其内置的开发人员工具。 在Chrome中,我可以右键单击一个元素,然后选择"检查元素"。 这使我能够浏览 DOM 并查看哪些 CSS 说明符影响每个元素,并通过实验调整它们,直到我诊断出问题为止。
确保图像文件与单选按钮的大小相同。
无论如何,我不明白为什么会有JavaScript。它可以是纯CSS
:http://jsfiddle.net/DerekL/9MtMx/
input[type="radio"]{
-webkit-appearance:none;
-moz-appearance:none;
border-radius:8px;
border:1px solid #dbdbdb;
width:16px;
height:16px;
cursor:pointer;
margin:0 1px;
background-image: -webkit-gradient(linear, left top, left bottom, from(white), to(#f2f2f2));
vertical-align:bottom;
}
input[type="radio"]:checked{
background-position:0px 0px;
background-image: url('checked.png'), -webkit-gradient(linear, left top, left bottom, from(white), to(#f2f2f2));
}
CSS这样做的方式是合适的,但不幸的是,我们仍然需要忍受IE 6,7和8,它们可能不支持这一点。最好的方法是选择JS方法,仅适用于不兼容的浏览器(IE!!!),其余的仍然使用CSS。
相关文章:
- Javascript:图像与单选按钮的值不匹配
- Javascript:单选按钮,并显示基于vaule的图像
- Javascript:单击单选按钮时显示图像
- CSS Html使图像显示在单选按钮的选项上(单选按钮被CSS隐藏)
- 如何使用PHP、提交和单选按钮复制/重命名/覆盖图像
- 显示基于多个单选按钮选择的图像
- 图像为单选按钮
- 使用 Jquery 的单选按钮图像
- 从单选按钮中获取值以选择 html 格式的图像
- 如何将单选按钮替换为还包含提交按钮的图像
- 自定义图像作为单选按钮
- 单击单选按钮并显示图像
- Javascript单选按钮鼠标悬停在移动图像上,使用math.random
- Javascript,切换具有相同名称的单选按钮图像
- 图像作为单选按钮
- 单选按钮和图像滑块
- 需要单击图像地图区域以选择相应的单选按钮
- 如何在javascript中生成从图像单选按钮到提交按钮的表单链接
- 如何用图像替换单选按钮
- Angular JS知道什么是用复选框图像和单选按钮图像触发的