使用 Vue3 编写的简单自适应登录界面示例

以下是一个使用 Vue 3 编写的简单登录界面示例,它具有自适应功能。注意,此示例仅适用于 pc 浏览器。


<template>
  <div class="login-container">
    <div class="login-header">
      <h1>登录</h1>
    </div>
    <div class="login-body">
      <div class="form-group">
        <label for="username">用户名</label>
        <input type="text" v-model="username" class="form-control" id="username" placeholder="请输入用户名" required>
      </div>
      <div class="form-group">
        <label for="password">密码</label>
        <input type="password" v-model="password" class="form-control" id="password" placeholder="请输入密码" required>
      </div>
      <button type="submit" class="btn btn-primary">登录</button>
    </div>
  </div>
</template>

<script>
export default {
  name: 'Login',
  data() {
    return {
      username: '',
      password: '',
    }
  },
  watch: {
    username(newVal) {
      if (newVal && newVal.length > 0) {
        this.$nextTick(() => {
          this.$refs.username.focus();
        });
      }
    },
    password(newVal) {
      if (newVal && newVal.length > 0) {
        this.$nextTick(() => {
          this.$refs.password.focus();
        });
      }
    },
  },
  methods: {
    submit() {
      this.$refs.username.focus();
      this.$refs.password.focus();
      this.$refs.username.addEventListener('blur', () => {
        this.$refs.password.blur();
      });
      this.$refs.password.addEventListener('blur', () => {
        this.$refs.username.blur();
      });
      if (this.username && this.password) {
        // 在此处处理登录逻辑
      } else {
        this.$message.error('用户名或密码不能为空');
      }
    },
  },
}
</script>

<style scoped>
.login-container {
  width: 300px;
  max-width: 300px;
  margin: 0 auto;
  padding: 20px;
  background-color: #fff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  border-radius: 5px;
}

.login-header {
  background-color: #fff;
  padding: 15px;
  border-bottom: 1px solid #ddd;
  color: #333;
}

.form-group {
  margin-bottom: 15px;
}

.form-group label {
  display: block;
  margin-bottom: 5px;
}

.form-control {
  border: 1px solid #ddd;
  padding: 10px 15px;
  font-size: 14px;
  border-radius: 5px;
}

.btn {
  background-color: #007bff;
  color: #fff;
  border: none;
  padding: 10px 20px;
  border-radius: 5px;
  cursor: pointer;
}

.btn:hover {
  background-color: #0056b3;
}
</style>

在这个示例中,我们使用了 Vue 3 的 `watch` 选项来监听用户名和密码字段的变化。当输入框获得焦点时,我们将其添加到输入框上的事件监听器中,以确保在输入框失去焦点时,另一个输入框也会失去焦点。


登录按钮使用了 `@click.native` 绑定,这样可以确保在 PC 浏览器上正确点击登录按钮。


此外,我们还使用了 `.v-model` 指令将输入框与 Vue 实例的数据进行双向绑定,以便在用户输入时实时更新登录信息。


登录界面的样式可以根据需要进行调整。注意,此示例仅适用于 PC 浏览器,并且登录功能可能需要与后端服务器配合使用。


相关阅读

  • emeditor 配置 可以编辑 hex 16进制文件

    emeditor 配置 可以编辑 hex 16进制文件

    EmEditor 本身支持通过插件/功能配置实现 Hex 编辑功能。 实现方法:使用 EmEditor 的 Hex 模式EmEditor 内置了 Hex 编辑功能,无需安装第三方插件,只需简单配置即可启用,以下是完整的操作步骤: 步骤...

    2026.02.03 20:59:22作者:wintopTags:emeditorhex
  • RTX 3060(12GB显存)总结 PDF内容的智能大模型架构方案

    RTX 3060(12GB显存)总结 PDF内容的智能大模型架构方案

    显卡:RTX 3060(12GB显存)功能需求:“PDF文本总结”。下面是最优、效率最高的模型,同时明确部署方式和调优技巧,让总结速度和效果达到最佳平衡。 核心结论:最优模型选择对你的场景来说,Qwen2.5-7B-Instruct(通义...

    2026.01.22 20:04:09作者:wintop
  • python 多线程任务(下载)水平扩展线程

    python 多线程任务(下载)水平扩展线程

    方案架构说明这个方案由两个主要组件构成:任务分发器 (TaskDistributor)从 MySQL 数据库中获取待下载的文件将下载任务放入 Redis 队列标记文件状态为 "处理中"工作节点 (DownloadWork...

    2025.06.08 22:01:56作者:wintopTags:python
  • Python库实现PDF转HTML方法,可以提取目录TOC

    Python库实现PDF转HTML方法,可以提取目录TOC

    在Python中,要识别PDF中的目录(Table of Contents, TOC),通常有两种场景:直接提取PDF内置的书签(Bookmarks):如果PDF本身带有目录书签(例如电子书、技术文档),可以直接提取。自动分析文本结构推断目...

    2025.03.31 22:14:54作者:wintopTags:pythonpdf
  • grok beta 模型转发php版本,测试通过

    grok beta 模型转发php版本,测试通过

    <?php // 禁用输出缓冲 while (ob_get_level()) {     ob_end_clean(); } ob_implicit_fl...

    2024.11.26 20:32:33作者:wintop
  • FastAdmin如何在表单提交验证时不验证隐藏的元素

    FastAdmin如何在表单提交验证时不验证隐藏的元素

    在FastAdmin中使用的是nice-validator验证器,默认是验证表单中所有添加有验证规则的元素。如何在表单提交时不验证隐藏的元素呢?在nice-validator的选项中有一个ignore的选项。我们配置该值即可。首先打开控制器...

    2024.03.13 13:50:21作者:wintopTags:FastAdmin表单
  • php远程开机,远程唤醒(Wake-on-LAN)局域网电脑代码

    php远程开机,远程唤醒(Wake-on-LAN)局域网电脑代码

    首先要局域网电脑IP为固定IP,这样可以减少获取IP地址的步骤。要使用 PHP 来实现局域网中的远程唤醒(Wake-on-LAN),您可以通过以下步骤来完成:首先,确保您的服务器上已安装 PHP,并且具备发送网络数据包的权限。获取目标计算机...

    2024.03.10 11:33:33作者:wintopTags:php远程唤醒Wake-on-LAN局域网
  • Mysql 联合查询 主表和详细表查询方案

    Mysql 联合查询 主表和详细表查询方案

    mysql 多表联合查询示例:表aindex 为主表:CREATE TABLE `aindex` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,  `name` cha...

    2024.02.02 17:41:12作者:wintop

添加新评论