vue自定义实现icon选择器

news2024/9/21 2:40:03

<template>

  <div>

    <span class="iconStyle" @click="selectIcon">

      <i :class="value" />

    </span>

    <div class="iconTitle">选择图标</div>

    <el-dialog

      title=""

      :visible.sync="dialogVisible"

      width="40%"

      :close-on-click-modal="false"

      :modal="false"

      :show-close="false"

    >

      <div class="iconList">

        <el-tabs v-model="activeName">

          <el-tab-pane

            v-for="item in list"

            :key="item.label"

            :name="item.label"

            :label="item.label"

          >

            <el-scrollbar wrap-class="scrollbar-wrapper">

              <span class="icon" v-for="(item, index) in item.list" :key="item">

                <i

                  :key="item"

                  :class="[item]"

                  :style="{ color: showIndex == index ? '#3a84ff' : '' }"

                  @click="setIcon(item, index)"

                ></i>

              </span>

            </el-scrollbar>

          </el-tab-pane>

        </el-tabs>

      </div>

      <span slot="footer" class="dialog-footer">

        <el-button type="primary" @click="dialogVisible = false"

          >确定</el-button

        >

        <el-button @click="cancel">取消</el-button>

      </span>

    </el-dialog>

  </div>

</template>

  <script>

export default {

  name: "selectIcon",

  model: {

    prop: "value",

    event: "input",

  },

  props: {

    value: {

      type: String,

      default: "",

    },

  },

  data() {

    return {

      dialogVisible: false,

      activeName: "系统图标",

      showIndex: 0,

      list: [

        // {

        //   label: "线框",

        //   list: [

        //     "el-icon-eleme",

        //     "el-icon-delete",

        //     "el-icon-setting",

        //     "el-icon-user",

        //     "el-icon-phone-outline",

        //     "el-icon-more-outline",

        //     "el-icon-star-off",

        //     "el-icon-goods",

        //     "el-icon-warning-outline",

        //     "el-icon-zoom-in",

        //     "el-icon-zoom-out",

        //     "el-icon-remove-outline",

        //     "el-icon-circle-plus-outline",

        //     "el-icon-circle-check",

        //     "el-icon-circle-close",

        //     "el-icon-help",

        //     "el-icon-minus",

        //     "el-icon-plus",

        //     "el-icon-check",

        //     "el-icon-close",

        //     "el-icon-picture-outline",

        //     "el-icon-picture-outline-round",

        //     "el-icon-upload2",

        //     "el-icon-download",

        //     "el-icon-camera",

        //     "el-icon-video-camera",

        //     "el-icon-bell",

        //     "el-icon-bottom-left",

        //     "el-icon-bottom-right",

        //     "el-icon-back",

        //     "el-icon-right",

        //     "el-icon-bottom",

        //     "el-icon-top",

        //     "el-icon-top-left",

        //     "el-icon-top-right",

        //     "el-icon-arrow-left",

        //     "el-icon-arrow-right",

        //     "el-icon-arrow-down",

        //     "el-icon-arrow-up",

        //     "el-icon-d-arrow-left",

        //     "el-icon-d-arrow-right",

        //     "el-icon-video-pause",

        //     "el-icon-video-play",

        //     "el-icon-refresh",

        //     "el-icon-refresh-right",

        //     "el-icon-refresh-left",

        //     "el-icon-finished",

        //     "el-icon-sort",

        //     "el-icon-sort-up",

        //     "el-icon-sort-down",

        //     "el-icon-rank",

        //     "el-icon-loading",

        //     "el-icon-view",

        //     "el-icon-c-scale-to-original",

        //     "el-icon-date",

        //     "el-icon-edit",

        //     "el-icon-edit-outline",

        //     "el-icon-folder",

        //     "el-icon-folder-opened",

        //     "el-icon-folder-add",

        //     "el-icon-folder-remove",

        //     "el-icon-folder-delete",

        //     "el-icon-folder-checked",

        //     "el-icon-tickets",

        //     "el-icon-document-remove",

        //     "el-icon-document-delete",

        //     "el-icon-document-copy",

        //     "el-icon-document-checked",

        //     "el-icon-document",

        //     "el-icon-document-add",

        //     "el-icon-printer",

        //     "el-icon-paperclip",

        //     "el-icon-takeaway-box",

        //     "el-icon-search",

        //     "el-icon-monitor",

        //     "el-icon-attract",

        //     "el-icon-mobile",

        //     "el-icon-scissors",

        //     "el-icon-umbrella",

        //     "el-icon-headset",

        //     "el-icon-brush",

        //     "el-icon-mouse",

        //     "el-icon-coordinate",

        //     "el-icon-magic-stick",

        //     "el-icon-reading",

        //     "el-icon-data-line",

        //     "el-icon-data-board",

        //     "el-icon-pie-chart",

        //     "el-icon-data-analysis",

        //     "el-icon-collection-tag",

        //     "el-icon-film",

        //     "el-icon-suitcase",

        //     "el-icon-suitcase-1",

        //     "el-icon-receiving",

        //     "el-icon-collection",

        //     "el-icon-files",

        //     "el-icon-notebook-1",

        //     "el-icon-notebook-2",

        //     "el-icon-toilet-paper",

        //     "el-icon-office-building",

        //     "el-icon-school",

        //     "el-icon-table-lamp",

        //     "el-icon-house",

        //     "el-icon-no-smoking",

        //     "el-icon-smoking",

        //     "el-icon-shopping-cart-full",

        //     "el-icon-shopping-cart-1",

        //     "el-icon-shopping-cart-2",

        //     "el-icon-shopping-bag-1",

        //     "el-icon-shopping-bag-2",

        //     "el-icon-sold-out",

        //     "el-icon-sell",

        //     "el-icon-present",

        //     "el-icon-box",

        //     "el-icon-bank-card",

        //     "el-icon-money",

        //     "el-icon-coin",

        //     "el-icon-wallet",

        //     "el-icon-discount",

        //     "el-icon-price-tag",

        //     "el-icon-news",

        //     "el-icon-guide",

        //     "el-icon-male",

        //     "el-icon-female",

        //     "el-icon-thumb",

        //     "el-icon-cpu",

        //     "el-icon-link",

        //     "el-icon-connection",

        //     "el-icon-open",

        //     "el-icon-turn-off",

        //     "el-icon-set-up",

        //     "el-icon-chat-round",

        //     "el-icon-chat-line-round",

        //     "el-icon-chat-square",

        //     "el-icon-chat-dot-round",

        //     "el-icon-chat-dot-square",

        //     "el-icon-chat-line-square",

        //     "el-icon-message",

        //     "el-icon-postcard",

        //     "el-icon-position",

        //     "el-icon-turn-off-microphone",

        //     "el-icon-microphone",

        //     "el-icon-close-notification",

        //     "el-icon-bangzhu",

        //     "el-icon-time",

        //     "el-icon-odometer",

        //     "el-icon-crop",

        //     "el-icon-aim",

        //     "el-icon-switch-button",

        //     "el-icon-full-screen",

        //     "el-icon-copy-document",

        //     "el-icon-mic",

        //     "el-icon-stopwatch",

        //     "el-icon-medal-1",

        //     "el-icon-medal",

        //     "el-icon-trophy",

        //     "el-icon-trophy-1",

        //     "el-icon-first-aid-kit",

        //     "el-icon-discover",

        //     "el-icon-place",

        //     "el-icon-location",

        //     "el-icon-location-outline",

        //     "el-icon-location-information",

        //     "el-icon-add-location",

        //     "el-icon-delete-location",

        //     "el-icon-map-location",

        //     "el-icon-alarm-clock",

        //     "el-icon-timer",

        //     "el-icon-watch-1",

        //     "el-icon-watch",

        //     "el-icon-lock",

        //     "el-icon-unlock",

        //     "el-icon-key",

        //     "el-icon-service",

        //     "el-icon-mobile-phone",

        //     "el-icon-bicycle",

        //     "el-icon-truck",

        //     "el-icon-ship",

        //     "el-icon-basketball",

        //     "el-icon-football",

        //     "el-icon-soccer",

        //     "el-icon-baseball",

        //     "el-icon-wind-power",

        //     "el-icon-light-rain",

        //     "el-icon-lightning",

        //     "el-icon-heavy-rain",

        //     "el-icon-sunrise",

        //     "el-icon-sunrise-1",

        //     "el-icon-sunset",

        //     "el-icon-sunny",

        //     "el-icon-cloudy",

        //     "el-icon-partly-cloudy",

        //     "el-icon-cloudy-and-sunny",

        //     "el-icon-moon",

        //     "el-icon-moon-night",

        //     "el-icon-dish",

        //     "el-icon-dish-1",

        //     "el-icon-food",

        //     "el-icon-chicken",

        //     "el-icon-fork-spoon",

        //     "el-icon-knife-fork",

        //     "el-icon-burger",

        //     "el-icon-tableware",

        //     "el-icon-sugar",

        //     "el-icon-dessert",

        //     "el-icon-ice-cream",

        //     "el-icon-hot-water",

        //     "el-icon-water-cup",

        //     "el-icon-coffee-cup",

        //     "el-icon-cold-drink",

        //     "el-icon-goblet",

        //     "el-icon-goblet-full",

        //     "el-icon-goblet-square",

        //     "el-icon-goblet-square-full",

        //     "el-icon-refrigerator",

        //     "el-icon-grape",

        //     "el-icon-watermelon",

        //     "el-icon-cherry",

        //     "el-icon-apple",

        //     "el-icon-pear",

        //     "el-icon-orange",

        //     "el-icon-coffee",

        //     "el-icon-ice-tea",

        //     "el-icon-ice-drink",

        //     "el-icon-milk-tea",

        //     "el-icon-potato-strips",

        //     "el-icon-lollipop",

        //     "el-icon-ice-cream-square",

        //     "el-icon-ice-cream-round",

        //   ],

        // },

        {

          label: "系统图标",

          list: [

            "el-icon-question",

            "el-icon-platform-eleme",

            "el-icon-delete-solid",

            "el-icon-s-tools",

            "el-icon-user-solid",

            "el-icon-phone",

            "el-icon-more",

            "el-icon-star-on",

            "el-icon-s-goods",

            "el-icon-warning",

            "el-icon-info",

            "el-icon-remove",

            "el-icon-circle-plus",

            "el-icon-success",

            "el-icon-error",

            "el-icon-s-help",

            "el-icon-picture",

            "el-icon-upload",

            "el-icon-camera-solid",

            "el-icon-video-camera-solid",

            "el-icon-message-solid",

            "el-icon-s-cooperation",

            "el-icon-s-order",

            "el-icon-s-platform",

            "el-icon-s-fold",

            "el-icon-s-unfold",

            "el-icon-s-operation",

            "el-icon-s-promotion",

            "el-icon-s-home",

            "el-icon-s-release",

            "el-icon-s-ticket",

            "el-icon-s-management",

            "el-icon-s-open",

            "el-icon-s-shop",

            "el-icon-s-marketing",

            "el-icon-s-flag",

            "el-icon-s-comment",

            "el-icon-s-finance",

            "el-icon-s-claim",

            "el-icon-s-custom",

            "el-icon-s-opportunity",

            "el-icon-s-data",

            "el-icon-s-check",

            "el-icon-s-grid",

            "el-icon-menu",

            "el-icon-share",

            "el-icon-d-caret",

            "el-icon-caret-left",

            "el-icon-caret-right",

            "el-icon-caret-bottom",

            "el-icon-caret-top",

          ],

        },

      ],

    };

  },

  methods: {

    setIcon(row, index) {

      this.showIndex = index;

      this.$emit("input", row);

    },

    cancel() {

        this.dialogVisible = false

        this.showIndex = 0;

        this.$emit('cancelIcon')

    },

    selectIcon() {

      this.dialogVisible = true;

    },

  },

};

</script>

  <style scoped lang="scss">

.iconList {

  .el-tab-pane {

    .el-scrollbar {

      width: 600px;

      height: 388px;

      overflow-x: hidden !important;

      .icon {

        display: inline-block;

        width: calc((100% - 60px) / 6);

        height: 40px;

        border: 1px solid #ededed;

        text-align: center;

        box-sizing: border-box;

        line-height: 38px;

        margin-right: 10px;

        border-radius: 3px;

        margin-top: 10px;

        cursor: pointer;

        &:nth-child(-n + 6) {

          margin-top: 0;

        }

        i {

          font-size: 16px;

          color: #303133;

          transition: all 100ms;

        }

        &:hover {

          box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.15);

          i {

            transform: scale(1.5);

          }

        }

      }

    }

  }

}

.iconStyle {

  display: inline-block;

  width: 85px;

  height: 85px;

  border-radius: 50%;

  border: 1px solid #ccc;

  text-align: center;

  line-height: 116px;

  cursor: pointer;

  i {

    font-size: 60px;

    color: #3a84ff;

  }

}

.iconTitle {

    margin-left: 15px;

    margin-top: 3px;

}

</style>

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

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

相关文章

一周学会Django5 Python Web开发-会话管理(CookiesSession)

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计26条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

力扣:9. 回文数

力扣&#xff1a;9. 回文数 给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 例如&#xf…

jvm面试题-背诵版

按照思维导图抽查和记忆&#xff0c;答案见&#xff1a;四、面试-多线程/并发_scheduledfuture释放-CSDN博客

初学者如何使用QT新建一个包含UI界面的C++项目

文章目录 一、下载并安装QT51、下载安装包2、注册/登录账号3、安装qt6 二、新建QT Widget项目1、新建项目并且运行2、易错点&#xff1a;可能运行成功得到UI界面但是会报错&#xff08;原因是使用了中文路径&#xff09; 一、下载并安装QT5 1、下载安装包 进入下载网址 Windo…

javascript中的class基础入门(1)

javascript中的class start 最近在学习&#xff1a;cocos &#xff0c;准备自己制作小游戏。过程中遇到不少疑问&#xff0c;我计划将这些疑问写成一个系列博客&#xff0c;用以记录。这篇文章来了解 class 1. 前言 1. 前言 本文对应版本 Cocos Creator 3.8。Cocos Creato…

Pytest中测试结果收集:pytest_terminal_summary!

前言 Pytest是Python的一种强大的测试框架&#xff0c;它提供了丰富的功能和插件来满足各种测试需求。 其中&#xff0c;pytest_terminal_summary是一个钩子函数&#xff0c;它允许我们在测试运行结束后&#xff0c;添加自定义的总结信息到测试报告中。这个功能在需要对测试结…

Java 小项目开发日记 04(文章接口的开发、oss图片上传)

Java 小项目开发日记 04&#xff08;文章接口的开发、oss图片上传&#xff09; 项目目录 配置文件&#xff08;pom.xml&#xff09; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sc…

HMAC算法

HMAC HMAC可以用来加密、数字签名、报文验证等。 1. 消息认证码 消息认证码&#xff08;Message Authentication Code&#xff0c;MAC&#xff09;是基于消息和秘钥的公开函数&#xff0c;输出为定长数据&#xff1a; MACC(M,K) 假定通信双发共享秘钥K&#xff0c;发送方A向接…

ubuntu22.04 成功编译llvm和clang 3.4.0,及 bitcode 函数名示例,备忘

1, 获取llvm 仓库 从github上获取&#xff1a; $ git clone --recursive https://github.com/llvm/llvm-project.git 2, 检出 llvmorg-3.4.0 tag 针对llvm 3.4.0版本&#xff0c;检出 $ cd llvm-project $ git tag $ git checkout llvmorg-3.4.0 3, 配置并编译llvm 使用 M…

ARK:《BIG IDEAS 2024》

Cathie Wood所带领的方舟投资&#xff08;ARK&#xff09;发布了年度重磅研究报告《BIG IDEAS 2024》&#xff0c;该报告指出人工智能、公共区块链、多组学测序、能源存储和机器人技术这五大板块的融合将带来全球经济活动的改变。 这五个创新平台正在融合并定义这个技术时代&am…

GoFrame:如何简单地搭建一个简单地微服务

一切资料来源于GoFrame官网&#xff0c; 感兴趣的&#xff0c; 可以直接去官网查阅相关资料。 首先下载框架工具&#xff0c; 下载地址&#xff1a;https://github.com/gogf/gf/releases 然后进入你想要放置的项目文件夹&#xff0c; 执行命令行 gf init {project_name} #pr…

插混、油混、增程式、轻混、强混,啥区别

这里写自定义目录标题 随着我国新能源汽车的大力推进&#xff0c;电车可以说是世界未来的主流&#xff0c;只不过现在是处在一个过渡时代 这是个好时代&#xff0c;因为我们见证并体验着历史过渡的细节 这是个不好的时代&#xff0c;因为我们可能只是未来新新人类的试验品 帮他…

微信小程序iOS禁止上下拉显示白边

先上图暴露出问题 iOS端这个页面明明正好显示的&#xff0c;非要能下拉上拉给显示出来点白边。这样不就不好看了嘛。。 想了想是不是支持页面下拉导致的&#xff0c;加入以下代码到json文件中。 {"enablePullDownRefresh": false,"usingComponents": {} }…

【k8s资源调度--DaemonSet】

1、什么是守护进程 有以下这样一个商品场景&#xff1a; 1、用户在商城查询商品信息&#xff0c;查询商品信息的时候需要登录用户&#xff0c;如果用户想要下单&#xff0c;需要提交到订单服务&#xff0c;最后下单完成后&#xff0c;需要更新仓库的商品数量信息。 2、如果每一…

mysql和redis双写一致性策略分析

mysql和redis双写一致性策略分析 一.什么是双写一致性 当我们更新了mysql中的数据后也可以同时保证redis中的数据同步更新&#xff1b; 数据读取的流程&#xff1a; 1.读取redis,如果value!null,直接返回&#xff1b; 2.如果redis中valuenull&#xff0c;读取mysql中数据对应的…

P2040 打开所有的灯

题目传送门&#xff1a;P2040 打开所有的灯 用深度优先搜索实现的一个填色题。 题目步骤&#xff1a; 1..dfs 首先dfs要判断是否符合题意&#xff0c;如果符合题意就更新最短路&#xff1b; 如果不符合题意就枚举 如果是关的就把周围四个包括 给标记上和原来相反的&#xf…

AI大预言模型——ChatGPT与AI绘图及论文高效写作

原文链接&#xff1a;AI大预言模型——ChatGPT与AI绘图及论文高效写作 2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚于互联网…

python语言1

一、pytho中的注释 1.1注释的理解 程序员在代码中对代码功能解释说明的标注性文字可以提高代码的可读性注释的内容将被python解释器忽略&#xff0c;不被计算机执行 1.2注释的分类 注释分为&#xff1a;单行注释、多行注释、中文声明注释 &#xff08;1&#xff09;单行注…

计算机网络-网络互连和互联网(五)

1.路由器技术NAT&#xff1a; 网络地址翻译&#xff0c;解决IP短缺&#xff0c;路由器内部和外部地址进行转换。静态地址转换&#xff1a;静态NAT&#xff08;一对一&#xff09; 静态NAT&#xff0c;内外一对一转换&#xff0c;用于web服务器&#xff0c;ftp服务器等固定IP的…

大模型的智慧之源:图技术的崛起

自2023年以来&#xff0c;大语言模型&#xff08;Large Language Models&#xff0c;LLMs&#xff09;的兴起已经改变了科技行业的面貌。 科创公司如果不涉足这一领域&#xff0c;似乎就不好意思称自己是科技企业。 然而&#xff0c;随着大语言模型的普及&#xff0c;它固有的…