这里如何给其添加图标呢?第一个就想到这个组件是会给选项预留一个插槽的:
首先,安装 element-plus 的图标
npm install @element-plus/icons-vue
这里会使用全局进行注册图标。
utils / register-icons.ts
import type { App } from 'vue'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
function registerIcons(app: App<Element>) {
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
app.component(key, component)
}
}
export default registerIcons
将其当成一个插件在 main.ts 中去使用就可以了
import { createApp } from 'vue'
import App from './App.vue'
import registerIcons from '@/utils/register-icons' // 全局注册 icons
const app = createApp(App)
app.use(registerIcons)
app.mount('#app')
使用图标:
<script setup lang="ts">
import { ref } from 'vue'
const isRememberPassword = ref(false)
</script>
<template>
<div class="login-panel">
<!-- 顶部的标题 -->
<h1 class="title">后台管理系统</h1>
<!-- 中间的 tabs -->
<div class="tabs">
<el-tabs stretch type="border-card">
<el-tab-pane>
<template #label>
<span class="label">
<el-icon><UserFilled /></el-icon>
<span class="text">账号登录</span>
</span>
</template>
</el-tab-pane>
<el-tab-pane>
<template #label>
<span class="label">
<el-icon><Iphone /></el-icon>
<span class="text">手机登录</span>
</span>
</template>
</el-tab-pane>
</el-tabs>
</div>
<!-- 底部区域 -->
<div class="control-account">
<el-checkbox v-model="isRememberPassword" label="记住密码" size="large" />
<el-link type="primary">忘记密码</el-link>
</div>
<!-- 可以给组件添加 class 类 -> 该类会到该组件的最外层去 -->
<el-button size="large" class="login-btn" type="primary" plain>立即登录</el-button>
</div>
</template>
<style scoped lang="scss">
.login-panel {
width: 330px;
margin-bottom: 150px;
.title {
text-align: center;
margin-bottom: 15px;
}
.label {
display: flex;
align-items: center;
justify-content: center;
.text {
margin-left: 5px;
}
}
.control-account {
margin-top: 12px;
display: flex;
justify-content: space-between;
}
.login-btn {
margin-top: 10px;
width: 100%;
--el-button-size: 50px;
}
}
</style>