自定义radio,checkbook样式

html代码结构:

<form>
    <fieldset class="checkboxes">
        <label for="checkbox1"><input type="checkbox" id="checkbox1" name="checkbox">checkbox1</label>
        <label for="checkbox2"><input type="checkbox" id="checkbox2" name="checkbox">checkbox2</label>
        <label for="checkbox3"><input type="checkbox" id="checkbox3" name="checkbox">checkbox3</label>
    </fieldset>
    <fieldset class="radios">
        <label for="radio1"><input type="radio" id="radio1" name="radiobox">radio1</label>
        <label for="radio2"><input type="radio" id="radio2" name="radiobox">radio2</label>
        <label for="radio3"><input type="radio" id="radio3" name="radiobox">radio3</label>
    </fieldset>
</form>

方法一

  • 说明:用属性appearance删除<input>的默认样式,并用雪碧图作为背景完成自定义样式。
    兼容性较差,不支持IE浏览器,在FireFox浏览器中无法正常显示,可在Chrome和Edge中正常显示。
  • 主要CSS代码:
/*删除控件默认样式*/
input[type="checkbox"], input[type="radio"] {
    -webkit-appearance: none;
    -moz-appearance: none;
    -ms-appearance: none;
    appearance: none;
}
/*使用雪碧图添加背景*/
input[type="checkbox"] {
    width: 16px;
    height: 16px;
    background-image: url(img/1.png);
    background-position: 0 16px;
}
input[type="checkbox"]:checked {
    background-position: 16px 16px;
}
input[type="radio"] {
    width: 16px;
    height: 16px;
    background-image: url(img/1.png);
    background-position: 0 0;
}
input[type="radio"]:checked {
    background-position:16px 0;
}

方法二

  • 说明:先使用display:none;<input>的默认样式隐藏,再使用伪元素::before插入<label>为checkbox与radio设置样式(此处使用雪碧图做背景)。
    兼容性较好,但不支持IE8及以下。
  • 主要css代码:
/*隐藏input默认样式*/
input[type="checkbox"], input[type="radio"] {
    display: none;
}
/*使用雪碧图添加背景*/
/*注意使用伪元素::before*/
.checkboxes label::before {
    content: "";
    display: inline-block;
    width: 16px;
    height: 16px;
    margin-right: 5px;
    background-image: url(img/1.png);
    background-position: 0 16px;
    vertical-align: bottom;
}
input[type="checkbox"]:checked+label::before {
    background-position: 16px 16px;
}
.radios label::before {
    content: "";
    display: inline-block;
    width: 16px;
    height: 16px;
    margin-right: 5px;
    background-image: url(img/1.png);
    background-position: 0 0;
    vertical-align: bottom;
}
input[type="radio"]:checked+label::before {
    background-position: 16px 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前端工程师和设计师一直都是相爱相杀的两个人。 在拿到UI稿时设计师告诉我要做到99%还原。。。满脸黑线( ̄工 ̄ll...
    Candy_M阅读 3,601评论 0 3
  • 一、背景介绍 下拉列表由select标签实现,单选按钮由表单元素input的type属性radio定义。以下分别是...
    你隔壁的陌生人阅读 15,075评论 0 6
  • 转载请声明 原文链接地址 关注公众号获取更多资讯 第一部分 HTML 第一章 职业规划和前景 职业方向规划定位...
    前端进阶之旅阅读 16,636评论 32 459
  • 掐指一算,已经至少8年不曾静下心来为自己写点儿什么了。也渐渐地收起了有关于未来的所有念想,哪怕是星星点...
    e43436a76095阅读 179评论 0 0
  • 现在城市里的剩男剩女越来越多了,越来越多的人变成了大龄单身青年,那么多人被剩下来的原因是什么呢?有些人说就是要追求...
    浏如阅读 510评论 0 0