前端vue3 巧妙的checkbox 选中框样式

news2024/11/28 7:44:42

我们 做前端页面交互效果的时候 

我们会使用到 checkbox 复选框 做一些交互的效果

我是用的是 nut-ui 组件库中的 checkbox 组件

类似于这样的选中效果

假如 二选一的那种 可以 这样写 交互好看 而不是单纯的 checkbox 框

这里我就不使用 gif 图片了 

大家应该都可以看懂的

我把代码 和样式放在下面

大家可以看看 都应该能看懂的

<template>
    <div class="order-detail-type-container">
        <nut-cell-group title="购票方式">
            <nut-cell>
                <div class="purchase-type-container">
                    <div class="item" :class="{ active: !isSpeedTicket }" @click="() => {
                        isSpeedTicket = false;
                    }
                        ">
                        <div class="content">
                            <div class="title">
                                <div class="icon">
                                    <IconFont font-class-name="iconfont" class-prefix="icon" name="tuipiao" />
                                </div>
                                <div class="txt">支付宝</div>
                            </div>
                            <div class="desc">使用支付宝安全支付</div>
                        </div>
                        <div class="price">
                        </div>
                        <div class="operate">
                            <Checked class="checked-icon" color="#6551FC" />
                            <CheckNormal class="check-normal-icon" color="#6551FC" />
                        </div>
                    </div>
                </div>

            </nut-cell>
            <nut-cell>
                <div class="purchase-type-container">
                    <div class="item" :class="{ active: isSpeedTicket }" @click="() => {
                        isSpeedTicket = true;
                    }
                        ">
                        <div class="content">
                            <div class="title">
                                <div class="icon">
                                    <IconFont font-class-name="iconfont" class-prefix="icon" name="tuipiao" />
                                </div>
                                <div class="txt">支付宝</div>
                            </div>
                            <div class="desc">使用支付宝安全支付</div>
                        </div>
                        <div class="price">
                        </div>
                        <div class="operate">
                            <Checked class="checked-icon" color="#6551FC" />
                            <CheckNormal class="check-normal-icon" color="#6551FC" />
                        </div>
                    </div>
                </div>

            </nut-cell>

        </nut-cell-group>
    </div>
</template>
<script setup lang="ts">
import { IconFont, Checked, CheckNormal } from "@nutui/icons-vue-taro";
import { toRefs } from "vue";

import { ref, watch } from "vue";
const props = defineProps({
    info: Object,
});
const { info } = toRefs(props);
const isSpeedTicket = ref(false);
const emit = defineEmits(["getType"]);
watch(isSpeedTicket, (val) => {
    emit("getType", val);
});
</script>
<style lang="scss">
.order-detail-type-container {
    display: flex;
    flex-direction: column;
    font-size: 24px;

    .purchase-type-container {
        font-size: 24px;

        .item.active {
            background: #fff8f9;

            .content {
                .title {
                    .txt {
                        color: #6551FC;
                        font-size: 24px;
                    }
                }
            }

            .operate {
                .checked-icon {
                    display: block;
                }

                .check-normal-icon {
                    display: none;
                }
            }
        }

        .item {
            padding: 20px;
            border-radius: 10px;
            border: 5px solid #fff8f9;
            display: flex;
            flex-direction: row;
            // width: 100%;

            .content {
                flex: 1;
                display: flex;
                flex-direction: column;
                justify-content: center;
                align-items: flex-start;

                .title {
                    display: flex;
                    flex-direction: row;

                    .icon {
                        display: flex;
                        flex-direction: column;
                        align-items: center;
                        justify-content: center;
                        background: linear-gradient(to right, #875CFD,
                                #6551FC);
                        height: 38px;
                        width: 38px;
                        border-radius: 50px;
                        margin-right: 15px;

                        .iconfont {
                            font-size: 24px;
                            color: #ffffff;
                        }
                    }

                    .txt {
                        font-weight: 500;
                        color: #15181d;
                        font-size: 32px;
                    }
                }

                .desc {
                    margin-top: 15px;
                    color: #858a99;
                    font-size: 22px;
                }
            }

            .price {
                display: flex;
                flex-direction: column;
                align-items: flex-end;
                justify-content: center;

                .title {
                    display: flex;
                    height: 35px;
                    flex-direction: row;
                }

                .desc {
                    color: #858a99;
                    font-size: 22px;
                }
            }

            .operate {
                display: flex;
                flex-direction: column;
                justify-content: center;
                align-items: center;
                width: 80px;

                .checked-icon {
                    display: none;
                }

                .check-normal-icon {
                    display: block;
                }
            }
        }
    }
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1961640.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

A股继续震荡下行,成交量继续一蹶不振。

A股继续震荡下行&#xff0c;成交量继续一蹶不振。今天的A股&#xff0c;让人揪心不已&#xff0c;你们知道是为什么吗&#xff1f;盘面上出现1个重要信号&#xff0c;一起来看看&#xff1a; 1、今天两市低开低走&#xff0c;向下回补了2867点的缺口&#xff0c;让人揪心不已。…

计算机毕业设计选题推荐-基于司机信用评价的货运管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

CUDA_Occupancy_Calculator计算公式

CUDA_Occupancy_Calculator计算公式

6 Java的基本程序设计结构(基本语法5)- 面向对象进阶

文章目录 面向对象进阶一、 static 静态1 静态变量(1)基本定义和用法(2)静态变量内存图2 静态方法(1)基本定义和用法(2)工具类练习:按下面需求写一个工具类3 static注意事项4 重新认识main方法二、继承1 继承的概念2 继承的特点3 继承到底能继承父类中的哪些内容?4 继…

leetcode日记(63)颜色分类

感觉就是排序问题&#xff1f;我使用的是时间复杂度比较高的简单粗暴排序法&#xff0c;时间复杂度O&#xff08;n^2&#xff09;。 class Solution { public:void sortColors(vector<int>& nums) {int nnums.size();for(int i0;i<n;i){for(int ji1;j<n;j){if…

泛微OA BPM 全程数字化业务介绍、管理、财务一体化 数据业务架构图 上帝视角 02

III.泛微业务、管理、财务一体化过程介绍 IV.低代码平台及典型场景搭建过程 V.全程数字化运营平台价值总结 档案管理 档案接收,四性检测,快速可查找 重要:档案管理:架构总图 业务应用都在一个平台,确保档案实现100%归档 自动化档案采集:自动接收各类档案,如文书档案、合…

速通JS模块化规范

目录 1模块化概述 1.1什么是模块化&#xff1f; 1.2为什么需要模块化&#xff1f; 2有哪些模块化规范&#xff1f; 3导入与导出的概念 4CommonJS 规范 4.1初步体验 4.2导出数据 4.3导入数据 4.4扩展理解 4.5浏览器端运行 5ES6 模块化规范 5.1初步体验 5.2Node 中运…

操作系统课程设计:(JAVA)进程管理系统(附源码zip,jdk11,IDEA Ultimate2024 )

一.题目要求描述 本设计的目的是加深对进程概念及进程管理各部分内容的理解&#xff1b;熟悉进程管理中主要数据结构的设计及进程调度算法、进程控制机构、同步机构及通讯机构的实施。要求设计一个允许n个进程并发运行的进程管理模拟系统。 该系统包括有简单的进程控制、同步与…

一行代码教你使用Python制作炫酷二维码

二维码&#xff0c;我们日常生活中随处可见的编码方式&#xff0c;凭借其方便快捷的信息承载能力&#xff0c;已经渗透到各行各业。 MyQR 的介绍 MyQR 是一个 Python 库&#xff0c;用于生成自定义二维码&#xff0c;包括带有 Logo、彩色和动态的二维码。它基于 Python 的 qr…

【基础篇】Docker 镜像管理 THREE

嘿&#xff0c;小伙伴们&#xff01;我是小竹笋&#xff0c;一名热爱创作的工程师。在上一篇文章中&#xff0c;我们探讨了 Docker 的架构与关键组件。今天&#xff0c;让我们一起深入了解一下 Docker 镜像管理的相关知识吧&#xff01; &#x1f4e6; 创建和管理镜像 镜像是…

Qt程序移植至Arm开发板

环境准备&#xff1a; 系统调试工具SecureCRT SecureCRT 是一款支持 SSH 协议的终端仿真软件&#xff0c;可通过串口或网口对评估板系统信息进行查看、对评估板系统进行调试等。 SecureCRT的安装破解 [详细过程2024]-CSDN博客https://blog.csdn.net/2301_76659937/article/det…

2-50 基于matlab的遗传模拟退火算法的聚类算法

基于matlab的遗传模拟退火算法的聚类算法&#xff0c;以模糊K-均值聚类算法为基础&#xff0c;对各样本的聚类中心进行优化&#xff0c;输出聚类可视化结果。聚类类别数可自由输入。程序已调通&#xff0c;可直接运行。 2-50 遗传模拟退火算法的聚类算法 - 小红书 (xiaohongshu…

【源码阅读】Redisson lock源码

Redisson 加锁非常简单&#xff0c;还支持 redis 单实例、redis 哨兵、redis cluster、redis master-slave 等各种部署架构 RLock lock redisson.getLock("cyk-test"); lock.lock(); lock.unlock(); 底层原理 加锁机制 废话不多说&#xff0c;直接看源码&#xf…

Go语言----flag包(导入、配置、以及常用方法Parse()、Parsed()、NArg())

在 Go语言中有很多种方法来处理命令行参数。如果我们只是想简单的获取命令行的参数&#xff0c;可以像Go语言–延迟调用defer、获取命令行参数、局部变量以及全局变量中介绍的不使用任何库&#xff0c;直接使用 os.Args&#xff1b; d但是 Golang 的标准库提供了 flag 包来处理…

机械拆装-基于Unity-本地数据持久化

目录 1. 数据结构简介&#xff1a;数据的集合 1.1 线性数据结构 1.2 非线性数据结构 2. 对数据集合的操作&#xff1a; 3. 数据持久化 3.1 数据的序列化存储 3.2 JSON文件硬盘存储 3.2.1 Json文件允许存储的数据类型 3.2.2 Json文件的语法格式 3.2.3 Json文件的读取 3.2.4 …

Echarts toolbox相关配置 dataZoom缩放

前言:最近开发遇到一个echarts相关问题,需要实现用户鼠标滚动实现图表缩放,或者实现选中某一段区域进行缩放,放大效果; 1.第一个需求就是区域缩放按钮要隐藏掉,用户鼠标放在图表内就默认实现选择效果,并且区域缩放还原按钮不能隐藏,需要在初始化配置这三个属性. // 假设你已经…

孙宇晨建议中国重新考虑“比特币政策”!中美竞争将使加密货币行业受益?美国对“中国崛起”感到焦虑!

近日&#xff0c;前美国总统特朗普发表了一番振奋人心的比特币演讲&#xff0c;令加密货币社群反响热烈。而Tron区块链创始人孙宇晨则建议中国重新考虑其对于比特币的政策立场&#xff0c;并指出中美两国在加密货币领域的竞争&#xff0c;将使整个行业受益。这再次引发了人们对…

未来社交:Facebook如何定义虚拟现实的新时代?

随着科技的飞速发展&#xff0c;虚拟现实&#xff08;VR&#xff09;逐渐从科幻小说中的幻想变成了现实生活中的前沿技术。在这一领域&#xff0c;Facebook&#xff08;现已更名为Meta&#xff09;扮演了重要角色&#xff0c;通过不断的创新和投资&#xff0c;致力于打造一个全…

花几千上万学习Java,真没必要!(三十六)

1、File类&#xff1a; 测试代码1&#xff1a; package filetest.com; import java.io.File; import java.io.IOException; public class FileOperations { public static void main(String[] args) { // 创建新文件File file new File("example.txt"); tr…

18966 两两配对差值最小

这个问题可以通过排序和配对来解决。首先&#xff0c;我们将数组排序&#xff0c;然后我们将数组的第一个元素和最后一个元素配对&#xff0c;第二个元素和倒数第二个元素配对&#xff0c;以此类推。这样&#xff0c;我们可以得到n/2个和&#xff0c;然后我们找出这些和中的最大…