【前端系列】Element-UI 悟道

news2025/3/3 4:24:49

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 一.介绍
      • 1.官网
      • 2.什么是 element?
      • 3.特点
      • 4.设计原则
    • 二.使用
      • 1.安装
      • 2.完整引入
      • 3.按需引入
      • 4.全局配置
      • 5.修改字体大小
      • 6.刷新功能
      • 7.跳转指定页面
    • 三.el-button
      • 1.效果
      • 2.按钮分类
      • 3.按钮样式
      • 4.按钮状态
      • 5.按钮分组
      • 6.按钮尺寸
    • 四.常用组件地址
      • 1.布局容器
      • 2.表格
      • 3.input
      • 4.图标
      • 5.表单
      • 6.日历
      • 7.按钮
      • 8.分页
      • 9.加载
      • 10.标签
    • 五.常见问题
      • 1.分页查询
      • 2.复制按钮
      • 3.超过后省略
      • 4.刷新当前页面
      • 5.跳转
      • 6.头部 2 个按钮
      • 7.键盘点击事件

一.介绍

1.官网

官网地址

2.什么是 element?

Element UI 是一个基于 Vue.js 的开源用户界面框架,用于构建 Web 应用程序的用户界面。它提供了一系列的可重用的 UI 组件,包括按钮、表单、对话框、菜单、表格、图表等,以帮助开发者更轻松地构建功能丰富的前端界面。Element UI 设计风格简洁美观,易于定制和使用,因此它在许多 Vue.js 项目中被广泛使用。

3.特点

Element UI 的特点包括:

  1. 丰富的 UI 组件:Element UI 提供了许多常见的 UI 组件,可以用于构建各种类型的 Web 应用程序。
  2. 响应式设计:组件能够根据不同的屏幕尺寸和设备自动适应,以确保用户在不同平台上都有良好的体验。
  3. 可定制性:开发者可以根据项目的需求对 Element UI 的组件进行自定义,包括颜色、样式和布局。
  4. 国际化支持:Element UI 提供了多语言支持,可以轻松实现国际化的 Web 应用。
  5. 活跃的社区和文档:Element UI 拥有庞大的用户社区和丰富的文档资源,开发者可以在社区中获得支持和分享经验。

Element UI 的主要目标是帮助开发者快速构建漂亮和功能强大的前端界面,特别适用于基于 Vue.js 的项目。如果您正在使用 Vue.js 来构建 Web 应用程序,Element UI 可能是一个有用的工具,可以加速开发过程并提升用户体验。

4.设计原则

一致性 Consistency:

  • **与现实生活一致:**与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;
  • **在界面中一致:**所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。

反馈 Feedback:

  • **控制反馈:**通过界面样式和交互动效让用户可以清晰的感知自己的操作;
  • **页面反馈:**操作后,通过页面元素的变化清晰地展现当前状态。

效率 Efficiency:

  • **简化流程:**设计简洁直观的操作流程;
  • **清晰明确:**语言表达清晰且表意明确,让用户快速理解进而作出决策;
  • **帮助用户识别:**界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。

可控 Controllability:

  • **用户决策:**根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;
  • **结果可控:**用户可以自由的进行操作,包括撤销、回退和终止当前操作等。

二.使用

1.安装

npm i element-ui -S

CDN:

<!-- 引入样式 -->
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<!-- 引入组件库 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>

2.完整引入

在 main.js 中写入以下内容:

import Vue from "vue";
import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
import App from "./App.vue";

Vue.use(ElementUI);

new Vue({
  el: "#app",
  render: (h) => h(App),
});

以上代码便完成了 Element 的引入。需要注意的是,样式文件需要单独引入。

3.按需引入

借助 babel-plugin-component,我们可以只引入需要的组件,以达到减小项目体积的目的。

首先,安装 babel-plugin-component:

npm install babel-plugin-component -D

然后,将 .babelrc 修改为:

{
  "presets": [["es2015", { "modules": false }]],
  "plugins": [
    [
      "component",
      {
        "libraryName": "element-ui",
        "styleLibraryName": "theme-chalk"
      }
    ]
  ]
}

接下来,如果你只希望引入部分组件,比如 Button 和 Select,那么需要在 main.js 中写入以下内容:

import Vue from "vue";
import { Button, Select } from "element-ui";
import App from "./App.vue";

Vue.component(Button.name, Button);
Vue.component(Select.name, Select);
/* 或写为
 * Vue.use(Button)
 * Vue.use(Select)
 */

new Vue({
  el: "#app",
  render: (h) => h(App),
});

4.全局配置

在引入 Element 时,可以传入一个全局配置对象。该对象目前支持 sizezIndex 字段。size 用于改变组件的默认尺寸,zIndex 设置弹框的初始 z-index(默认值:2000)。按照引入 Element 的方式,具体操作如下:

完整引入 Element:

import Vue from "vue";
import Element from "element-ui";
Vue.use(Element, { size: "small", zIndex: 3000 });

按需引入 Element:

import Vue from "vue";
import { Button } from "element-ui";

Vue.prototype.$ELEMENT = { size: "small", zIndex: 3000 };
Vue.use(Button);

按照以上设置,项目中所有拥有 size 属性的组件的默认尺寸均为 ‘small’,弹框的初始 z-index 为 3000。

5.修改字体大小

要增大 Element UI 中提供的刷新图标,可以在 i 标签中添加 font-size 样式来设置图标大小。例如,将 font-size 设置为 20px 可以将图标大小增大为原来的两倍: html <i class="el-icon-refresh" style="margin-right: 15px; font-size: 20px" @click="refreshPage"></i> 在上述代码中,将 font-size 设置为 20px 可以将刷新图标大小增大为原来的两倍。您可以根据实际需要调整 font-size 的值来设置图标大小。

6.刷新功能

要在 el-header 组件中添加一个刷新图标并实现刷新当前页面的功能,可以在 el-header 标签内添加一个 i 标签,并添加一个点击事件来实现刷新功能。具体步骤如下:

在模板中添加一个 i 标签,并添加一个点击事件。 在上述代码中,添加了一个名为 刷新i 标签,并通过 @click 监听了该标签的点击事件,并调用了 refreshPage 方法。el-icon-refresh 是一个 Element UI 中提供的刷新图标。

<el-header style="text-align: right; font-size: 12px">
<el-dropdown><i class="el-icon-setting" style="margin-right: 15px"></i>
  <el-dropdown-menu slot="dropdown">
    <el-dropdown-item>新增</el-dropdown-item>
  </el-dropdown-menu>
</el-dropdown>
<span>kwan</span> 
  <i class="el-icon-refresh" style="margin-left: 15px; cursor: pointer" @click="refreshPage">
  </i>
</el-header>

methods 中定义 refreshPage 方法,使用 location.reload() 方法来刷新当前页面。 在上述代码中,refreshPage 方法使用 location.reload() 方法来刷新当前页面。 这样,当用户点击 刷新 图标时,就会触发 refreshPage 方法,从而刷新当前页面。

methods: {
    refreshPage()
    {
        location.reload();
    }
}

7.跳转指定页面

跳转指定页面并添加合适的图标

<router-link to="/home/users">
  <el-menu-item index="/users" class="left-aside-item">
    <i class="el-icon-user"></i>
    <span slot="title">用户管理</span>
  </el-menu-item>
</router-link>

三.el-button

1.效果

el-button 提供的功能已经比较完善了,拿来即可即可。注意不推荐自己定义 style 来修改默认样式,容易导致外观不统一。

image-20230714153116110

2.按钮分类

el-button 按钮的分类基本是靠颜色区分的,另外还有一种文本按钮type="text",文本按钮由于比较小,比较适合用于表格每行的操作栏部分。

按钮分类:
<el-button>默认</el-button>
<el-button type="primary">primary</el-button>
<el-button type="success">success</el-button>
<el-button type="info">info</el-button>
<el-button type="warning">warning</el-button>
<el-button type="danger">danger</el-button>
<el-button type="text">text</el-button>

3.按钮样式

Element 提供了朴素按钮、圆角按钮、圆形按钮,需要注意的是圆形按钮一般只放一个图标进去,代码如下:

按钮样式:
<el-button type="primary" plain>朴素按钮</el-button>
<el-button type="primary" round>圆角按钮</el-button>
<el-button type="primary" circle icon="el-icon-search"></el-button>

4.按钮状态

按钮状态其实就是 HTML 标准的功能,通过 disabled 实现禁用即可。

按钮状态:
<el-button type="primary">正常</el-button>
<el-button type="primary" disabled>禁用</el-button>

5.按钮分组

按钮分组很好用,像常见的分页按钮,分成一组的话更加好看,通过<el-button-group>将按钮包裹起来,即可实现。

按钮分组:
<el-button-group>
  <el-button type="primary" icon="el-icon-arrow-left">上一页</el-button>
  <el-button type="primary">
    下一页
    <i class="el-icon-arrow-right el-icon--right"></i>
  </el-button>
</el-button-group>

6.按钮尺寸

饿了提供了默认、中、小、很小四种尺寸,代码如下:

按钮的尺寸:
<el-button>默认</el-button>
<el-button type="primary" size="medium">medium</el-button>
<el-button type="primary" size="small">small</el-button>
<el-button type="primary" size="mini">mini</el-button>

四.常用组件地址

组件地址

1.布局容器

容器地址

2.表格

表格地址

3.input

input 地址

4.图标

图标地址

5.表单

表单地址

6.日历

日历地址

7.按钮

按钮地址

8.分页

分页地址

9.加载

加载地址

10.标签

标签地址

五.常见问题

1.分页查询

<el-main>
  <el-table :data="userlist" v-loading="loading">
    <el-table-column prop="id" label="序号" width="50"></el-table-column>
    <el-table-column
      prop="question"
      label="问题"
      width="240"
    ></el-table-column>
    <el-table-column prop="response" label="答案"></el-table-column>
    <el-table-column label="创建时间" width="170">
      <template slot-scope="props">
        {{ props.row.createTime | dateFormat }}
      </template>
    </el-table-column>
    <el-table-column prop="详情" label="详情" width="100">
      <template slot-scope="props">
        <a href="#" @click.prevent="gotoDetail(props.row.id)">详情</a>
      </template>
    </el-table-column>
  </el-table>
  <el-pagination
    class="pagination"
    background
    :page-size="pageSize"
    :total="total"
    @current-change="handleCurrentChange"
  ></el-pagination>
</el-main>
<script>
import axios from "axios";
export default {
  name: "MyChat",

  data() {
    return {
      // 用户列表数据
      userlist: [],
      loading: false,
      currentPage: 1,
      pageSize: 5,
      total: 0,
    };
  },

  created() {
    // 调用请求数据的方法
    this.initCartList();
  },

  methods: {
    refreshPage() {
      location.reload();
    },
    gotoDetail(id) {
      this.$router.push("/home/chatinfo/" + id);
    },

    async initCartList() {
      this.loading = true;
      const { data: res } = await axios.get(
        "http://localhost:8888/chatbot/page",
        {
          params: {
            page: this.currentPage,
            pageSize: this.pageSize,
          },
        }
      );
      if (res.code === 200) {
        this.userlist = res.result.records;
        this.total = res.result.total;
      }
      this.loading = false;
    },

    handleCurrentChange(currentPage) {
      this.currentPage = currentPage;
      this.initCartList();
    },
  },
};
</script>

2.复制按钮

<div class="button-container">
  <el-button @click="copyCode">复制回答</el-button>
</div>

<script>
// 导入 axios 请求库
import axios from "axios";
import ClipboardJS from "clipboard";
export default {
  methods: {
    copyCode() {
      const codeBlock = document.getElementById("td-response");
      const range = document.createRange();
      range.selectNode(codeBlock);
      const selection = window.getSelection();
      selection.removeAllRanges();
      selection.addRange(range);
      document.execCommand("copy");
      selection.removeAllRanges();
      this.$message.success("代码已复制到剪贴板");
    },
  }
}

3.超过后省略

<el-table-column prop="response" label="答案" show-overflow-tooltip>
</el-table-column>

4.刷新当前页面

<i class="el-icon-refresh header-button-item" @click="refreshPage"></i>
refreshPage() {
	location.reload();
},

5.跳转

// 新页面打开
window.open('http://qinyingjie.top/')

// 当前页面打开
window.location.href = "http://qinyingjie.top/";

6.头部 2 个按钮

<el-row>
  <el-col :inline="true" :span="24">
    <el-button class="el-button-header" type="success" round @click="myHome">
    	 我的主页
    </el-button>
    <el-button class="el-button-header" type="primary" round @click="logout">
   		 退出登录
    </el-button>
  </el-col>
</el-row>

7.键盘点击事件

<el-input
  clearable
  v-model="formInline.question"
  placeholder="请输入问题"
  @keydown.enter.native="initCartList"
>
</el-input>

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

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

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

相关文章

基于orangepi lts 3 的延时摄影程序

利用orangepi 摄像头 使用python写一个延时摄影的程序。 一&#xff0c;思路 orangepi 外接摄像头&#xff0c;利用opencv&#xff0c;按照一定间隔取图&#xff0c;再利用opencv 将图片编码成视频。 利用mqtt进行通讯&#xff0c;可以写一个app进行控制。 二&#xff0c;代…

layui form表单 label和input宽度

情况是这样的&#xff0c;表单里有多个输入框&#xff0c;只有个别label 是长的&#xff0c;我就想调整一下个别长的&#xff0c;其它不变 <div class"layui-form-item"><label class"layui-form-label">是否分标分量:</label><div …

计算机毕业设计选题推荐-校园失物招领微信小程序/安卓APP-项目实战

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

没搞错吧?阿里云99元一年服务器老用户可以买!

阿里云老用户优惠服务器99元/年&#xff0c;谁再说阿里云不好我给谁急&#xff0c;云服务器ECS配置为经济型e实例&#xff0c;2核CPU、2G内存、3M固定带宽、40G ESSD entry 系统盘&#xff0c;老用户优惠价99元一年&#xff0c;老用户可以买&#xff0c;当然新用户也可以买&…

轻松玩转人物风格迁移!DualStyleGAN让你一键生成各种风格人物图片!【一个有趣的开源项目】

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐--…

OOM如何处理

1. OOM是什么 OOM是Out of Memory的缩写&#xff0c;意思是内存溢出。它是指程序在申请内存时&#xff0c;系统可分配的内存已不足&#xff0c;从而导致程序运行失败。 2. OOM发生的一些情况 Java heap space 1.1 解释说明 当堆内存&#xff08;Heap Space&#xff09;没有足…

使用VS2017打包安装程序如何修改默认安装路径

步骤如下&#xff1a; 首先找到安装项目 打开文件系统 点击鼠标右键&#xff0c;view-文件系统。这时打开文件系统 找到Application Folder的属性窗口 修改DefaultLocation的属性 如果想改变默认的安装路径&#xff0c;修改DefaultLocation的属性。 去掉计算机的名称。 完…

2023世界传感器大会即将开启,汉威科技向全球发出邀请

由河南省政府、中国科学技术协会主办&#xff0c;郑州市人民政府、中国仪器仪表学会、河南省工业和信息化厅、河南省科学技术协会承办的“2023世界传感器大会”将于11月5日~7日在郑州国际会展中心举办。 传感器是链接数字世界与物理世界的桥梁&#xff0c;是万物互联、智慧化时…

pytorch复现_NMS

NMS&#xff08;非极大值抑制&#xff09;阈值是用于控制在一组重叠的边界框中保留哪些边界框的参数。当检测或识别算法生成多个边界框可能涵盖相同物体时&#xff0c;NMS用于筛选出最相关的边界框&#xff0c;通常是根据它们的置信度分数。 具体来说&#xff0c;NMS的工作原理…

大数据预处理与采集实验三:Urllib的GET和POST请求(1)

目录 Urllib基本操作-GET ➢没有进行utf-8编码的输出 ➢经过utf-8decode之后的输出 ➢ Timeout参数&#xff1a;捕获由于连接超时而引发的异常 ◆Urllib基本操作-定制请求头 ➢ 在GET请求中加入多个访问参数 ◆Urllib基本操作-POST ➢有道词典网页爬取&#xff1a;找到…

中文编程软件哪个好用,初学编程软件推荐

中文编程软件哪个好用&#xff0c;初学编程软件推荐 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&#xff0c;而且可以开发大型的软件&#xff0c;想如图这个实例就是用这个…

关于Kubernetes——cka认证含金量怎么样?

2019年和2020年&#xff0c;Rancher分别对近1,000名专业人员展开了调查。调查结果表明&#xff0c;Kubernetes在不同行业连续两年保持了90%以上的采用率&#xff0c;而生产环境中的容器采用率从2019年的85%增长至2020年的87%。 SUSE大中华区总裁秦小康表示&#xff1a;“从调研…

Seata入门系列【18】Seata集成Mybatis-Plus多数据源

1 前言 在使用单个服务&#xff0c;多数据源时&#xff0c;也存在分布式事务问题。 当单体系统需要访问多个数据库&#xff08;实例&#xff09;时就会产生分布式事务。 比如&#xff1a;用户信 息和订单信息分别在两个MySQL实例存储&#xff0c;用户管理系统删除用户信息&am…

Scala和Play WS库编写的爬虫程序

使用Scala和Play WS库编写的爬虫程序&#xff0c;该程序将爬取网页内容&#xff1a; import play.api.libs.ws._ import scala.concurrent.ExecutionContext.Implicits.global ​ object BaiduCrawler {def main(args: Array[String]): Unit {val url ""val proxy…

超详细的接口测试用例编写

自动化始终只是辅助测试工作的一个手段&#xff0c;对于测试人员而言&#xff0c;测试基础和测试用例的设计才是核心。如果测试用例的覆盖率或者质量不高&#xff0c;那将这部分用例实现为自动化用例的意义也就不大了。 那么&#xff0c;接口测试用例应该怎么编写呢&#xff1…

Powercli批量修改分布式交换机端口组

背景 需求&#xff1a; 批量修改虚拟机的分布式端口组 解决&#xff1a; 三条命令解决&#xff1a;先获取目标虚拟机、获取目标端口组、修改虚拟机端口组、检查虚拟机状态。 $vm Get-VM -Name <虚拟机名称> $portGroup Get-VirtualPortGroup -Name <端口组名称…

数据出境安全评估:重要性和实施策略

数据出境安全评估是确保数据安全和合规的重要环节。随着全球化的加速和信息技术的快速发展&#xff0c;企业和个人需要处理大量的数据&#xff0c;其中许多数据涉及个人隐私和企业机密。因此&#xff0c;数据出境安全评估对于保护数据安全和隐私权至关重要。 一、数据出境安全评…

深度学习_3 数据操作之线代,微分

线代基础 标量 只有一个元素的张量。可以通过 x torch.tensor(3.0) 方式创建。 向量 由多个标量组成的列表&#xff08;一维张量&#xff09;。比如 x torch.arange(4) 就是创建了一个1*4的向量。可以通过下标获取特定元素&#xff08;x[3]&#xff09;&#xff0c;可以通…

什么是Webpack的热模块替换(Hot Module Replacement)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

springboot医院绩效考核系统源码

医院绩效考核系统是一种以人力资源管理为基础&#xff0c;选用适合医院组织机构属性的绩效理论和方法&#xff0c;基于医院战略目标&#xff0c;构建全方位的绩效考评体系&#xff0c;在科学、合理的绩效管理体系基础上&#xff0c;采用科学管理的方法&#xff0c;如平衡计分卡…