You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Radio Button的精准样式设计?求对应HTML/CSS方案

自定义Radio Button样式实现方案

实现逻辑

  • 隐藏原生radio输入框,通过相邻的自定义元素模拟按钮外观
  • 利用CSS伪类:hover(悬停)和:checked(选中)切换对应状态样式
  • 借助<label>标签实现点击文本也能选中radio的交互

HTML 代码

<div class="radio-group">
  <label class="radio-item">
    <input type="radio" name="radio-choice" value="opt1">
    <span class="radio-btn"></span>
    选项一
  </label>
  <label class="radio-item">
    <input type="radio" name="radio-choice" value="opt2" checked>
    <span class="radio-btn"></span>
    选项二
  </label>
</div>

CSS 代码

/* 容器样式,可根据需求调整布局 */
.radio-group {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 10px;
}

/* 选项行样式 */
.radio-item {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  font-size: 14px;
  font-family: sans-serif;
  user-select: none;
}

/* 隐藏原生radio控件 */
.radio-item input[type="radio"] {
  position: absolute;
  opacity: 0;
}

/* 正常状态的自定义radio按钮 */
.radio-btn {
  width: 18px;
  height: 18px;
  border: 2px solid #cccccc;
  border-radius: 50%;
  background-color: #ffffff;
  transition: all 0.2s ease-in-out;
}

/* 悬停和选中状态的样式 */
.radio-item:hover .radio-btn,
.radio-item input[type="radio"]:checked + .radio-btn {
  border-color: #0077cc;
  background-color: #0077cc;
}

/* 选中状态下的内部白色圆点 */
.radio-item input[type="radio"]:checked + .radio-btn::after {
  content: "";
  display: block;
  width: 8px;
  height: 8px;
  margin: 3px auto;
  border-radius: 50%;
  background-color: #ffffff;
}

效果说明

  • 正常状态:白色圆形按钮,搭配灰色边框
  • 悬停/选中状态:按钮变为蓝色填充+蓝色边框,选中时内部显示白色小圆点
  • 状态切换带有平滑过渡动画,交互体验流畅

内容的提问来源于stack exchange,提问作者Anish Kuls

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:30:44