[CSS揭秘]自定义单选框和复选框

很多Web前端工程师肯定都会遇到过,在项目中,UI设计师跑来跟你说,我这个地方的表单控件需要设计成这个样子那个样子。但是用CSS却不能够修改这些控件的默认样式,于是乎,只能通过div+javascript技术来进行模拟。特别是在如今移动端的崛起时代,更加注重用户的体验。于是就更加需要这样一种hack技术。

如果对如今的前端框架有过了解,都会知道组件这个概念。那么在这些框架中,都会提供一些单选框或复选框按钮组件。可见大家之前受到表单元素的默认样式的毒害有多深。

今天先给大家简单介绍一下如何通过CSS来实现单选框和复选框组件。

原理其实很简单,单选框就是input[type='radio']而复选框就是input[type='checkbox'] 利用label元素的for属性与表单控件的id相互关联就能起到触发开关的作用。而label元素又是可以通过CSS自定义默认样式的。于是就可以将真正的input标签隐藏起来。

<input type="checkbox" id="awesome"/>
<label for="awesome">AweSome!</label>
input[type="checkbox"]{
    position: absolute;
    clip: rect(0,0,0,0);;
}
input[type="checkbox"] + label::before{
    content: "\a0";
    display: inline-block;
    vertical-align: 0.2em;
    width: 0.8em;
    height: 0.8em;
    margin-right: 0.2em;
    border-radius: 0.2em;
    background: silver;
    text-indent: 0.15em;
    line-height: 0.65;
}
input[type="checkbox"]:checked + label::before{
    content: "\2713";
    background: yellowgreen;
}
input[type="checkbox"]:focus + label::before{
    box-shadow: 0 0 0.1em 0.1em #58a;
}
input[type="checkbox"]:disabled + label::before{
    background: gray;
    box-shadow: none;
    color: #555;
}

Awesome!

 

实战: 开关式按钮

根据前面介绍的方法,可以很容易模拟出一个开关式按钮,也就是直接修改label标签样式使得其看起来和按钮一致。

input[type="radio"]{
    position: absolute;
    clip: rect(0,0,0,0);  
}
input[type="radio"] + label{
    display: inline-block;
    padding: 0.3em 0.5em;
    background: #ccc;
    background-image: linear-gradient(#ddd, #bbb);
    border: 1px solid rgba(0,0,0,0.2);
    border-radius: 0.3em;
    box-shadow: 0 1px white inset;
    text-align: center;
    text-shadow: 0 1px 1px white;
}
input[type="radio"]:checked + label,
input[type="radio"]:active + label{
    box-shadow: 0.05em 0.1em 0.2em rgba(0,0,0,0.6) inset;
    border-color: rgba(0,0,0,0.3);
    background: #bbb;
}

Awesome!!

 

原理很简单,当你掌握了这种方法之后,可以配合JS来实现更多有用的表单控件组件。

转载于:https://www.cnblogs.com/joyjoe/p/7277018.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSS自定义复选框是一种使用CSS样式来自定义HTML复选框的方法。通过使用一些CSS属性和伪类选择器,我们可以改变复选框的外观和行为。 首先,我们可以使用checkbox标签来创建一个复选框。然后,通过设置display属性为none,我们可以隐藏原始的复选框,以便自定义其外观。 接下来,我们可以使用label标签来创建一个自定义复选框图标。通过设置label的display属性为inline-block,并且设置其宽度、高度、背景颜色等属性,我们可以定义复选框的外观。 要实现当复选框被选中时的效果,我们可以使用:checked伪类选择器。通过设置:checked伪类选择器下的label的背景颜色或其他属性,我们可以改变复选框被选中时的样式。 除了基本的样式外,我们还可以使用伪元素选择器,如:before和:after来创建复选框的勾选图标。通过设置这些伪元素选择器的内容、位置和样式,我们可以定义复选框被选中时的勾选图标。 最后,我们可以通过使用CSS动画和过渡属性,为复选框添加动态效果。例如,通过设置复选框的过渡属性和:hover伪类选择器下的样式,我们可以在鼠标悬停时为复选框添加过渡效果。 总的来说,CSS自定义复选框可以帮助我们实现更加个性化和美观的复选框样式。通过使用一些CSS属性、伪类选择器和伪元素选择器,我们可以根据需求自定义复选框的外观和行为,并通过动画和过渡属性为其添加动态效果。这为我们提供了更大的设计自由度和灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值