当前位置:实例文章 » HTML/CSS实例» [文章]vue3.2 + elementPlus + Windi CSS + ts创建一个好用的可兼容不同宽高的login页面

vue3.2 + elementPlus + Windi CSS + ts创建一个好用的可兼容不同宽高的login页面

发布人:shili8 发布时间:2025-03-11 21:00 阅读次数:0

**Vue3.2 + Element Plus + Windi CSS + TS 创建一个好用的可兼容不同宽高的 Login 页面**

### 前言在现代 web 应用中,Login 页面是必不可少的一部分。然而,传统的 Login 页面设计往往忽视了不同设备和浏览器的兼容性问题。这篇文章将指导你如何使用 Vue3.2、Element Plus 和 Windi CSS 等技术栈创建一个好用的可兼容不同宽高的 Login 页面。

### 技术栈* **Vue3.2**: 最新版本的 Vue.js 框架,提供了更好的性能和功能。
* **Element Plus**: 一款基于 Element UI 的组件库,提供了更多的组件和主题样式。
* **Windi CSS**: 一款轻量级的 CSS 预处理器,提供了快速的 CSS 编写体验。

###项目结构

bashlogin-page/
public/
index.htmlsrc/
main.tsApp.vueLogin.vuecomponents/
LoginHeader.vueLoginFooter.vueutils/
auth.jswindicss.config.jstsconfig.jsonpackage.json


### Login 页面组件#### `Login.vue` 组件
vue<template>
 <div class="login-container">
 <!-- Login Header -->
 <LoginHeader />

 <!-- Login Form -->
 <form @submit.prevent="handleLogin">
 <el-input v-model="username" placeholder="Username" />
 <el-input v-model="password" placeholder="Password" type="password" />
 <el-button type="primary" native-type="submit">Login</el-button>
 </form>

 <!-- Login Footer -->
 <LoginFooter />
 </div>
</template>

<script lang="ts">
import { defineComponent, ref } from 'vue';
import { ElInput, ElButton } from 'element-plus';
import LoginHeader from './components/LoginHeader.vue';
import LoginFooter from './components/LoginFooter.vue';

export default defineComponent({
 components: {
 LoginHeader,
 LoginFooter,
 ElInput,
 ElButton },
 setup() {
 const username = ref('');
 const password = ref('');

 const handleLogin = async () => {
 // Handle login logic here };

 return {
 username,
 password,
 handleLogin };
 }
});
</script>

<style scoped>
.login-container {
 @apply flex flex-col justify-center items-center h-screen;
}

form {
 @apply w-full max-w-md p-4 bg-white rounded shadow-sm;
}
</style>


#### `LoginHeader.vue` 组件
vue<template>
 <div class="login-header">
 <!-- Logo -->
 <img src="@/assets/logo.png" alt="Logo" />

 <!-- Title -->
 <h1>Login Page</h1>
 </div>
</template>

<script lang="ts">
import { defineComponent } from 'vue';

export default defineComponent({
 setup() {
 return {};
 }
});
</script>

<style scoped>
.login-header {
 @apply flex justify-center items-center mb-4;
}

img {
 @apply w-16 h-16 rounded-full;
}
</style>


#### `LoginFooter.vue` 组件
vue<template>
 <div class="login-footer">
 <!-- Copyright -->
 <p>&copy; {{ new Date().getFullYear() }} Login Page</p>

 <!-- Links -->
 <ul>
 <li><a href="#">Terms of Service</a></li>
 <li><a href="#">Privacy Policy</a></li>
 </ul>
 </div>
</template>

<script lang="ts">
import { defineComponent } from 'vue';

export default defineComponent({
 setup() {
 return {};
 }
});
</script>

<style scoped>
.login-footer {
 @apply flex justify-center items-center mt-4;
}

p {
 @apply text-sm text-gray-500;
}

ul {
 @apply list-none ml-2;
}

li {
 @apply inline-block mr-2;
}

a {
 @apply text-blue-600 hover:text-blue-700;
}
</style>


### Windi CSS 配置
javascriptmodule.exports = {
 theme: {
 extend: {}
 },
 variants: {},
 plugins: []
};


### TSConfig 配置
json{
 "compilerOptions": {
 "target": "esnext",
 "useDefineForClassFields": true,
 "module": "commonjs",
 "lib": ["es2020"],
 "outDir": "./dist",
 "rootDir": "./src"
 }
}


### Package.json 配置
json{
 "name": "login-page",
 "version": "1.0.0",
 "scripts": {
 "build": "vue-cli-service build",
 "serve": "vue-cli-service serve"
 },
 "dependencies": {
 "@element-plus/icons": "^2.0.10",
 "element-plus": "^2.0.10",
 "vue": "^3.2.19",
 "windicss": "^4.1.5"
 }
}


### 结论通过使用 Vue3.2、Element Plus 和 Windi CSS 等技术栈,创建了一个好用的可兼容不同宽高的 Login 页面。这个例子展示了如何使用组件库和 CSS 预处理器来快速构建现代 web 应用。

相关标签:css前端
其他信息

其他资源

Top