html


 <label>
    <input type="checkbox" class="hidden-input" />
    <span class="your style about checkbox"></span>
    记住我
</label>


 css


 .hidden-input {
    opacity: 0;
    position: absolute;
    z-index: -1;
}

input[type=checkbox]+span {
    /* your style goes here */
    display: inline-block;
    height: 1em;
    width: 1em;
    border-radius: 4px;
    background-color: gray;        
}

/* active style goes here */
input[type=checkbox]:checked+span {
    background-color: red;
}

建议你这么做,不需要js,你可以完全自定义你想要的东西。
ps:对于所有长得丑还不让你给它打扮的html元素,你都可以尝试这种方案,哪怕动用js。

无奈的天然卷 answered 9 years, 9 months ago

把input隐藏,外面套label,再里面加个span,样式写在span上,让label覆盖在span上面,js去改active的class


 <label for="remember" class="text-muted"><span class="circle-btn"></span><input type="radio" id="remember" style="display:none;" />记住密码</label>


 css


 label {
    -webkit-user-select: none;
}
.circle-btn {
    width: 18px;
    height: 18px;
    border-radius: 100%;
    border: 1px solid #808080;
    transition: all 0.4s;
    -moz-transition: all 0.4s ease;
    -o-transition: all 0.4s ease;
    -webkit-transition: all 0.4s ease;
    transition: all 0.4s ease;
    display: inline-block;
    vertical-align: middle;
    margin: -4px 3px 0 0;
}
.circle-btn.active {
    border-width: 5px;
    border-color: #1dace8;
}

其实不用js也可以实现。。不过我还没尝试过

右代宫、知夏 answered 9 years, 9 months ago

css 设置 width height

aruru answered 9 years, 9 months ago

现在浏览器都喜欢用 Shadow DOM 之流将这种控件的代码封装起来,如果浏览器不提供 API 的话能做的东西其实比较有限。我搜索了一圈似乎并没有看到有类似的 API,大部分人似乎都是自定义来着。使用 -webkit-appearance 属性可以不显示浏览器给的默认样式,这样我们就可以自己定义空间的样式表了,以下是一个 DEMO: http://runjs.cn/detail/bqnpmle9

老大别管我快肘 answered 9 years, 9 months ago

Your Answer