一款单选框radio样式

本文介绍了一种使用HTML和CSS实现动态样式切换的技术,通过点击不同按钮改变页面元素的样式,展示了交互式网页设计的基本原理。

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        .radio-btn {
            width: 20px;
            height: 20px;
            display: inline-block;
            float: left;
            margin: 3px 7px 0 0;
            cursor: pointer;
            position: relative;

            border-radius: 100%;
            border: 1px solid #ccc;
            box-shadow: 0 0 1px #ccc;
            background: rgb(255, 255, 255);
            background: -moz-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
            background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, 1)), color-stop(47%, rgba(246, 246, 246, 1)), color-stop(100%, rgba(237, 237, 237, 1)));
            background: -webkit-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
            background: -o-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
            background: -ms-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
            background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0);
        }
        .radio-btn i {
            border: 1px solid #E1E2E4;
            width: 10px;
            height: 10px;
            position: absolute;
            left: 4px;
            top: 4px;
            -webkit-border-radius: 100%;
            -moz-border-radius: 100%;
            border-radius: 100%;
        }
        input{display: none;}
        .checkedRadio {
            box-shadow: inset 0 0 5px 1px #ccc;
        }
        .checkedRadio i {
            background-color: #898A8C;
        }
    </style>
</head>
<body>
<div class="radio-btn" data-level="S">
    <i data-level="S">

    </i>
</div>
<div class="radio-btn" data-level="A">
    <i data-level="A">

    </i>
</div>
<div class="radio-btn" data-level="B">
    <i data-level="B">
    </i>
</div>
<input type="radio" name="radio-btn" value="S">
<input type="radio" name="radio-btn" value="A">
<input type="radio" name="radio-btn" value="B">
<script src="jquery-2.1.4.js"></script>
<script type="text/javascript">

    $(document).on("click",".radio-btn", function (e) {

        var _this = $(this),
                block = _this.parent().parent();
        block.find(".radio-btn").removeClass('checkedRadio');
        _this.addClass('checkedRadio');
        $("input").each(function(){
            if( this.value == _this.data("level")){
                $(this).trigger("click");
                return false;
            }
        });

    });

</script>
</body>

</html>

样式效果如下:



### 自定义或修改 ElementUI Radio 单选框组件的样式 为了自定义或修改 ElementUI 中 `Radio` 组件的样式,可以采用多种方法来确保样式仅应用于特定实例而不影响全局或其他组件。 #### 方法一:使用 `/deep/` 或者 `>>>` 当使用 scoped CSS 文件时,默认情况下无法直接覆盖子组件中的样式。通过使用 `/deep/` 关键字(对于 Vue CLI 3 及以上版本推荐使用 `::v-deep`),可以直接穿透作用域链并应用到子组件上[^2]。 ```scss <style lang="scss" scoped> .el-radio { ::v-deep .el-radio__input.is-checked+.el-radio__label { color: red; } ::v-deep .el-radio__inner::after { width: 8px; /* 修改选中标记大小 */ height: 8px; } &.is-checked { ::v-deep .el-radio__inner { border-color: blue; background: blue; } } } </style> ``` 此代码片段展示了如何改变已选状态下的标签颜色以及内部圆圈的颜色和尺寸。 #### 方法二:利用额外类名 另一种更为灵活的方式是在模板中给目标 `Radio` 添加自定义 class 属性,并基于该类编写特异性更高的 CSS 规则: ```html <template> <div> <el-radio v-for="(item,index) in options" :key="index" :label="item.value" class="custom-radio"> {{ item.label }} </el-radio> </div> </template> <style lang="scss" scoped> .custom-radio { // 定义自己的样式规则... } </style> ``` 这种方法允许更精确地控制哪些元素受到影响,同时也更容易维护。 #### 方法三:创建独立样式表 如果项目中有多个地方需要用到相同的定制化风格,则考虑将这些公用样式抽取出来形成单独的 SCSS/SASS 文件引入到相应页面中也是一个不错的选择。这有助于保持项目的整洁有序并且便于后续调整统一的设计主题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值