UI 框架:Element-plus组件库(一)

简介: 在现代Web开发中,用户界面的设计与交互体验至关重要。随着前端技术的迅速发展,各种UI框架层出不穷,旨在提升开发效率和用户体验。其中,Element Plus作为一款基于Vue 3的组件库,因其简洁优雅的设计和丰富的功能而备受欢迎。Element Plus不仅提供了众多高质量的组件,还注重与开发者的友好互动,使得即使是初学者也能快速上手。在本系列文章中,我们将深入探讨Element Plus的各个组件及其应用,通过实例演示如何有效利用该框架构建美观且功能强大的用户界面。

引言


在现代Web开发中,用户界面的设计与交互体验至关重要。随着前端技术的迅速发展,各种UI框架层出不穷,旨在提升开发效率和用户体验。其中,Element Plus作为一款基于Vue 3的组件库,因其简洁优雅的设计和丰富的功能而备受欢迎。

Element Plus不仅提供了众多高质量的组件,还注重与开发者的友好互动,使得即使是初学者也能快速上手。在本系列文章中,我们将深入探讨Element Plus的各个组件及其应用,通过实例演示如何有效利用该框架构建美观且功能强大的用户界面。


使用

Plain Text
$ pnpm install element-plus --save
$ yarn add element-plus
import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'
const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')
图标
Plain Text
$ npm install @element-plus/icons-vue
# Yarn
$ yarn add @element-plus/icons-vue
```Plain Text 使用 import * as ElementPlusIconsVue from '@element-plus/icons-vue'
const app = createApp(App) for (const [key, component] of Object.entries(ElementPlusIconsVue)) {   app.component(key, component) }
```

输入框的使用

:prefix-icon

<el-input v-model="form.password" :type="passwordType" :prefix-icon="Search"></el-input>

:suffix-icon="Search"

显示   密码

:show-password="true"

:show-password="show"
<template>
    <div class="login_page">
        <div class="login_info">
            <el-form label-width="auto" :model="formLabelAlign" style="max-width: 800px">
                <el-form-item>
                    <el-input v-model="formLabelAlign.account" placeholder="请输入账号" type="text" />
                </el-form-item>
                <el-form-item>
                    <el-input v-model="formLabelAlign.password" placeholder="请输入密码" :type="password_type">
                        <template v-slot:suffix>
                            <el-icon :size="20" @click="show_password">
                                <component :is="show?icon_list.icon_view:icon_list.icon_hide" />
                            </el-icon>
                        </template>
                    </el-input>
                </el-form-item>
                <el-form-item class="login_btn">
                    <el-button type="primary">登录</el-button>
                </el-form-item>
            </el-form>
        </div>
    </div>
</template>
<script setup>
    import {
        reactive,
        ref
    } from 'vue'
    const password_type = ref("password")
    const formLabelAlign = reactive({
        account: '',
        password: '',
    })
    let show = ref(false)
    const show_password = () => {
        if (show.value) {
            password_type.value = "text"
        } else {
            password_type.value = "password"
        }
        show.value = !show.value
    }
    const icon_list = {
        icon_hide: "hide",
        icon_view: "view"
    }
</script>
<style scoped lang="scss">
    .login_page {
        display: flex;
        justify-content: center;
        /* 水平居中 */
        align-items: center;
        /* 垂直居中 */
        background: linear-gradient(to bottom right, #0081f1 30%, #f7182e 60%);
        width: 100%;
        /* 设置宽度为100% */
        height: 99vh;
        /* 设置高度为视口高度 */
    }
    .login_info {
        width: 400px;
        padding: 20px;
        border: 0.7px solid linear-gradient(to bottom right, #0081f1 30%, #f7182e 60%);
        border-radius: 5px;
        box-shadow: 1px 1px 3px;
    }
    .login_btn button {
        margin: 0 auto;
        width: 100%;
    }
</style>
<template>
    <div class="login_page">
        <div class="login_info">
            <el-form label-width="auto" :model="formLabelAlign" style="max-width: 800px">
                <el-form-item>
                    <el-input v-model="formLabelAlign.account" placeholder="请输入账号" type="text" />
                </el-form-item>
                <el-form-item>
                    <el-input v-model="formLabelAlign.password" show-password="true" placeholder="请输入密码"
                        type="password">
                    </el-input>
                </el-form-item>
                <el-form-item class="login_btn">
                    <el-button type="primary">登录</el-button>
                </el-form-item>
            </el-form>
        </div>
    </div>
</template>
<script setup>
    import {
        reactive,
        ref
    } from 'vue'
    const password_type = ref("password")
    const formLabelAlign = reactive({
        account: '',
        password: '',
    })
</script>
<style scoped lang="scss">
    .login_page {
        display: flex;
        justify-content: center;
        /* 水平居中 */
        align-items: center;
        /* 垂直居中 */
        background: linear-gradient(to bottom right, #0081f1 30%, #f7182e 60%);
        width: 100%;
        /* 设置宽度为100% */
        height: 99vh;
        /* 设置高度为视口高度 */
    }
    .login_info {
        width: 400px;
        padding: 20px;
        border: 0.7px solid linear-gradient(to bottom right, #0081f1 30%, #f7182e 60%);
        border-radius: 5px;
        box-shadow: 1px 1px 3px;
    }
    .login_btn button {
        margin: 0 auto;
        width: 100%;
    }
</style>


验证的清空

formEl.resetFields()  的使用

<el-form :model="form" :rules="rules" ref="formRef">
        用 ref  绑定 formRef
        const formRef = ref(null);

addStudent 中 定义 了 一个 方法

使用 如下

const addStudent = (test) => {
      resetForm(test.formRef)
}

清空  代码

const resetForm = (formEl) => {
    if (!formEl) return
    formEl.resetFields()
}

调用  传参 为

@click="addStudent($refs)

简单使用

<el-button @click="resetForm(formRef)">重置</el-button>
const resetForm = (formEl) => {
    if (!formEl) return
    formEl.resetFields()
}

轮播图

<template>
    <div class="home-banner">
        <el-carousel height="500px">
            <el-carousel-item v-for="item in 4" :key="item.id">
                <img src="../assets/images/logo.png" alt="">
            </el-carousel-item>
        </el-carousel>
    </div>
</template>
<script  setup>
</script>
<style scoped></style>


面包屑

<template>
    <div class="bread-container">
        <el-breadcrumb separator=">">
            <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
            <el-breadcrumb-item v-for="(i, index) in item">{{ i.name }}</el-breadcrumb-item>
        </el-breadcrumb>
    </div>
</template>
<script  setup>
let item = [
    {
        id: 1,
        name: 'home',
    },
    {
        id: 2,
        name: 'category',
    },
    {
        id: 3,
        name: 'settings',
    }];
</script>
<style scoped></style>

导航激活

在RouterLink里面配置 组件默认激活类名

设置 active-class 属性 设置对应的 类名 即可
<RouterLink active-class="active" :to="/test">
  {{item.name}}
  <RouterLink>
    .active{
      color:red,
        border-bottom:1px solid red}


骨架屏幕

skeleton

可以  的 样式 有

image.png


简单使用

<template>
  <el-skeleton style="width: 240px">
    <template #template>
      <el-skeleton-item variant="image" style="width: 240px; height: 240px" />
      <el-skeleton-item variant="text" style="width: 30%" />
    </template>
  </el-skeleton>
  <el-skeleton style="--el-skeleton-circle-size: 100px">
    <template #template>
      <el-skeleton-item variant="circle" />
    </template>
  </el-skeleton>
</template>
<script setup lang="ts">
</script>



简单的菜单

<template>
      <el-menu
          active-text-color="#ffd04b"
          background-color="#545c64"
          class="el-menu-vertical-demo"
          default-active="2"
          text-color="#fff"
      >
        <el-sub-menu index="1">
          <template #title>
            <el-icon><location /></el-icon>
            <span>Navigator One</span>
          </template>
          <el-menu-item-group title="Group One">
            <el-menu-item index="1-1">item one</el-menu-item>
            <el-menu-item index="1-2">item two</el-menu-item>
          </el-menu-item-group>
       </el-sub-menu>
      </el-menu>
</template>
<script lang="ts" setup>
import {
  Location,
} from '@element-plus/icons-vue'
</script>


table里面的tree

<template>
  <div>
    <el-table
        :data="tableData"
        style="width: 100%; margin-bottom: 20px"
        row-key="id"
        border
    >
      <el-table-column prop="date" label="Date" sortable />
      <el-table-column prop="name" label="Name" sortable />
      <el-table-column prop="address" label="Address" sortable />
    </el-table>
  </div>
</template>
<script lang="ts" setup>
interface User {
  id: number
  date: string
  name: string
  address: string
  hasChildren?: boolean
  children?: User[]
}
const tableData: User[] = [
  {
    id: 1,
    date: '2016-05-02',
    name: 'wangxiaohu',
    address: 'No. 189, Grove St, Los Angeles',
  },
  {
    id: 2,
    date: '2016-05-04',
    name: 'wangxiaohu',
    address: 'No. 189, Grove St, Los Angeles',
  },
  {
    id: 3,
    date: '2016-05-01',
    name: 'wangxiaohu',
    address: 'No. 189, Grove St, Los Angeles',
    children: [
      {
        id: 31,
        date: '2016-05-01',
        name: 'wangxiaohu',
        address: 'No. 189, Grove St, Los Angeles',
      },
      {
        id: 32,
        date: '2016-05-01',
        name: 'wangxiaohu',
        address: 'No. 189, Grove St, Los Angeles',
      },
    ],
  },
  {
    id: 4,
    date: '2016-05-03',
    name: 'wangxiaohu',
    address: 'No. 189, Grove St, Los Angeles',
  },
]
</script>


图标

<ElIcon :size="30" color="hotpink">
          <edit />
        </ElIcon>


相关文章
|
1月前
|
小程序 JavaScript 前端开发
小程序常见的UI框架
小程序常见的UI框架
259 60
|
20天前
|
JavaScript
Ant Design Vue UI框架的基础使用,及通用后台管理模板的小demo【简单】
这篇文章介绍了如何使用Ant Design Vue UI框架创建一个简单的后台管理模板,包括创建Vue项目、安装和使用ant-design-vue、以及编写后台管理通用页面的代码和样式。
Ant Design Vue UI框架的基础使用,及通用后台管理模板的小demo【简单】
|
2天前
|
前端开发 开发者 UED
UI 框架:nav-ui&uni-ui&vant
本文档介绍了`nav-ui`、`uni-ui`和`vant`三个UI库的基本使用方法,包括图标、表格和树的使用示例,以及如何在项目中安装和配置这些UI组件。对于`nav-ui`,详细说明了图标组件的安装与使用,包括本地图标和第三方图标库的集成方式。`uni-ui`部分则重点讲解了CSS的使用方法。最后,`vant`部分提供了从项目创建到组件安装的具体步骤,以及如何将下载的组件正确地集成到项目中。
|
2天前
|
前端开发 JavaScript 开发者
UI 框架:element-ui(二)
在当今快速发展的前端开发领域,用户界面的设计和交互体验日益成为软件成功的关键因素之一。Element UI,作为一款基于Vue.js的组件库,以其精美的界面和丰富的功能受到了广泛的关注与应用。它为开发者提供了一整套高质量的组件,帮助他们快速构建具有现代感的应用程序。 Element UI不仅注重美观的设计,还提供了良好的文档支持和社区活跃度,使得开发者能够轻松上手并解决实施过程中的各种问题。在这篇文章中,我们将深入探讨Element UI的基本特点、安装步骤,以及如何利用其强大的组件系统高效地构建用户友好的界面。无论您是初学者还是有经验的开发者,这篇文章都将为您开辟一条通向更高效开发的道路。
|
29天前
|
JavaScript
从零开始写一套广告组件【一】搭建基础框架并配置UI组件库
其实这个从零有点歧义,因为本质上是要基于`tdesign-vue-next`来进行二次封装为一套广告UI组件库,现在让我们在一起快乐的搭建自己的广告UI库之前,先对以下内容做出共识:
54 0
从零开始写一套广告组件【一】搭建基础框架并配置UI组件库
|
1月前
|
Linux C# Android开发
一个开源、跨平台的.NET UI框架 - Avalonia UI
一个开源、跨平台的.NET UI框架 - Avalonia UI
|
2月前
|
前端开发 关系型数据库 MySQL
Python基于Django框架图书管理系统,Bootstrap框架UI,后台EasyUI框架UI,有登录,实现增删改查的富文本效果
本文介绍了一个使用Python Django框架开发的图书管理系统,该系统采用Bootstrap框架进行前端UI设计,EasyUI框架用于后台UI界面,集成了富文本编辑器,并实现了登录及增删改查功能。
|
2月前
|
JavaScript 前端开发
Vue实现Element UI框架的自定义输入框或下拉框在输入时对列表选项进行过滤,以及右键列表选项弹出菜单进行删除
本文介绍了如何在Vue框架结合Element UI库实现自定义输入框或下拉框,在输入时对列表选项进行过滤,并支持右键点击列表选项弹出菜单进行删除的功能。
49 0
|
2月前
|
前端开发 Linux API
Avalonia:一个.NET跨平台UI框架
Avalonia:一个.NET跨平台UI框架
90 0
|
5月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍