实验二、实现登录页面

【实验内容】

本实验主要是完成管理系统登录页面部分。

【实验目的】

1、学习如何分析页面布局;

2、了解在项目中如何使用iconfont图标库;

3、掌握修改input默认样式的方法;

4、掌握vue项目中页面间的跳转。

【实验步骤】

步骤1 分析页面目标元素布局;

步骤2 编写html部分代码完成页面布局;

步骤2 编写css代码美化样式;

步骤3 编写javascript代码完成登录逻辑。

步骤1  分析页面目标元素布局

如下图:

web前端开发之后台管理系统实战(vue)——实验二、实现登录页面

首先是一个大的登陆框,位于整个页面中心。大的登陆框中分为左右两部分,左边为登陆的功能,包含账号输入框、密码输入框、以及登陆按钮等,右边是一张背景图并带有网站信息或“欢迎”等字样。

步骤2  编写html部分代码完成页面布局

在view文件下新建一个Login.vue文件,输入vue生成默认模板如下图:

web前端开发之后台管理系统实战(vue)——实验二、实现登录页面

生成后的模板代码如下图:

web前端开发之后台管理系统实战(vue)——实验二、实现登录页面

在template中写入html部分代码如下:

  <div class="container">
    <div class="main">
      <!-- 整个注册盒子 -->
      <div class="loginbox">
        <!-- 左侧的注册盒子 -->
        <div class="loginbox-in">
          <div class="userbox">
            <span class="iconfont">&#xe817;</span>
            <input class="user" id="user" v-model="name" placeholder="用户名" />
          </div>
          <br />
          <div class="pwdbox">
            <span class="iconfont">&#xe775;</span>
            <input
              class="pwd"
              id="password"
              type="password"
              v-model="pwd"
              placeholder="密码"
            />
          </div>
          <br />
          <div class="log-box">
            <div class="log-box-text">忘记密码</div>
            <button type="primary" class="login_btn" @click="login">
              Login
            </button>
          </div>
          <br />
          <div class="warn">@sywh</div>
          <button type="primary" class="register_btn" @click="register">
            若无账号请点击注册
          </button>
        </div>
        <!-- 右侧的注册盒子 -->
        <div class="background">
          <div class="title">Welcome to WH System Management Center</div>
        </div>
      </div>
    </div>
  </div>

完成后的页面如下图:

web前端开发之后台管理系统实战(vue)——实验二、实现登录页面

步骤3  编写css代码美化样式

登陆卡片不管窗口如何调整大小,都始终位于页面中心,其中top:40%;left:50%; 是指div(我们的登陆卡片)左顶点在页面的位置,所以要使用tannsform 在X Y轴进行移动。

在style里加上scoped属性可以使css样式只能用于当前的Vue组件,可以使组件的样式不相互污染,如下图。

web前端开发之后台管理系统实战(vue)——实验二、实现登录页面

我们本次任务使用到了一些小图标,可以使用png以图片的形式加载,也可以使用iconfont(字体图标)的方式,加载在我们的页面中。想比于普通的图片,使用iconfont可以自由的变化大小并且也不会模糊,而且占用内存小,也可以任意改变颜色。

web前端开发之后台管理系统实战(vue)——实验二、实现登录页面

首先,我们需要在https://www.iconfont.cn/阿里矢量图表库中找到合适的图标。

web前端开发之后台管理系统实战(vue)——实验二、实现登录页面

点击下载代码,我们可以看到下载的压缩包中主要有这几项:

web前端开发之后台管理系统实战(vue)——实验二、实现登录页面

本次实验主要是unicode引用,所以我们真正会用到的文件只有这些:

web前端开发之后台管理系统实战(vue)——实验二、实现登录页面

将拷贝项目下生成的@font-face(在iconfont.css中)到自己页面的css中,定义使用 iconfont 的样式代码如下:

@font-face {
  font-family: "iconfont";
  src: url("./font/iconfont.eot");
  src: url("./font/iconfont.eot?#iefix") format("embedded-opentype"),
    /* IE6-IE8 */ url("./font/iconfont.woff2") format("woff2"),
    url("./font/iconfont.woff") format("woff"),
    url("./font/iconfont.ttf") format("truetype"),
    /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
      url("./font/iconfont.svg#iconfont") format("svg");
}

.iconfont {
  font-family: "iconfont" !important;
  font-size: 20px;
  font-style: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  height: 22px;
  color: #4e655d;
  margin-right: 10px;
  margin-top: 3px;
}

.icon-key:before {
  content: "e775";
}

.icon-account:before {
  content: "e817";
}

 

之后挑选相应图标并获取字体编码,应用于页面。

<span class="iconfont"><span>

 

修改input框默认样式与整体风格不符合,修改代码如下:

input {
  outline-style: none;
  border: 0;
  border-bottom: 1px solid #e9e9e9;
  background-color: transparent;
  height: 20px;
  font-family: sans-serif;
  font-size: 15px;
  color: #445b53;
  font-weight: bold;
}

/* input::-webkit-input-placeholder{
    color:#E9E9E9;
 } */
input:focus {
  border-bottom: 2px solid #445b53;
  background-color: transparent;
  transition: all 0.2s ease-in;
  font-family: sans-serif;
  font-size: 15px;
  color: #445b53;
  font-weight: bold;
}

input:hover {
  border-bottom: 2px solid #445b53;
  background-color: transparent;
  transition: all 0.2s ease-in;
  font-family: sans-serif;
  font-size: 15px;
  color: #445b53;
  font-weight: bold;
}

input:-webkit-autofill {
  /* 修改默认背景框的颜色 */
  box-shadow: 0 0 0px 1000px #89ab9e inset !important;
  /* 修改默认字体的颜色 */
  -webkit-text-fill-color: #445b53;
}

input:-webkit-autofill::first-line {
  /* 修改默认字体的大小 */
  font-size: 15px;
  /* 修改默认字体的样式 */
  font-weight: bold;
}

 

修改后的input框如下图:

web前端开发之后台管理系统实战(vue)——实验二、实现登录页面

完整的css代码如下:

<style scoped>
.loginbox {
  display: flex;
  position: absolute;
  width: 800px;
  height: 400px;
  top: 40%;
  left: 50%;
  transform: translate(-50%, -50%);
  box-shadow: 0 12px 16px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 #4e655d;
}
.loginbox-in {
  background-color: #89ab9e;
  width: 240px;
}
.userbox {
  margin-top: 120px;
  height: 30px;
  width: 230px;
  display: flex;
  margin-left: 25px;
}
.pwdbox {
  height: 30px;
  width: 225px;
  display: flex;
  margin-left: 25px;
}

.background {
  width: 570px;
  background-image: url("./img/Christmas_Trees.png");
  background-size: cover;
  font-family: sans-serif;
}
.title {
  margin-top: 320px;
  font-weight: bold;
  font-size: 20px;
  color: #4e655d;
}
.title:hover {
  font-size: 21px;
  transition: all 0.4s ease-in-out;
  cursor: pointer;
}
.uesr-text {
  position: left;
}
input {
  outline-style: none;
  border: 0;
  border-bottom: 1px solid #e9e9e9;
  background-color: transparent;
  height: 20px;
  font-family: sans-serif;
  font-size: 15px;
  color: #445b53;
  font-weight: bold;
}
/* input::-webkit-input-placeholder{
    color:#E9E9E9;
 } */
input:focus {
  border-bottom: 2px solid #445b53;
  background-color: transparent;
  transition: all 0.2s ease-in;
  font-family: sans-serif;
  font-size: 15px;
  color: #445b53;
  font-weight: bold;
}
input:hover {
  border-bottom: 2px solid #445b53;
  background-color: transparent;
  transition: all 0.2s ease-in;
  font-family: sans-serif;
  font-size: 15px;
  color: #445b53;
  font-weight: bold;
}

input:-webkit-autofill {
  /* 修改默认背景框的颜色 */
  box-shadow: 0 0 0px 1000px #89ab9e inset !important;
  /* 修改默认字体的颜色 */
  -webkit-text-fill-color: #445b53;
}

input:-webkit-autofill::first-line {
  /* 修改默认字体的大小 */
  font-size: 15px;
  /* 修改默认字体的样式 */
  font-weight: bold;
}
.log-box {
  font-size: 12px;
  display: flex;
  justify-content: space-between;
  width: 190px;
  margin-left: 30px;
  color: #4e655d;
  margin-top: -5px;
  align-items: center;
}
.log-box-text {
  color: #4e655d;
  font-size: 12px;
  text-decoration: underline;
}
.login_btn {
  background-color: #5f8276; /* Green */
  border: none;
  color: #fafafa;
  padding: 5px 22px;
  text-align: center;
  text-decoration: none;
  font-size: 13px;
  border-radius: 20px;
  outline: none;
}
.login_btn:hover {
  box-shadow: 0 12px 16px 0 rgba(0, 0, 0, 0.24),
    0 17px 50px 0 rgba(0, 0, 0, 0.19);
  cursor: pointer;
  background-color: #0b5137;
  transition: all 0.2s ease-in;
}

.warn {
  margin-top: 60px;
  /* margin-right:120px; */
  margin-left: -120px;
  margin-bottom: 5px;
  font-weight: bold;
  font-size: 17px;
}

.register_btn {
  background-color: transparent; /* Green */
  border: none;
  text-decoration: none;
  font-size: 12px;
  /* border-radius: 20px;   */
  color: #4e655d;
  font-size: 12px;
  text-decoration: underline;
  display: flex;
  margin-left: 25px;
  outline: none;
}
.register_btn:hover {
  font-weight: bold;
  cursor: pointer;
}
@font-face {
  font-family: "iconfont";
  src: url("./font/iconfont.eot");
  src: url("./font/iconfont.eot?#iefix") format("embedded-opentype"),
    /* IE6-IE8 */ url("./font/iconfont.woff2") format("woff2"),
    url("./font/iconfont.woff") format("woff"),
    url("./font/iconfont.ttf") format("truetype"),
    /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
      url("./font/iconfont.svg#iconfont") format("svg");
}

.iconfont {
  font-family: "iconfont" !important;
  font-size: 20px;
  font-style: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  height: 22px;
  color: #4e655d;
  margin-right: 10px;
  margin-top: 3px;
}

.icon-key:before {
  content: "e775";
}

.icon-account:before {
  content: "e817";
}
style>

 

步骤4  编写javascript代码完成登录逻辑

使用v-model监听获取到输入框中值。如果用户名和密码都正确,那么可以跳转。跳转的方式如下:

          this.$router.push({
            path: '"Homepage', //主页路由
          });

 

在view文件夹新建Homepage.vue和Register.vue在router文件夹下的index.js文件下添加如下代码注册路由:

import Vue from "vue";
import VueRouter from "vue-router";
import Login from "../views/Login.vue";

Vue.use(VueRouter);

const routes = [
  {
    path: "/",
    name: "Login",
    component: Login,
  },
];

const router = new VueRouter({
  mode: "history",
  base: process.env.BASE_URL,
  routes,
});

export default router;

 

注册路由完成之后可以进行页面的调跳转。Script部分完整代码如下:

<script>
export default {
  name: "Login",
  data: function () {
    return {
      name: "",  //输入账户
      pwd: "",  //输入密码
      user_list: [  //可以登录的账号密码
        {
          id: "1",
          username: "admin",
          password: "123",
        },
      ],
    };
  },
  methods: {
    register() {
      this.$router.push("Register");
    },

    login() {
      var flag = 0;
        this.user_list.forEach((item) => {
          if (item.username == this.name) {
            if (item.password == this.pwd) {
              flag = 1; //用户存在,并且密码正确
            }
          }
        });
        if (flag == 1) {
          //可以跳转到主页
          // this.$router.push("Homepage");
          this.$router.push({
            path: 'Homepage',
          });
        } else {
          alert("用户名或密码错误,请重新输入");
        }
   
    },
  },
};
</script>

 

完成后的登录页面如下图:

web前端开发之后台管理系统实战(vue)——实验二、实现登录页面

相关新闻

联系我们

027-87870986

在线咨询:点击这里给我发消息

邮件:931234110@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息