按需加载并且使用css方式实现slideUpDown特效显示,这是会出现layer高度为0的问题

按需加载并且使用css方式实现slideUpDown特效显示,这是会出现layer高度为0的问题

http://img1.sycdn.imooc.com//climg/5dd231720994012b08020903.jpg初始化时,记录了layer的高度,这时还没加载,所以高度为0 ,

虽然后来触发show事件时,在layer中加载了内容,但是slideUpDown显示特效就是高度从0变成0.


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕夭夭 2019-11-19 09:58:17

同学你好,因为高度设置时数据还没有完全加载进来,当数据完全加载过来,高度不会更新了,所以出现问题了。同学找一下自己项目的dropdown.js ,设置一个更新高度的函数。如下:

(因为没有你的文件,所以老师使用的源码中的文件)http://img1.sycdn.imooc.com//climg/5dd34a680986843a06870206.jpg

index.js

http://img1.sycdn.imooc.com//climg/5dd34be709bb50a506500503.jpg

如果没有解决问题,可以继续提问,把自己项目的html ,css ,js代码都粘贴上来,以便老师准确高效的定位问题。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

好帮手慕夭夭 2019-11-18 15:14:26

同学你好,这个问题可能是数据还没有加载进来,就计算高度,所以为0。请同学把index.js代码粘贴上来,老师帮助你确认一下。(注意不要截图,把代码粘贴过来,以便老师测试准确高效的为你查找问题)

祝学习愉快!

  • 提问者 午炎子栩 #1
    index.js (function($){ 'use strict'; // 按需加载 $('.dropdown').on('dropdown-show',function(e){ var $this = $(this); var dataload = $this.data('load'); if(!dataload) return; //有json数据地址才往下去执行加载 if(!$this.data('loaded')){//只一次加载---已经加载就不加载了 var $layer = $this.find('.dropdown-layer'), html = ''; $.getJSON($this.data('load'),function(data){ setTimeout(function(){ //模拟加载时间 for(var i = 0; i<data.length;i++){ html+='<li><a href="'+data[i].url+'" target="_blank" class="menu-item">'+data[i].name+'</a></li>'; } $layer.html(html); $this.data('loaded',true);//设置加载完成 },1000); }); } }); // 调用下拉菜单插件 $('.dropdown').dropdown({ css3 : true, js : false, animation: 'slideUpDown' }); })(jQuery); ------------------ animation: 'slideUpDown'
    2019-11-18 23:22:04
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师