自定义checkbox,redio等

本文通过CSS代码展示了如何自定义HTML中的复选框样式,包括未选中和选中状态的不同显示效果。

直接上代码:

看的懂看,看不懂拉到。

.messageState li {list-style: none;float: left;padding-right:30px;font-size: 16px;color: #1e1e1e;-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;}
.messageState li input[type="checkbox"] {position: absolute;clip: rect(0, 0, 0, 0);}
.messageState li input[type="checkbox"] + label::before {
    content: "\a0";
    display: inline-block;
    vertical-align: 0px;
    width: 16px;
    height: 16px;
    margin-right: 10px;
    background-color: #fff;
    border: 1px solid #ccc;
    border-radius: 2px;
    text-indent: 2px;
    line-height: 13px;
}
.messageState li input[type="checkbox"]:checked + label::before {
    content: "\2713";
    color: white;
    background-color: #009FE1;
}
.messageState li input[type="checkbox"]:focus + label::before {
    box-shadow: 0 0 1px 3px #eee;
}
.messageState li input[type="checkbox"]:disabled + label::before {
    box-shadow: none;
    background-color: gray;
    color: #555;
}

转载于:https://www.cnblogs.com/clj2017/p/8962166.html

### 关于 `el-radio` 的全选功能 在 Element UI 中,`el-radio` 组件本身并不支持多选或全选操作,因为其设计初衷是为了提供单选项的选择机制。然而,在某些场景下确实存在对于一组单选按钮进行批量处理的需求。 为了实现类似于“全部选中”的效果,可以考虑采用其他组件组合的方式达成目的: #### 使用 `el-checkbox` 替代方案 如果目标是让用户能够一次性选择多个项,则建议使用 `el-checkbox` 来代替 `el-radio`。这样可以直接利用 `el-checkbox-group` 提供的内置全选/取消全选功能[^2]。 ```html <template> <div> <!-- 全选 --> <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox> <br /> <!-- 多选框组 --> <el-checkbox-group v-model="checkedCities"> <el-checkbox v-for="(city,index) in cities" :key="index" :label="city">{{ city }}</el-checkbox> </el-checkbox-group> </div> </template> <script> export default { data() { return { checkAll: false, checkedCities: [], cities: ['上海', '北京', '广州', '深圳'], isIndeterminate: true }; }, methods: { handleCheckAllChange(val) { this.checkedCities = val ? this.cities : []; this.isIndeterminate = false; } } }; </script> ``` #### 自定义逻辑模拟 “全选” 当必须保留 `el-radio` 行为的同时又希望引入某种形式上的“全选”,可以通过编程方式控制各个 `el-radio` 的状态来间接达到这一目的。这通常涉及到遍历所有可能被影响到的单项并手动更新它们的状态[^3]。 ```html <template> <div> <button @click="selectAllRadios()">点击这里执行伪全选</button> <br /><br /> <el-radio-group v-model="selectedOption"> <el-radio v-for="(option, index) in options" :key="index" :label="option.value">{{ option.text }}</el-radio> </el-radio-group> </div> </template> <script> export default { data() { return { selectedOption: null, options: [ { text: '选项一', value: 'A' }, { text: '选项二', value: 'B' }, { text: '选项三', value: 'C' } ] }; }, methods: { selectAllRadios() { // 这里只是简单地选择了第一个选项作为示范, // 实际应用可根据业务需求调整具体行为。 const firstValue = this.options.length > 0 && this.options[0].value || ''; this.selectedOption = firstValue; console.log(`已将 ${firstValue} 设定为当前选定`); } } }; </script> ``` 需要注意的是,上述两种解决方案都偏离了传统意义上的“全选”概念——即允许用户通过一次交互动作同时激活多个独立控件。因此,在实际项目开发过程中应当谨慎评估是否真的有必要这样做以及如何更好地传达给最终使用者这种特殊的行为模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值