(9) 手把手做一个登录页,详细,多图!

目标:从零开始实现一个登录页,体验真正的程序开发


好久没来了,最近也是比较忙(懒)。

看到这个标题,可能有些同学会很失望:都学到第9章了,才搞个登录页? 未免有些太低端了吧!

其实,看似简单的登录页,并不简单,要注意的地方不少,下面我们一步一步来体验下。


本章会有比较多的布局/调样式的内容,如果对css不了解,建议先花点时间看一下这个教程

https://www.runoob.com/css/css-tutorial.html

本来也想把css单独做一篇来讲的,但是这个教程写的太好了,自己再啰嗦没有意义


代码部分接上回,先把views/Login.vue这个文件备份下,之前我们在里面写了点东西的,不要浪费了。

然后把Login.vue里面的代码删掉,像这样


运行yarn serve启动服务,访问地址http://localhost:8080/#/login,可以看到一个空白页面。


现在我们往里面填东西,最基本的想法是要有用户名和密码的输入框,还要一个登录按钮。

之前说过,提交内容一般用表单。

打开element表单的文档 https://element.eleme.cn/#/zh-CN/component/form


把这个典型表单的代码抄进去,像这样


保存,刷新浏览器页面,已经看到内容了,很顺利


但是这个输入框有点太长了,占满了整个浏览器,有点难看。

我们先在表单上加点样式,把尺寸弄小点。el-form标签上添加class


然后在style区域添加css样式,设置宽度400像素,高度300像素。

(如果这个样式表看不懂,建议先去看我上面推荐的css教程,翻一翻有个大概印象)


保存,再看看页面,好看很多了有没有


现在我们把里面乱七八糟的东西干掉,只留两个输入框,一个按钮


再看看页面,有点形状了!


试试在用户名这里输入点东西看看,发现密码框的内容也会自动同步


这是因为密码输入框的v-model和用户名的一样,绑定了相同的数据源。

试试把这个v-model删掉看看,发现密码输入框都不能输入了!


我们把数据源定义这里改一下,增加password,不要的都干掉,像这样


同时,密码输入框的v-model改成form.password


再看看页面,可以愉快的输入了


但是这个密码,有点尴尬,没有显示成星号,问题不大,把type设置成password就好了


这里我还加了个show-password,这样最右侧会出来一个小图标,可以显示和隐藏密码,看起来很专业!


现在还有个小问题,就是我们的表单挤在左上角,有点难看。一般来说都是居中的

我们来调下样式表,设置表单的位置,像这样。(position这个样式建议仔细看看教程)


再看下页面,貌似剧中了,其实有点歪,表单的左上角这个点是居中的,整体偏右下


现在我们用外边距margin,把这个偏移量校正


注意这个写法,偏移量是表单尺寸的一半。不管屏幕尺寸怎么调整,都是可以正好居中的。


太棒了! 可以自动居中,还能自适应屏幕尺寸,很不错。

再观察下我们这个页面,大面积惨白的背景,显得有点单调,试着加个背景色看看。

我们先在表单元素的最外面,加一个div,然后把这个div设置成全屏幕那么大,再加上背景样式就好了


样式如下


观察下效果,比之前还难看了!表单内容看不清了, 而且左侧和头上都有漏风


先解决漏风的问题,在.bgDiv里面加上 left:0px;top:0px; 把这个div对齐到最角上,问题解决。

再解决表单难看的问题,现在表单是继承了.bgDiv的背景色,我们给他也加一个不一样的背景


效果如下,有点难看!


继续调样式,加上内边距padding,把表单里的子元素,和表单边框分开点


再看看,舒服多了,但是我们这个表单,像一张纸漂在上面,没有质感


现在我们给表单加个边框,显得厚重一点


再观察下,有点进步了


我们再给边框加个阴影,加强立体感


有点立体感了


现在系统没有名字,我们给加个标题


样式不能少


看看现在的效果,label和标题不对齐,有点难看


把label改成placeholder,代码如下


页面效果


现在登录按钮显得有点可怜,用样式把宽度设成100%



看看效果,整齐了


再优化一下,给两个输入框加上图标(参考element文档:https://element.eleme.cn/#/zh-CN/component/icon


再瞅瞅,图标有了。但是这个大片蓝色的背景,还是丑,很单调


我们把这个背景改成渐变色试试(渐变色除了线性的,还可以设置径向,可以自己看教程试试效果)


再看效果,感觉舒服太多了! 彻底摆脱了丑陋


更多的时候,我们是放一张背景图,我们试一下

先找一张图片放到这里


然后在背景的div上加:style="{backgroundImage:'url('+require('@/assets/bg.jpg')+')'}"

这里是动态加载的图片,不用require直接在css里面写路径是不行的(也可能有好办法我没找到)


样式里面,设置图片不重复,完全覆盖


看看效果,还不错,科技风。


背景图也可以弄一个很小的图片,设置成repeat,这样可以省流量,多大屏幕都不会模糊。自己可以体验下


现在我们把多语言加进去,没这个显得不太专业 (LangSelect.vue是之前做的模块,正好用上)


设置下样式,把这个下拉框摆到右边,和输入框右对齐


看看样子,很不错


不过我们现在页面上的字符串都是写死的中文,下拉框点了没起作用

改成多语言的写法,资源文件里别忘了 (参考下第4章)


再看看,多语言有了,高大上!


如果是面向互联网的系统,一般都会有忘记密码和新用户注册的功能,我们给他加上

弄两个文字按钮,放到登录按钮下面,靠右就行了

(之前设置的窗口高度有点大,从300px调整到240了)


写样式的时候,代码放置的顺序,最好和元素在页面上的顺序一致。

因为样式会越来越多,乱放的话自己找起来麻烦


看一下,是不是像一个能交差的作品了?


外观上看是不差了,但是有个大问题,就是没有任何功能! 点了登录按钮啥也不能干。

不过,贴图贴的有点累了,要休息下,剩下的事情只能第10章来解决了,本章完。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容