自定义checkbox, radio样式

17.2.25、nimil

今天开始做百度前端学院的任务,第一个是自定义checkbox, radio样式

checkbox和radio两个标签是不可以改变样式的,background-color、border等属性都对其无效。

但是本身的样式又不太美观:

本身的radio外观;本身的checkedbox外观。

不能改样式,却又如此的不美观,实在不符合我们现在的审美和需求。

这是百度给的一个样式图片:

首先,HTML:

    <div>
        <input type="radio" name="one" id="radio2" >
        <label for="radio2" class="radioOne after radioLabel1"></label>
        <input type="radio" name="one" id="radio" >
        <label for="radio" class="radioOne after radioLabel" ></label><!-- 两个radio -->

        <input type="checkbox" name="two" id="checkbox" >
        <label for="checkbox" class="checkboxLabel after"></label>
    </div>

那么,如何改变样式呢。label标签的for属性,为radiol加上对应的id,就可以实现点击label的时候,对应dadio被选中。

本次使用到了background-img、background-position、checked选择器、

首先隐藏input标签、并为label统一加上背景图:

   input{
       display: none;/*隐藏input*/
   }

  label{    background: url(img/spread.png);background-repeat: no-repeat;  }  /*为label统一加上背景图:*/
  

  .after{
    width: 30px;height: 25px;display: block;/*设置label样式*/
  }/*定义所有label初始样式*/


  为每个标签定位背景图,采用了雪碧图方法:

CSS Sprite、CSS雪碧图应用实例

        .radioLabel{
            background-position: 26% 15%;
        }
        .checkboxLabel{
            background-position: 26% 113%;
        }

  在radio被选中后,改变对应label的样式。这里用到了css选择器:checked。

        #radio2:checked ~ .radioLabel1{
            background-position: 75% 15%;
        }
        #radio:checked ~ .radioLabel{
            background-position: 75% 15%;
        }
        #checkbox:checked ~ .checkboxLabel{
            background-position: 75% 113%;
        }

  这时会出现一个问题,我试了很多次才发现问题处在什么地方。

  

  如图中的1、2,我的label写在对应input下方,如果写在上面,checked选择器是查不到的。上面的css也不会起作用。

  以上。

时间: 2024-08-04 15:57:16

自定义checkbox, radio样式的相关文章

css美化checkbox radio样式

/*check,radio*/ input.check_txt[type='checkbox']{ display: none; } input.check_txt[type='checkbox'] + label{ display: block; float: left; -moz-appearance: none; -webkit-appearance: none; width: 20px; height: 20px; background: #fff; border:2px solid #

自定义checkbox, radio样式总结

任务目的 深入了解html label标签 了解CSS边框.背景.伪元素.伪类(注意和伪元素区分)等属性的设置 了解CSS中常见的雪碧图,并能自己制作使用雪碧图 任务描述 参考 样例(点击查看),实现页面开发,要求实现效果基本一致 任务注意事项 尝试背景图和伪元素两种不同方式实现,对比两种方式各自的优缺点. 注意测试不同情况,尤其是极端情况下的效果. 参考资料 MDN label: 了解html中label的基本知识 MDN background-position: 了解背景图片定位相关知识 M

[ HTML5 表单样式 checkbox | radio ] 自定义checkbox 与radio样式实现思路

自定义checkbox 与radio样式实现思路: 1.隐藏原生的input选框  2.自定义新的选框  3.并通过CSS或JS控制切换是否选中的状态 声明:转载自网络,本人只作为学习之用,如果原作者发现(觉着)有侵权意图敬请联系本人,删除或修改,本人尊重原文作者的劳动并对原文作者的分享表示感谢和敬意... 分析原理: 实现 1.结构:用label绑定input,推荐使用label包裹input,以减少不必要的id: 2.样式:隐藏input标签,为label添加背景或使用其他小标签(<i>&

jQuery实现自定义checkbox和radio样式

jQuery实现自定义checkbox和radio样式 1,起因 最近在工作中要实现自定义式的radio样式,而我们通常使用的时默认的样式,因为自己实在想不到解决的方法,于是开始搜索,最终看到了不错的解决办法,可以完美解决我们遇到的问题. 2,原理 大家都知道在写结构的时候,radio或checkbox都会跟随label一起使用,label的for属性值和input的id值相同的情况下,点击label就可以选中input,这里正是利用label 来覆盖我们的input默认样式,通过给label添

自定义表单样式之checkbox和radio

1,起因 最近在工作中要实现自定义式的radio样式,而我们通常使用的时默认的样式,因为自己实在想不到解决的方法,于是开始搜索,最终看到了不错的解决办法,可以完美解决我们遇到的问题. 2,原理 大家都知道在写结构的时候,radio或checkbox都会跟随label一起使用,label的for属性值和input的id值相同的情况下,点击label就可以选中input,这里正是利用label 来覆盖我们的input默认样式,通过给label添加背景图片(美化的checkbox或radio),也就是

小程序: 自定义 -- 单选radio、多选checkbox的样式

1. 单选 radio (1) wxml <view> <!-- 单项选择器radio-group: 内部由多个<radio/>组成 --> <radio-group bindchange="radioChange" > <view wx:for="{{radioData}}" wx:key="index"> <label> <radio value="{{i

巧用CSS3伪类选择器自定义checkbox和radio的样式

由于原生的checkbox和radio的样式太简陋了,在设计页面的时候,设计师往往会设计自己的checkbox和radio样式.一半情况下,为了适应各个浏览器的兼容性,我们都会用其他的元素替代原生的checkbox和radio,然后用js实现选中和未选中时候的样式,用来模拟checkbox和radio. 例如这种: 用其他元素模拟(以checkbox为例): <div class='checkbox'></div> $('.checkbox').click(function(){

纯css自定义checkbox和radio的样式

以上是结构.说明一下,这样写是为了展示点击文字即可选中的两种方式,因为之前我一直忽略了第二种方法. css部分也是分开写的,其实基本一样,只是为了更直观看清楚: div{ width:200px; height:100px; background:#013879; padding:15px; color:#fff; font-size:14px;} 改变checkbox: .checkbox{ width:12px; height:13px; background:#fff; border:1p

自定义CheckBox的选中与否样式

我们在做APP应用时,经常要用到CheckBox控件,但是系统原有的CheckBox样式又不满足我们的需求,我们就要自定义CheckBox选中与否状态,其实就同Button一样,设置其选择与否背景即可. 布局如下: <CheckBox android:id="@+id/foot_mark_cb" android:layout_width="wrap_content" android:layout_height="wrap_content"