当前位置: 首页 > article >正文

vue3【实战】响应式的登录界面

效果预览

WEB 端效果

在这里插入图片描述

移动端效果

在这里插入图片描述

技术方案

vue3 + vite + Element Plus + VueRouter + UnoCSS + TS + vueUse + AutoImport

技术要点

响应式设计

移动端:图片切换为绝对定位,下移一层,成为背景图片

    <el-image
      class="w-screen h-screen lt-md:position-absolute! z--1 left-0 top-0"
      src="/imgs/coding.jpeg"
      fit="cover"
    />

el-input 中添加自定义图标组件

需在 vue 中使用 JSX,详见 https://blog.csdn.net/weixin_41192489/article/details/143787392

<el-input v-model="form.account" :prefix-icon="getIcon('mdi:account')" />
<script setup lang="tsx">
import Icon from '@/components/Icon.vue'
const getIcon = (icon: string) => <Icon icon={icon} />
</script> 

代码实现

<script setup lang="tsx">
import Icon from '@/components/Icon.vue'
const getIcon = (icon: string) => <Icon icon={icon} />

const form = reactive({ account: '', password: '', remember: false })

let loginWay_list = [
  { icon: 'mdi:wechat', color: '#07cd66' },
  { icon: 'flat-color-icons:phone-android' },
  { icon: 'icon-park:tencent-qq' }
]
</script>

<template>
  <div class="flex">
    <el-image
      class="w-screen h-screen lt-md:position-absolute! z--1 left-0 top-0"
      src="/imgs/coding.jpeg"
      fit="cover"
    />

    <div class="flex items-center justify-center w-full h-screen">
      <!-- 登录表单 -->
      <div class="max-w-360px bg-white p-10 lt-md:rounded lt-md:shadow">
        <div class="text-28px font-bold text-center p-6">EC 编程俱乐部</div>
        <el-form :model="form">
          <el-form-item>
            <el-input v-model="form.account" :prefix-icon="getIcon('mdi:account')" />
          </el-form-item>
          <el-form-item>
            <el-input v-model="form.password" :prefix-icon="getIcon('wpf:password1')" />
          </el-form-item>
          <div class="flex justify-between items-center">
            <div>
              <el-checkbox v-model="form.remember" label="自动登录" size="large" />
            </div>
            <div>
              <el-link type="primary" :underline="false">忘记密码</el-link>
              <el-text type="primary"> / </el-text>
              <el-link type="primary" :underline="false">注册</el-link>
            </div>
          </div>
          <el-form-item>
            <el-button type="primary" class="w-full">登录</el-button>
          </el-form-item>
        </el-form>

        <el-divider>
          <span class="text-10px">其他登录方式</span>
        </el-divider>

        <div class="flex justify-around">
          <Icon
            v-for="(item, index) in loginWay_list"
            :key="index"
            :icon="item.icon"
            :style="{
              color: item.color
            }"
            class="inline-block text-24px cursor-pointer"
          />
        </div>
      </div>
    </div>
  </div>
</template>

<style scoped lang="scss"></style>

<route lang="yaml">
meta:
  layout: none
</route>

http://www.kler.cn/a/409263.html

相关文章:

  • Charles抓包工具-笔记
  • docker pull命令拉取镜像失败的解决方案
  • 美创科技入选2024数字政府解决方案提供商TOP100!
  • udp_socket
  • 2025-2026财年美国CISA国际战略规划(下)
  • vscode可以编译通过c++项目,但头文件有红色波浪线的问题
  • Unity3D 截图
  • linux从0到1——shell编程9
  • Python 获取微博用户信息及作品(完整版)
  • redis的map底层数据结构 分别什么时候使用哈希表(Hash Table)和压缩列表(ZipList)
  • C语言进阶5:动态内存管理
  • Python Selenium:Web自动化测试与爬虫开发
  • C语言指针作业
  • 区块链应用到银行的优势
  • 如何调试 chrome 崩溃日志(MAC)
  • [译]Elasticsearch Sequence ID实现思路及用途
  • 快速了解RDD的创建与处理过程
  • Jedis存储一个-以String的形式的对象到Redis
  • 【Go】-go中的锁机制
  • 【MATLAB源码-第218期】基于matlab的北方苍鹰优化算法(NGO)无人机三维路径规划,输出做短路径图和适应度曲线.
  • MySQL中的ROW_NUMBER窗口函数简单了解下
  • 【网络安全设备系列】3、IPS(入侵防御系统)
  • OpenCV4.9 dnn人脸识别
  • Linux的开发工具(三)
  • 设计模式之 命令模式
  • C++不完整类型(Incomplete Type)的检测与避免