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

企业解决方案平台广州网站优化公司

企业解决方案平台,广州网站优化公司,企业网站建设与推广方案实例,简述网站开发的步骤场景 在系统中,当(有垂直滚动时)点击下拉框后滚动页面,会发现下拉项会遮盖住页面中的元素,不会隐藏 解决:(以vue为例) 在页面滚动或者缩放时隐藏下拉项即可(借助点击目标元素,下…

场景

在系统中,当(有垂直滚动时)点击下拉框后滚动页面,会发现下拉项会遮盖住页面中的元素,不会隐藏
 

解决:(以vue为例)

在页面滚动或者缩放时隐藏下拉项即可(借助点击目标元素,下拉项会自动隐藏的特点)

案例代码:

<template><div class="wrapper"><el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"><el-form-item label="活动名称" prop="name"><el-input v-model="ruleForm.name"></el-input></el-form-item><el-form-item label="活动区域" prop="region"><el-select v-model="ruleForm.region" placeholder="请选择活动区域"><el-option label="区域一" value="shanghai"></el-option><el-option label="区域二" value="beijing"></el-option></el-select></el-form-item><el-form-item label="即时配送" prop="delivery"><el-switch v-model="ruleForm.delivery"></el-switch></el-form-item><el-select v-model="value" placeholder="请选择"><el-optionv-for="item in options":key="item.value":label="item.label":value="item.value"></el-option></el-select><el-form-item label="活动性质" prop="type"><el-checkbox-group v-model="ruleForm.type"><el-checkbox label="美食/餐厅线上活动" name="type"></el-checkbox><el-checkbox label="地推活动" name="type"></el-checkbox><el-checkbox label="线下主题活动" name="type"></el-checkbox><el-checkbox label="单纯品牌曝光" name="type"></el-checkbox></el-checkbox-group></el-form-item><el-select v-model="value2" placeholder="请选择"><el-optionv-for="item in options":key="item.value":label="item.label":value="item.value"></el-option></el-select><el-form-item label="特殊资源" prop="resource"><el-radio-group v-model="ruleForm.resource"><el-radio label="线上品牌商赞助"></el-radio><el-radio label="线下场地免费"></el-radio></el-radio-group></el-form-item><el-select v-model="value3" placeholder="请选择"><el-optionv-for="item in options":key="item.value":label="item.label":value="item.value"></el-option></el-select><el-form-item label="活动形式" prop="desc"><el-input type="textarea" v-model="ruleForm.desc"></el-input></el-form-item><el-select v-model="value4" placeholder="请选择"><el-optionv-for="item in options":key="item.value":label="item.label":value="item.value"></el-option></el-select><el-form-item><el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button><el-button @click="resetForm('ruleForm')">重置</el-button></el-form-item></el-form></div>
</template>
<script>export default {data() {return {ruleForm: {name: '',region: '',date1: '',date2: '',delivery: false,type: [],resource: '',desc: ''},options: [{value: '选项1',label: '黄金糕'}, {value: '选项2',label: '双皮奶'}, {value: '选项3',label: '蚵仔煎'}, {value: '选项4',label: '龙须面'}, {value: '选项5',label: '北京烤鸭'}],value: '',value1: '',value2: '',value3: '',value4: '',rules: {},mouseUp: null,mouseDown: null};},mounted() {this.$nextTick(() => {let scrollDom = document.querySelectorAll('.wrapper')[0];// 滚动监听的容器是scrollDom或者window下,在哪个下监听哪个window.addEventListener('scroll', () => {this.scrollHide('.el-select-dropdown');}, false);})},methods: {// 隐藏popperhidePopper(cls = '.el-popper') {const dom = document.querySelector(cls);console.log(cls, dom, 9999999);if( !dom ){ return; }// 创建鼠标事件if (!this.mouseUp || !this.mouseDown) {console.log('-----create events-----');this.mouseUp = new MouseEvent('mouseup', { 'view': window, 'bubbles': true, 'cancelable': true });this.mouseDown = new MouseEvent('mousedown', { 'view': window, 'bubbles': true, 'cancelable': true });}// 顺序触发mouseDown、mouseUpdom.dispatchEvent(this.mouseDown);dom.dispatchEvent(this.mouseUp);},// 清除鼠标事件delEvents() {console.log('-----delete events-----');this.mouseUp = null;this.mouseDown = null;},/*** 滚动时隐藏* @param cls 隐藏的元素class:如下拉、时间弹框等*/scrollHide(cls) {if( this.mouseUp || this.mouseDown ) { this.delEvents(); } // 先移除this.hidePopper(cls);},submitForm(formName) {},resetForm(formName) {this.$refs[formName].resetFields();}}}
</script><style lang="less">
.wrapper {width: 100%;height: 2000px;
}
</style>

主要逻辑代码:

1、监听当前滚动元素的scroll事件

// window或当前滚动元素的dom节点  
// 滚动监听的容器 滚动容器是哪个就监听哪个
// let scrollDom = document.querySelectorAll('.wrapper')[0];
// scrollDom下滚动或者window下滚动
window.addEventListener('scroll', () => {this.scrollHide('.el-select-dropdown');
}, false);

2、定义滚动监听的容器

/*** 滚动时隐藏* @param cls 隐藏的元素class:如下拉、时间弹框等
*/
scrollHide(cls) {if( this.mouseUp || this.mouseDown ) { this.delEvents(); } // 先移除this.hidePopper(cls);
},

3、隐藏popper

hidePopper(cls = '.el-popper') {const dom = document.querySelector(cls);console.log(cls, dom, 9999999);if( !dom ){ return; }// 创建鼠标事件if (!this.mouseUp || !this.mouseDown) {console.log('-----create events-----');this.mouseUp = new MouseEvent('mouseup', { 'view': window, 'bubbles': true, 'cancelable': true });this.mouseDown = new MouseEvent('mousedown', { 'view': window, 'bubbles': true, 'cancelable': true });}// 顺序触发mouseDown、mouseUpdom.dispatchEvent(this.mouseDown);dom.dispatchEvent(this.mouseUp);
},

4、清除鼠标事件

delEvents() {console.log('-----delete events-----');this.mouseUp = null;this.mouseDown = null;
},

使用:

1、隐藏下拉项

// 如果是el-table中的select,则监听的dom为.el-table__body-wrapper
// 如果是在自定义的元素里,则监听的dom为自定义滚动的元素 如 .wrapper
window.addEventListener('scroll', () => {this.scrollHide('.el-select-dropdown');
}, false);


2、隐藏时间弹框

// 如果是el-table中的select,则监听的dom为.el-table__body-wrapper
// 如果是在自定义的元素里,则监听的dom为自定义滚动的元素 如 .wrapperwindow.addEventListener('scroll', () => {this.scrollHide('.el-date-range-picker');
}, false);

http://www.mmbaike.com/news/104318.html

相关文章:

  • 青海西宁高端网站建设全网营销平台有哪些
  • 什么软件做网站做好北京本地网络推广平台
  • 企业网站seo模板做网站的平台
  • 在网上做贸易哪个网站好seo是什么意思中文
  • 微软手机做网站服务器2023年最新新闻简短摘抄
  • 要想学做网站seo搜索引擎优化兴盛优选
  • 学做立体书的网站sem是什么分析方法
  • 公司建网站多少推广网络营销外包公司
  • 地方型旅游网站长沙seo优化哪家好
  • 如何做网站服务项目链接引擎优化搜索
  • 宿州网站开发昆明seo关键词
  • 品牌网站开发设计百度客服怎么转人工
  • 树立网站整体风格百度合伙人答题兼职赚钱
  • 网站页面布局设计优秀软文范例800字
  • 外贸网站设计个人网站设计内容
  • 网站建设靠什么赚钱已备案域名购买平台
  • 怎样设计网站设计网站logo
  • 钦州网站建做网站用什么软件
  • 浙江建设局网站百度seo排名培训
  • 做医院网站网址之家
  • 徐州丰县建设局网站网站整站优化公司
  • 网站建设需要什么专业app推广引流方法
  • 北京好的网站设计公司软件推广赚佣金渠道
  • 网站建设与网页设计作业网页自动点击软件
  • 贵州省新闻联播seo站长工具查询
  • 快速网站开发介绍优化关键词排名提升
  • python基于web开发的网站开发云搜索网页版入口
  • 广告公司怎么做外贸谷歌优化
  • 手工做的网站百度搜索怎么优化
  • 网站服务器买了后怎么做的万能软文模板