自定义单选按钮边框颜色

Posted

技术标签:

【中文标题】自定义单选按钮边框颜色【英文标题】:Custom radio button border color 【发布时间】:2019-06-03 19:41:31 【问题描述】:

为我的单选按钮和边框颜色赋予不同颜色的最佳方式?当单选按钮为真时。

我的代码工作正常,除了当 radio 为 true 时的边框颜色。 为 :after 和 :before 添加了 CSS,请检查以下代码。

CSS3:

.planItem [type="radio"]:checked,
.planItem [type="radio"]:not(:checked) 
    position: absolute;
    left: -9999px;

.planItem [type="radio"]:checked + label,
.planItem [type="radio"]:not(:checked) + label

    position: relative;
    padding-left: 38px;
    cursor: pointer;
    line-height: 20px;
    display: inline-block;
    color: #666;

.planItem [type="radio"]:checked + label:before,
.planItem [type="radio"]:not(:checked) + label:before 
    content: '';
    position: absolute;
    left: 15px;
    top: 10px;
    width: 15px;
    height: 15px;
    border: 1px solid #ddd;
    border-radius: 100%;
    background: #fff;

.planItem [type="radio"]:checked + label:after,
.planItem [type="radio"]:not(:checked) + label:after 
    content: '';
    width: 9px;
    height: 9px;
    background: #0086D6;
    position: absolute;
    top: 13px;
    left: 18px;
    border-radius: 100%;
    -webkit-transition: all 0.2s ease;
    transition: all 0.2s ease;

.planItem [type="radio"]:not(:checked) + label:after 
    opacity: 0;
    -webkit-transform: scale(0);
    transform: scale(0);

.planItem [type="radio"]:checked + label:after 
    opacity: 1;
    -webkit-transform: scale(1);
    transform: scale(1);

.planItem [type="radio"]:checked + label
    background: linear-gradient(315deg, #F9EEFE 0%, #E8F5FF 100%);

.planItem [type="radio"] + label 
    width: 100%;
    padding-top: 10px;
    padding-left: 35px;
    /*border-bottom: 1px solid #E3E9EC;*/
    height: 40px;

JSX:

<div className = "planItem">            

    this.state.planItems && this.state.planItems.map(function (smsType, i)
        return <div className=smsType.id key=i><input type="radio" id=smsType.id name="radio-group-menu" onClick=() => this.planhandleClick(smsType.id)/> 
            <label className="mb-0" htmlFor=smsType.id>smsType.name</label>  
        </div>
    , this)

</div>

如何设置边框颜色,如下图?

【问题讨论】:

在checked + label:before中添加css边框样式 【参考方案1】:

检查电台时添加border: 1px solid #0086D6;

.planItem [type="radio"]:checked + label:before 
    border: 1px solid #0086D6;

希望这会有所帮助。

【讨论】:

【参考方案2】:

请查看sample code。在为整个容器 label:hover 添加悬停时,如果选中或未选中单选,则悬停时应用以下样式.planItem [type="radio"]:hover + label:before border-color: #04acec; ,最后如果选中单选,我们为 :before.planItem [type="radio"]:checked + label::before border-color: #04acec; 添加边框

【讨论】:

以上是关于自定义单选按钮边框颜色的主要内容,如果未能解决你的问题,请参考以下文章

js+css--单选按钮,自定义选中的颜色???(性别按钮,男女)

如何在android中更改单选按钮的颜色?

如何更改单选按钮的颜色?

Material UI:更改未选中单选按钮的颜色

如何更改蚂蚁设计中的单选按钮颜色?

选中单选按钮时如何播放动画?