CSS ::before和::after用来做复选框

本文介绍了如何使用CSS的::before和::after伪元素来创建自定义样式的复选框,包括隐藏默认复选框、添加自定义样式以及实现选中状态的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

::before和::after是干嘛的呢

::before选择器在被选元素的内容前面插入内容,:after 选择器在被选元素的内容后面插入内容。

它们都必须使用content 属性来指定要插入的内容(content : "内容,可以为空值";)。如果没有content属性来指定内容的话将无效,

来看例子:

    

看见没,::before直接变没了,同理,after就不演示了效果都是一样的

如果我没说明白的话可以去看看文档http://www.css88.com/book/css/selectors/pseudo-element/before.htm也可以参考这个回答https://www.zhihu.com/question/20436746

了解到before是干嘛的,以及它的必须条件现在就开始用它来做一个复选框的选中和未选中效果。

首先

新建一个首先类型为checkbox的input标签,然后在他的下面在建立一个label标签用for属性去绑定前面新建立的checbox标签

<input  id="btn-checkboxId" class="btn-checkbox" " type="checkbox" />

<label for="btn-checkboxId"></label>

这时候会看到有一个复选框出来了就是它,但是这不好看啊,于是乎用上述介绍过的样式来做一个复选框出来

先将这个复选框隐藏掉,然后用before做一个自己想要的复选框出来,先给label定位,方便后续插入的样式对label进行定位

.btn-checkbox{           

   display:none;

}

.btn-checkbox+label::before{

          position:absolute;
  display:block;
  width:20px;
  height:20px;
  content:'';
  border:1px solid #c0c0c0;
  border-radius:3px;

}

OK,现在的效果应该是这样的

复选框是出来了,但是不能点啊,怎么办呢。咱们再拿after去做个点击之后的

.btn-checkbox+label:after{

          position:absolute;
 top:4px;
 left:4px;
 display:none;
 width:13px;
 height:6px;
 content:'';
 border-bottom:1px solid white;
  border-left:1px solid white;
 transform:rotate(-46deg)
}
.btn-checkbox:checked+label::before{
          background:#3e97eb;
 border:#3e97eb;
}
.btn-checkbox:checked+label:after{
          display:block;
}

效果应该就是这样了.

全部代码附上

<input  id="btn-checkboxId" class="btn-checkbox" " type="checkbox" />

<label for="btn-checkboxId"></label>

.btn-checkbox {
      position: absolute;
      display: none;
}
 .btn-checkbox + label {
      position: relative; /*设置定位,好让后续插入的样式进行定位*/
}
.btn-checkbox + label:after { /*这个是选中之后的√,先设置为隐藏,等选中后在将这些属性显示出来*/
    position: absolute;/*定位元素,调整在复选框的位置*/
    top: 4px;
    left: 4px;
    display: none;/*先将它隐藏,等点击之后在放出来*/
    width: 13px;/*设置√的高度,就是√的右半部分*/
    height: 6px;/*设置√的高度,就是√的左半部分*/
    content: '';/*必设属性,不设不生效*/
    border-bottom: 2px solid white;/*设置√的颜色*/
    border-left: 2px solid white;/*设置√的颜色*/
    box-sizing: border-box;/*宽和高只有13*6,设置的下边框和左边框不会撑大宽和高*/
    transform: rotate(-46deg);/*旋转成一个√√*/
}
.btn-checkbox + label:before {/*这个是没选中的*/
    position: absolute;/*定位元素,调整复选框的位置*/
    display:block;/*设置为一个块级元素*/
    width: 20px;
    height: 20px;
    content: '';/*必设属性,不设不生效*/
    border: 1px solid #c0c0c0;/*设置想要的边框颜色*/
    border-radius: 3px;/*设置边框圆角的形状*/
}
.btn-checkbox:checked+ label:before {
    background: #3e97eb;/*设置复选框里面的颜色*/
    border: #3e97eb;/*设置复选框的边框颜色*/
}
.btn-checkbox:checked+label:after{
display:block;/*设置为一个块级元素,让它变为可见状态*/
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值