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

手机端公司网站怎么做/廊坊首页霸屏优化

手机端公司网站怎么做,廊坊首页霸屏优化,WordPress电影网,做网站的服务器cpu异常业务背景 弹窗是页面交互中的重要组成部分,前端开发的同学应该经常与它打交道。小编的日常是做面向C端的H5活动页面,弹窗处理是每天都要面对的情况。根据日常工作中的场景,我总结了弹窗有以下特点: 不同的活动页面,弹…

业务背景

弹窗是页面交互中的重要组成部分,前端开发的同学应该经常与它打交道。小编的日常是做面向C端的H5活动页面,弹窗处理是每天都要面对的情况。根据日常工作中的场景,我总结了弹窗有以下特点:

  1. 不同的活动页面,弹窗样式基本不同;
  2. 不同的CSS开发者,弹窗的html结构不尽相同;
  3. 同一个活动页面中的弹窗样式基本相同,但弹窗文案、按钮文案、按钮交互都不尽相同;

第一点和第二点导致我们无法抽离出适用于所有页面的弹窗组件,只能根据每次的活动页进行定制化。

第三点是我们这篇文章重点分析的情况,最常规的做法就是每个弹窗拥有独立的html结构和添加对应的事件处理逻辑。

这样固然能解决问题,但是当页面逻辑复杂、弹窗特别多的情况下,你会发现html中存在大量的弹窗dom结构,不仅影响代码美观,也增加了html文件大小和渲染解析时间。最不能忍的是,每处理一种情况,都要去增加对应的弹窗,工作相当繁琐。

比如以下弹窗:

image

image

image

image

这些还只是一类逻辑出现的弹窗,如果页面逻辑复杂,可能会出现几十个这种弹窗。上面的弹窗样式基本相同,不同的就是文案、按钮处理逻辑等,怎么抽离他们呢?

image

抽离方案

1. ES6 + Zepto 原生撸

let commonPop = {init: function (param) {let popHtml = `<div class="m-popup-inner dn" id="commonPop"><div class="popup-info"><div class="title">${param.title}</div><div class="c-des-info">${param.desc}</div></div><div class="popup-btn"><a href="javascript:;" class="c-btn-link dn leftBtn">${param.leftBtnTxt}</a><a href="javascript:;" class="c-btn-link dn rightBtn">${param.rightBtnTxt}</a></div></div>`$('body').append(popHtml);if(param.leftBtnTxt) {$('#commonPop .leftBtn').removeClass('dn'); // 避免按钮不存在的情况$('#commonPop .leftBtn').on('click', function() {param.leftCallback && param.leftCallback();$('#commonPop').remove(); // 销毁弹窗})}if(param.rightBtnTxt) {$('#commonPop .rightBtn').removeClass('dn'); // 避免按钮不存在的情况$('#commonPop .rightBtn').on('click', function() {param.rightCallback && param.rightCallback();$('#commonPop').remove(); // 销毁弹窗})}$('#commonPop').removeClass('dn');}
}export default commonPop;

调用时只需要传对应参数就行,比如:

import commonPop from './commonPop';// 第一个弹窗
let param = {title: '开通成功',desc: '已为你开通25天会员',leftBtnTxt: '我知道了'
}
commonPop.init(param);// 第二个弹窗
let param = {title: '账号提示',desc: '请您确认两方的账号绑定手机号一致后点击领取',leftBtnTxt: '换绑手机号',leftCallback: function(){goChangePhone();},rightBtnTxt: '关闭'
}
commonPop.init(param);// 第三个弹窗
let param = {title: '注册提示',desc: '完成注册即可激活权益',leftBtnTxt: '取消',rightBtnTxt: '前往注册'rightCallback: function(){goRegister();}    
}
commonPop.init(param);// 第四个弹窗
let param = {title: '实名认证提示',desc: '你需要实名认证后才可激活权益',leftBtnTxt: '取消',rightBtnTxt: '前往认证'rightCallback: goRealName.bind(this)   
}
commonPop.init(param);

2. VUE版本

// commonPop.vue
<template><div v-if="show"><div class="cover"></div><div class="m-popup"><div class="pop-info"><div class="c-tit" v-html="title"></div>               <div class="c-text">{{desc}}</div></div></div><div class="pop-btn"><a href="javascript:;" class="c-btn-link" v-if="leftBtnTxt" @click="leftCallback">{{leftBtnTxt}}</a><a href="javascript:;" class="c-btn-link highlight" v-if="rightBtnTxt" @click="rightCallback">{{rightBtnTxt}}</a></div></div></div>
</template>
// index.js
import vue from 'vue'
import popUpComponent from './commonPop.vue'// 返回一个 扩展实例构造器
const PopUpConstructor = vue.extend(popUpComponent)function showPopUp(popData) {// 实例化一个 commonPop.vueconst popUpDom = new PopUpConstructor({el: document.createElement('div'),data() {return {title: popData.title,               descFirst: popData.descFirst,               leftBtnText: popData.leftBtnText,rightBtnText: popData.rightBtnText,show: true}},methods: {leftCallback: function(){this.show = false;popData.leftCallback && popData.leftCallback()},rightCallback: function(){this.show = false;popData.rightCallback && popData.rightCallback()}}})// 把 实例化的 popUp.vue 添加到 body 里document.body.appendChild(popUpDom.$el)return popUpDom;
}// 注册为全局组件的函数
function registryPopUp() {// 将组件注册到 vue 的 原型链里去,// 这样就可以在所有 vue 的实例里面使用 this.$popUp()vue.prototype.$popUp = showPopUp
}export default registryPopUp

调用时只需要传对应参数就行,比如:

// 第一个弹窗
let param = {title: '开通成功',desc: '已为你开通25天会员',leftBtnTxt: '我知道了'
}
this.$popUp(param);// 第二个弹窗
let param = {title: '账号提示',desc: '请您确认两方的账号绑定手机号一致后点击领取',leftBtnTxt: '换绑手机号',leftCallback: function(){goChangePhone();},rightBtnTxt: '关闭'
}
this.$popUp(param);// 第三个弹窗
let param = {title: '注册提示',desc: '完成注册即可激活权益',leftBtnTxt: '取消',rightBtnTxt: '前往注册'rightCallback: function(){goRegister();}    
}
this.$popUp(param);// 第四个弹窗
let param = {title: '实名认证提示',desc: '你需要实名认证后才可激活权益',leftBtnTxt: '取消',rightBtnTxt: '前往认证'rightCallback: goRealName.bind(this)   
}
this.$popUp(param);

总结

两种方案的原理基本一样,都是在触发弹窗展示后,动态的添加dom结构到html中,点击弹窗按钮执行逻辑后,删除对应的dom结构,这样就避免了html页面中出现过多弹窗dom造成的页面臃肿问题。

优化点无大小,只要能够提高页面性能、有利于维护代码、减少重复劳动力、提高工作效率,都可以在日常的工作中进行优化整理。


扫一扫 关注我的公众号【前端名狮】,更多精彩内容陪伴你!

http://www.jmfq.cn/news/4878667.html

相关文章:

  • 效果好的武汉网站建设/专业网络推广
  • 中国建设工程造价网/百度快照优化的优势是什么
  • 卖灯杆的做网站好/网络营销能干什么工作
  • 有没有帮人做机械设计的网站/2023网站seo
  • wordpress博客导出/seo优化专员
  • 好看到让人久久不忘的电影/seo研究中心
  • 帮客户做插边球网站/公司网站建设
  • 在网盘上怎么做自己的网站/公司网站建设北京
  • 怎么看一个网站用什么做的/手机网站智能建站
  • 成都网站网页设计/百度云资源搜索引擎入口
  • 自己做的网站怎么放上网/2023北京封控了
  • 企业信息查询系统官网北京/合肥网站优化推广方案
  • 0基础做网站/泉州网站关键词排名
  • 网站建站需要什么/电商网站首页
  • 网站空间备案流程/销售平台软件有哪些
  • 怎么在虚拟主机上发布网站/图片识别搜索引擎
  • wordpress重复网站/百度指数分析报告
  • 徐州好点的做网站的公司有哪些/软文广告案例分析
  • 学做面包网站/百度搜索网页版
  • 第五次普查数据自网站怎么做/网络营销推广的方法
  • dw制作asp网站模板/网站排名怎么做上去
  • 树莓派下载wordpress/周口seo推广
  • 一个网站做数据维护3天正常吗/谷歌应用商店
  • 我想学制作网站吗/kol推广是什么意思
  • 怎么做轴承网站/热门关键词查询
  • ps做 网站标准尺寸是多少合适/教育培训机构加盟
  • 手机网站建设方案doc/semantics
  • 网站建设实施步骤/百度爱采购客服电话
  • 网页标准化对网站开发维护的好处/公众号软文推广多少钱一篇
  • 上海网上做鸭子的网站/站长之家站长工具综合查询