技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

如何仅使用HTML和CSS创建自定义单选框radio

作者:admin    时间:2022-8-15 20:8:34    浏览:

在上一文中,我们介绍了纯CSS创建自定义复选框Checkbox,在本文中,将介绍如何仅使用HTML和CSS创建自定义单选框radio。

如何仅使用HTML和CSS创建自定义单选框radio

demodownload

HTML

<input class="custom-radio" name="color" type="radio" id="color-green" value="green">
<label for="color-green">Green</label>

HTML是由一个<input><label>标签组成。

隐藏input

因为我们要自己创建控件,所以要先隐藏原始控件。

.custom-radio {
  position: absolute;
  z-index: -1;
  opacity: 0;
}

opacity: 0 是透明度设置,0表示该元素是透明的,不可见的。

创建单选框radio

.custom-radio + label {
  display: inline-flex;
  align-items: center;
  user-select: none;
}

.custom-radio + label::before {
  content: '';
  display: inline-block;
  width: 1em;
  height: 1em;
  flex-shrink: 0;
  flex-grow: 0;
  border: 1px solid #adb5bd;
  border-radius: 50%;
  margin-right: 0.5em;
  background-repeat: no-repeat;
  background-position: center center;
  background-size: 50% 50%;
}

使用伪元素::before可以模仿创建出单选框radio。

:checked状态下的单选框radio

.custom-radio:checked + label::before {
  border-color: #0b76ef;
  background-color: #0b76ef;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
}

:hover、:active、:focus 和 :disabled 状态的样式

.custom-radio:not(:disabled):not(:checked) + label:hover::before {
  border-color: #b3d7ff;
}

.custom-radio:not(:disabled):active + label::before {
  background-color: #b3d7ff;
  border-color: #b3d7ff;
}

.custom-radio:focus + label::before {
  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}

.custom-radio:focus:not(:checked) + label::before {
  border-color: #80bdff;
}

.custom-radio:disabled + label::before {
  background-color: #e9ecef;
}

总结

本文介绍了如何仅使用HTML和CSS创建自定义单选框radio,伪元素::before的使用是关键。巧妙地使用伪元素,你可以做很多事情,如前面介绍过的:

相关文章

标签: radio  单选框  
x
  • 站长推荐
/* 左侧显示文章内容目录 */