前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >electron 仿制QQ登录界面

electron 仿制QQ登录界面

作者头像
李昊天
发布于 2019-05-26 00:40:41
发布于 2019-05-26 00:40:41
7.7K00
代码可运行
举报
运行总次数:0
代码可运行

首先来看看qq的登录界面:

准备开发

制作一个窗口先

主进程代码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import {BrowserWindow, webContents, app, ipcMain} from 'electron'

LoginWindow();    //暂时调用

ipcMain.on('quitApp', () => {
    app.quit();
});

function LoginWindow() {
    const loginURL = process.env.NODE_ENV === 'development' ? `http://localhost:9080/#/login` : `file://${__dirname}/index.html/#/login`;
    const loginWindow = new BrowserWindow({
        width: 430,
        height: 328,
        alwaysOnTop: true,
        modal: true,
        frame: false,
        darkTheme: true,
        resizable: false,
        minimizable: false,
        maximizable: false,
        transparent: true,
        webPreferences: {
            devTools: false,
        }
    });


    loginWindow.setMenu(null);
    loginWindow.loadURL(loginURL);
}

界面基本布局

我们先大概做一个这样的界面

页面代码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
    <div class="mainWindow">
        <header class="header"></header>
        <main>
            <div class="bg"></div>
            <div class="body"></div>
        </main>
        <footer class="footer"></footer>
    </div>
</template>

<script>
    import '@/assets/css/login.css'

    export default {
      
    }
</script>
样式代码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
取消全部的外边距和内边距
 */
* {
    padding: 0;
    margin: 0;
}

/*设置窗口的样式*/
.mainWindow {
    cursor: pointer;    /*设置手型*/
    border: 1px solid red;  /*加一个边框 调试样式 最后要删除或者更改**/
    width: 428px;   /*设置宽度  必须要和主进程中设置的一样 不能大于主进程中设置的宽度 否则会出现滚动条*/
    height: 326px;  /*设置高度  必须要和主进程中设置的一样 不能大于主进程中设置的高度 否则会出现滚动条*/
    position: relative; /*设置为相对定位*/
    border-radius: 4px; /*设置圆角*/
}

/**
header的样式 header中只会有一个关闭按钮 处于右上角
 */
.mainWindow header.header {
    position: absolute; /*设置绝对定位 因为背景在他下面*/
    height: 30px;   /*设置高度*/
    background: rgba(0, 0, 0, 0.5); /*暂时设置的 后面要删除或者更改*/
    border-radius: 4px 4px 0 0; /*给header的左上角 右上角设置圆角 不然会出现很尴尬的页面*/
    width: 428px;   /* 因为设置了绝对定位 设置宽度*/
}

/**
背景
 */
.mainWindow main .bg {
    height: 124px;  /*设置高度*/
    width: 428px;   /*设置宽度 也可以不用设置 因为这个元素没有设置绝对定位 所以默认就是100%*/
    border-radius: 4px 4px 0 0; /*给左上角 右上角设置圆角 不然会出现很尴尬的页面 这里和header重合在一起了*/
    background: blue;  /*暂时设置的 后面要删除或者更改*/
}

/**
放置表单的元素
 */
.mainWindow main .body {
    width: 428px;  /*设置宽度 也可以不用设置 因为这个元素没有设置绝对定位 所以默认就是100%*/
    height: 172px;  /*设置高度 这里的高度是 主窗口(326) - footer(30) - 背景(124) 因为header设置了绝对定位 所以不用关 */
    background: green;  /*暂时设置的 后面要删除或者更改*/
}

.mainWindow footer.footer {
    position: absolute; /* 设置绝对定位 要让他处于窗口的最底部*/
    height: 30px; /*设置高度 */
    background: red;  /*暂时设置的 后面要删除或者更改*/
    bottom: 0;  /*让footer处于底部*/
    width: 428px; /* 因为设置了绝对定位 设置宽度*/
}

窗口拖动

注意 不要使用内置的拖动 我们要自己实现! 在页面中加入以下代码就可以实现拖动了!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data() {
            return {
                windowX: 0,
                windowY: 0,
            }
        },
        mounted() {
            let win = this.$electron.remote.getCurrentWindow();

            document.addEventListener('mousedown', function (e) {
                this.windowX = e.x;
                this.windowY = e.y;
                document.addEventListener('mousemove', moveEvent);
            });

            document.addEventListener('mouseup', function () {
                this.windowX = 0;
                this.windowY = 0;
                document.removeEventListener('mousemove', moveEvent)
            });

            function moveEvent(e) {

                win.setPosition(e.screenX - this.windowX, e.screenY - this.windowY)
            }
        }

设置背景图

将css里面的 .bg修改成:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.mainWindow main .bg {
    height: 124px;  /*设置高度*/
    width: 428px;   /*设置宽度 也可以不用设置 因为这个元素没有设置绝对定位 所以默认就是100%*/
    border-radius: 4px 4px 0 0; /*给左上角 右上角设置圆角 不然会出现很尴尬的页面 这里和header重合在一起了*/
    background: url("../images/login-back.gif") 10px;
    background-size: 100%;
}

完成之后效果如如下:

制作顶部

顶部的logo和最小化就不做了 只做一个关闭的按钮 去阿里巴巴图标库下载字体文件之后放到assets/fonts目录中 在页面中加入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import '@/assets/fonts/iconfont.css'

header代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <header class="header">
            <span class="iconfont icon-guanbi1"></span>
 </header>

css文件 注意 在css .mainWindow header.header 添加 由于我背景图的关系 按钮可能不太明显 这问题不大 大家可以自己换一个图!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
background: rgba(255, 255, 255, 0.2); /*暂时设置的 后面要删除或者更改*/
text-align: right;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.mainWindow header.header span{
    display: inline-block;
    height: 30px;
    width:30px;
    text-align: center;
    line-height: 30px;
    color:#E4393c;
}
.mainWindow header.header span:hover{
    background-color: rgba(255,255,255,0.6);
}

制作表单页

表单界面代码

创建一个子组件 login.vue 写入如下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
    <div class="form">
        <form>
            <div class="form_item"><i class="iconfont icon-1zhanghu"></i><input type="text"></div>
            <div class="form_item"><i class="iconfont icon-mima1"></i><input type="password"></div>
        </form>
        <div class="buttons">
            <button>登录</button>
        </div>
    </div>
</template>

<script>
    export default {
        name: "login"
    }
</script>

表单页css

需要将 .mainWindow main .body 的背景颜色调成#FFFFFF

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.form form{
    padding:10px 90px 0 90px;
}
.form_item{
    height: 40px;
    position: relative;
}
.form_item i.iconfont{
    position: absolute;
    top:5px;
}
.form_item input{
    outline: none;
    border:none;
    padding-left: 20px;
    font-size: 16px;
    width: 230px;
    height: 30px;
    border-bottom: 1px solid #CCC;
}
.buttons{
    text-align: center;
}
.buttons button{
    background-color: #CF000E;
    border: none;
    width: 250px;
    color: #FFFFFF;
    height: 35px;
    cursor: pointer;
    font-size: 14px;
    border-radius: 4px;
    outline: none;
}

效果

最后看到是这样的

复选框美化

组件代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="login_options">
                <label><div class="option_item"><input type="checkbox"><span class="checked"><img src="@/assets/images/checked.png" alt=""></span></div><i class="text">自动登录</i></label>
                <label><div class="option_item"><input type="checkbox"><span class="checked"><img src="@/assets/images/checked.png" alt=""></span></div><i class="text">记住密码</i></label>
                <i class="text">忘记密码</i>
</div>

css代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.login_options{
    margin-bottom: 10px;
    margin-top: 5px;
}
.login_options .option_item {
    display: inline-block;
    width: 13px;
    height: 13px;
    margin-right: 5px;
    position: relative;
    border: 1px solid orange;
    vertical-align: middle;
    cursor: pointer;
    top: -2px;
}

.login_options .option_item input {
    opacity: 0;
}
.login_options  i.text{
    display: inline-block;
    margin-right: 14px;
    font-size: 13px;
    font-style: normal;
}

.login_options .option_item span.checked {
    position: absolute;
    top: -4px;
    right: -3px;
    font-weight: bold;
    display: inline-block;
    width: 20px;
    height: 20px;
    cursor: pointer;
}

.option_item span.checked img {
    width: 100%;
    height: 100%;
}

input[type="checkbox"] + span {
    opacity: 0;
}

input[type="checkbox"]:checked + span {
    opacity: 1;
}

效果

注册页面

我们改进一点 因为qq的注册是一个连接到web页面去申请qq号码的 不过我做的是点击注册将界面切换到注册界面,只不过是 在写注册界面代码之前先将父组件种的login注释掉备用 (别删除哦) 在父组件中引入Register组件 注册的逻辑是这样的 在注册界面输入手机号和图形验证码 获取到短信验证码输入之后跳转到下一步输入密码 如果将全部的逻辑写到一个组件中会导致太长 虽然有办法解决 但是之后使用动画就很难看了!

界面代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
    <div class="form">
        <form>
            <div class="form_item"><i class="iconfont icon-phone_icon"></i><input type="text"></div>
            <div class="form_item">
                <i class="iconfont icon-yanzhengma2"></i>
                <input type="password">
                <div class="captcha">
                    <img src="@/assets/images/captcha.png" alt="">
                </div>
            </div>
            <div class="form_item">
                <i class="iconfont icon-yanzhengma5"></i>
                <input type="password">
                <div class="send_sms_captcha"><button>获取短信验证码</button></div>
            </div>
        </form>
        <div class="buttons">
            <button>下一步</button>
        </div>
    </div>
</template>

<script>
    export default {
        name: "register"
    }
</script>

界面Css代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.captcha {
    position: absolute;
    width: 120px;
    height: 30px;
    top: -2px;
    right: 0;
}

.captcha img {
    width: 100%;
    height: 100%;
}

.send_sms_captcha {
    position: absolute;
    top: -2px;
    right: 0;
}
.send_sms_captcha  button{
    width:120px;
    height: 30px;
    border:none;
    outline: none;
    cursor: pointer;
    border-radius: 4px;
}

父组件代码

部分代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<main>
        <div class="bg"></div>
         <div class="body">
                <!--<Login></Login>-->
                <Register></Register>
            </div>
        </main>

效果

注册步骤2

界面代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
    <div class="form">
        <form>
            <div class="form_item"><i class="iconfont icon-zaicishurumima"></i><input type="text"></div>
            <div class="form_item"><i class="iconfont icon-mima1"></i><input type="password"></div>
            <div class="login_options" style="text-align: center">
                <label><div class="option_item"><input type="checkbox"><span class="checked"><img src="@/assets/images/checked.png" alt=""></span></div><i class="text">自动登录</i></label>
                <label><div class="option_item"><input type="checkbox"><span class="checked"><img src="@/assets/images/checked.png" alt=""></span></div><i class="text">记住密码</i></label>
            </div>
        </form>
        <div class="buttons">
            <button>登录</button>
        </div>
    </div>
</template>

<script>
    export default {
        name: "steps2"
    }
</script>

展示

footer代码

jie简介

在上面中footer里面显示了注册账号 其实这只是暂时的方案 为了方便截图 首先来分析一下 在登录页面的时候在底部显示注册账号 在注册第一步的时候在底部左侧显示已经账号,在第二步骤的时候显示返回上一步 我们有很多办法在子组件通知父组件去显示不同的文字 作者给出两个方案: 1: 通过子组件给父组件传值 2: 使用vuex 3: 将footer拆分到各个组件中 我们代码中使用拆分就行了 比较简单点 将父组件的footer删除 往组件login.vue steps1.vue steps2.vue 组件中加入footer

login.vue:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
    <div class="form">
        <form>
            <div class="form_item"><i class="iconfont icon-1zhanghu"></i><input type="text"></div>
            <div class="form_item"><i class="iconfont icon-mima1"></i><input type="password"></div>
            <div class="login_options">
                <label><div class="option_item"><input type="checkbox"><span class="checked"><img src="@/assets/images/checked.png" alt=""></span></div><i class="text">自动登录</i></label>
                <label><div class="option_item"><input type="checkbox"><span class="checked"><img src="@/assets/images/checked.png" alt=""></span></div><i class="text">记住密码</i></label>
                <i class="text">忘记密码</i>
            </div>
        </form>
        <div class="buttons">
            <button>登录</button>
        </div>
        <footer class="footer">
            <span @click="toggleWindow">注册账号</span>
        </footer>
    </div>
</template>

<script>
    export default {
        name: "login",
        methods:{
            toggleWindow(){
                this.$store.dispatch('toggleLogin');
            }
        }
    }
</script>

steps1.vue

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
    <div class="form">
        <form>
            <div class="form_item"><i class="iconfont icon-phone_icon"></i><input type="text"></div>
            <div class="form_item">
                <i class="iconfont icon-yanzhengma2"></i>
                <input type="password">
                <div class="captcha">
                    <img src="@/assets/images/captcha.png" alt="">
                </div>
            </div>
            <div class="form_item">
                <i class="iconfont icon-yanzhengma5"></i>
                <input type="password">
                <div class="send_sms_captcha"><button>获取短信验证码</button></div>
            </div>
        </form>
        <div class="buttons">
            <button @click="toggleSteps">下一步</button>
        </div>
        <footer class="footer">
            <span @click="toggleWindow">已有账号</span>
        </footer>
    </div>
</template>

<script>
    export default {
        name: "steps1",
        methods:{
            toggleWindow(){
                this.$store.dispatch('toggleLogin');
            },
            toggleSteps(){
                this.$store.dispatch('toggleSteps');
            },
        }
    }
</script>

steps2.vue

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
    <div class="form">
        <form>
            <div class="form_item"><i class="iconfont icon-zaicishurumima"></i><input type="text"></div>
            <div class="form_item"><i class="iconfont icon-mima1"></i><input type="password"></div>
            <div class="login_options" style="text-align: center">
                <label><div class="option_item"><input type="checkbox"><span class="checked"><img src="@/assets/images/checked.png" alt=""></span></div><i class="text">立即登录</i></label>
                <label><div class="option_item"><input type="checkbox"><span class="checked"><img src="@/assets/images/checked.png" alt=""></span></div><i class="text">记住密码</i></label>
            </div>
        </form>
        <div class="buttons">
            <button>注册</button>
        </div>
        <footer class="footer">
            <span @click="toggleSteps">返回上一步</span>
        </footer>
    </div>
</template>

<script>
    export default {
        name: "steps2",
        methods:{
            toggleSteps(){
                this.$store.dispatch('toggleSteps');
            },
        }
    }
</script>

vuex 代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const state = {
    steps: true,
    login: true,
};

const actions = {
    toggleSteps: function ({state, commit}) {
        // state.steps = true;
        state.steps = !state.steps;
    },

    toggleLogin({state, commit}){
        state.login = !state.login;
    }
};

export default ({
    state,
    actions
});

效果展示

添加动画效果

上面这些完成之后有点单调 尤其是切换的时候 我们可以用到 animateCss animateCss 下载地址:https://daneden.github.io/ani...

子组件加入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import '@/assets/css/animate.css'

之后我们在代码中加入效果就行了 将父组件改成:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <main>
            <div class="bg"></div>
                <transition
                        :duration="500"
                        :enter-active-class="'animated ' + (login ?  'bounceInRight' : 'bounceInLeft')"
                        :leave-active-class="'animated ' + (login ? 'bounceOutLeft' : 'bounceOutRight')"
                >
                <Login v-if="login === true" key="login"></Login>
                <Register v-else key="register"></Register>
                </transition>
        </main>

子组件 register.vue改成:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <transition
                :duration="500"
                :enter-active-class="'animated ' + (steps ?  'bounceInRight' : 'bounceInLeft')"
                :leave-active-class="'animated ' + (steps ? 'bounceOutLeft' : 'bounceOutRight')"
        >
        <Steps1 v-if="steps === true" key="steps"></Steps1>
        <Steps2 v-else key="steps"></Steps2>
        </transition>

修改下css 因为要使用动画就要将main定位才能用 加入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.mainWindow main {
    position: absolute;
}

效果展示:

到这里就差不多了 代码太多没法一一发布上来 如果有需要的可以去github下载或者加QQ群 814270669 github地址:https://github.com/lihaotian0... 码云地址: https://gitee.com/leehaotian/...

我的github账号出了问题 一直登录不上去 所以就先发布到码云了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
electron仿制百度网盘客户端2(登录界面制作)
百度网盘客户端的尺寸是: 主界面 w:662px h:442px 顶部header h:75px bg:#EFF2F6
李昊天
2019/05/26
1.4K0
electron仿制qq(2) 主界面制作
制作从头开始 最后会将写好的组件放到一起的! 之前写了好几天的纯css 有点累 本章中将使用sass 如果代码太长 会分两个或多个章节写 代码中会有详细的注释 以便于大家阅读and理解 界面可能会有部分偏差 比较是仿制的
李昊天
2019/05/26
1.5K0
electron制作聊天界面(仿制qq)
这里解释一下为什么有一个paddingRight 因为我们的滚动条是5px 如果不加 在滚动条显示的时候页面会抖动
李昊天
2019/05/26
2.6K0
每日一学vue2:scoped样式属性、nanoid、记录本小案例(基础版)
如果我们给两个子组件中添加的样式类名相同就会出现类名冲突的问题,         vue显然页面的时候会最终把最后在app.vue中组测的组件的类名中的样式,         渲染出来!
淼学派对
2022/11/20
6100
每日一学vue2:scoped样式属性、nanoid、记录本小案例(基础版)
与 AI 共创:实现回车键自动登录功能
最近,在开发一个 Vue.js 项目时,遇到了一个需求:在登录表单中,用户输入完用户名和密码后,按下回车键即可自动触发登录功能。听起来很简单,但实现过程中却经历了一些小波折。今天,我就来分享一下这段与 AI 共创的经历,既有失败的无奈,也有成功的喜悦!😅🎉
肥晨
2025/03/17
1230
9. CMDB前端开发(上)
目前虽然已经实现登录功能,即使没有登录情况下直接访问任何页面都还可以访问的,我们希望如果用户没有登录情况下,访问任何页面都重新导航到登录页面
alexhuiwang
2023/05/07
1.9K0
9. CMDB前端开发(上)
Vue + Element UI 实现权限管理系统 前端篇(四):优化登录流程
1.1 从 Element 指南中选择组件模板丰富登录界面,放置一个登录界面表单,包含账号密码输入框和登录重置按钮。
朝雨忆轻尘
2019/06/18
2K0
HTML+CSS+JS 实现登录注册界面[通俗易懂]
鉴于小伙伴们没有csdn积分,我把代码压缩成了一个压缩包,放在了gitee上面,需要的请点击下载 点击下载
全栈程序员站长
2022/09/13
25.8K0
HTML+CSS+JS 实现登录注册界面[通俗易懂]
Vue2.x-01点击按钮弹出子Vue组件,遍历JSON展示数据
需求:需要在先有的页面上增加一个“查看处理人”的按钮,点击查看处理人,弹出子组件,将参数传递给子组件,初始化的时候created方法中发送请求到后台,接收到后台返回的JSON数据后,解析JSON展示到页面上。
小小工匠
2021/08/17
1K0
vue-d2admin前端axio异步请求详情
vue-d2admin前端axio异步请求详情 d2admin>src>api>sys.login.js 设计axio api import request from '@/plugin/axios' export function AccountLogin (data) { return request({ url: '/login', method: 'post', data }) } d2admin>src>store>d2admin>modules>account.
landv
2019/07/02
1.2K0
教育平台项目前端:Vue.js 高级
Vue cli 是基于 Vue 的应用开发提供的一个标准的脚手架工具,为应用搭建基础的框架结构,提供插件、开发服务、Preset、构建打包功能。
RendaZhang
2020/09/08
3.2K0
Python项目45-前后端分离Home主页及后台(开撸)
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
5810
Python项目45-前后端分离Home主页及后台(开撸)
[前端学习]从0到1做一个Vue风格的Todolist(Vue牛刀小试)
文章目录 前言 整体的目录结构: App.vue MyHeader.vue MyList.vue MyFooter.vue MyItem.vue 运行效果: 前言 大家好,我是程序员man
Maynor
2021/12/07
2650
[前端学习]从0到1做一个Vue风格的Todolist(Vue牛刀小试)
wordpress后台登录界面美化
@font-face { font-family:fzz; src: url('https://img.zuanmang.net/ttf/fzz.ttf'); } 模板从吾爱破解论坛搬的,原作者分享出来的图片都丢失了,样式也有点问题。写了个圆角样式及添加阴影,以及透明显示。(本想用高斯模糊奈何这个结构全都都会变成毛玻璃效果。)用PHP随机显示图片做背景,实现后台登录背景随机刷新。
AlexTao
2019/12/13
6.3K0
wordpress后台登录界面美化
【Web开发】纯前端实现科技企业官网首页
本篇博文简单实现一个科技类产品官网的主页,图片素材来自于苹果官网。 相关教程参考自https://www.bilibili.com/video/BV117411n7R1 源代码下载:https://download.csdn.net/download/qq1198768105/85630862
zstar
2022/06/14
1.2K0
【Web开发】纯前端实现科技企业官网首页
【学生管理系统】用户管理之用户登录
<template>  <nuxt/> </template> ​ <script> export default { ​ } </script> ​ <style> ​ </style>
陶然同学
2023/02/24
1.7K0
【学生管理系统】用户管理之用户登录
ectron仿制qq(3) 主界面制作(2)
这里解释下 -顶部header的高度(140) 底部的高度(40) 写法很多 不过达到效果就行了 在窗口拉伸的时候可以自适应高度
李昊天
2019/05/26
7400
Vue
通过前面的介绍,我们对目前的项目工程化有了大体了了解,那么其中,在第二阶段的工程化演进中,有一个重要的工程设计理念诞生,他就是著名的 MVC 设计模式,简单点,MVC 其实就是为了项目工程化的一种分工模式;
jinghong
2020/05/12
7.1K0
Vue
200行纯前端Vue代码!教你写一个专属TodoList【零基础友好】
身为互联网农民工的我们,提起 Todo List 大家肯定一点都不陌生,因为 Todo List 是一个圈内比较知名的案例,可以通过 Java, Python 等后端语言再以少量的前端 Html 语言辅助实现整个 Todo List 的增、删、改、查等功能。
Wu_Candy
2022/07/05
1.5K1
200行纯前端Vue代码!教你写一个专属TodoList【零基础友好】
el-upload组件使用
ref="upload":给这个元素一个引用名,方便在Vue实例中通过this.$refs.upload访问。
用户4396583
2024/09/05
1420
相关推荐
electron仿制百度网盘客户端2(登录界面制作)
更多 >
LV.0
创梦网络科技有限公司后端工程师
目录
  • 准备开发
    • 制作一个窗口先
      • 主进程代码:
    • 界面基本布局
      • 页面代码:
      • 样式代码:
    • 窗口拖动
    • 设置背景图
    • 制作顶部
  • 制作表单页
    • 表单界面代码
    • 表单页css
    • 效果
  • 复选框美化
    • 组件代码
    • css代码
    • 效果
  • 注册页面
    • 界面代码
    • 界面Css代码
    • 父组件代码
    • 效果
  • 注册步骤2
    • 界面代码
    • 展示
  • footer代码
    • jie简介
    • login.vue:
    • steps1.vue
    • steps2.vue
    • vuex 代码
    • 效果展示
  • 添加动画效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档