javascript - 自定义图像作为单选按钮

标签 javascript html css

我一直在尝试使用 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 - 自定义图像作为单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11025091/

相关文章:

html - 在页面上居中导航丸但位置固定

html - 使用 flex 滚动一个 div 而不是另一个?

html - 屏幕变大时调用媒体查询

javascript - 添加多个输入实时 javascript

c# - asp.net 复选框事件未触发

html - 如何为 'width' 元素保留 'hide'

asp.net - ASP NET TreeView 展开节点样式

javascript - 将 servlet 变量传递给 javascript

javascript - 关于 Angular 中构造函数和 ngOnInit() 之间逻辑的混淆

html - 如何使用 CSS 使这些元素正确排列?