商品分类栏目鼠标滑动到后的隐藏分类栏目显示的代码先后顺序
来源:1-5 按需加载商品详情
键盘f11
2020-10-14 20:49:04







老师,您好,使用js和css代码实现商品分类侧边栏的显示部分的视频,我反复看了几次,不是很明白代码功能实现的先后顺序,有几个问题想要咨询一下老师:
1.如上图所示,商品分类隐藏部分的内容<div class="dropdown-layer" style="display: none;"></div> 当鼠标滑动至对应区域的时候是显示的,display:block ,当鼠标离开的时候style="display:none;" 那css来实现的功能是否为字体颜色的改变?我现在搞不清楚的就是style属性block和none之间的切换是通过css来实现还是通过JQery来实现?我找不到对应的那个代码
2.
dropdown.createCategoryDetails =function ($elem ,data){
var html='';
for( var i=0;i< data.length;i++){
html +='<dl class="category-details cf"><dt class="category-details-title fl"><a href="###" target="_blank" class="category-details-title-link">' + data[i].title + '</a></dt><dd class="category-details-item fl">';
for(var j=0;j<data[i].items.length;j++){
//html + ='<a href="###" target="_blank" class="link">' + data[i].items[j] + '</a>';
//html += '<a href="###" target="_blank" class="link">' + data[i].items[j] + '</a>';
html+= '<a href="###" target="_blank" class="link">' +data[i].items[j]+ '</a>';
}
html +='</dd></dl>';
}
上述为循环遍历隐藏部分内容的逐条数据,这里是通过JSON来实现的,有些不明白这里的意义在哪里,我们为什么要通过category-detail-3.json文件来实现文件的读取呢?是不是为了防止对源代码的变动,数据的添加删减通过js来实现,而js的代码是固定的,且html文件也不需要改动?
3.加载文件的是哪一串代码呢?我现在的问题是加载不出来内容,且代码无报错
dropdown.createCategoryDetails = function($elem, data) {
var html = '';
for (var i = 0; i < data.length; i++) {
html += '<dl class="category-details cf"><dt class="category-details-title fl"><a href="###" target="_blank" class="category-details-title-link">' + data[i].title + '</a></dt><dd class="category-details-item fl">';
for (var j = 0; j < data[i].items.length; j++) {
html += '<a href="###" target="_blank" class="link">' + data[i].items[j] + '</a>';
}
html += '</dd></dl>';
}
// setTimeout(function () {
$elem.find('.dropdown-layer').html(html);
// },1000);
};
是否为上述代码?我已经将上述代码写入后,内容还是显示不出来
var dataLoad=$elem.data('load');
if(!dataLoad) return;
1回答
同学你好,问题解答如下:
dropdown-layer的显示和隐藏是通过jquery来实现的,以css动画为例,代码在如下:



下图中字体颜色变红色,是通过css类名来实现的:



3. createCategoryDetails方法,是遍历json数据生成html结构,这样写的好处,同学的理解是正确的。实际开发中,会变化的html结构一般不会直接写死在html页面上,否则,每次结构变化,我们都要手动修改html结构。因此采用利用js将json数据请求回来的方式,这样即使数据变化了,我们的代码只需写一遍,就可以实现动态更新dom结构。
4. 动态加载数据,是index.js中的loadOnce方法,如下:

createCategoryDetails 方法只是将loadOnce方法请求回来的数据,生成html结构,它不是加载数据的代码,因此单纯调用createCategoryDetails 是没有作用的,也不会报错。
此处内容是非常难的知识点,即使工作了一两年,也未必能写出这样的代码,因此建议同学先以学习组件化开发思想为主,即跟着老师体验一下代码是如何进行一步步封装、优化的,然后再关注代码本身是怎样实现的。对于代码的具体实现,建议同学先不要自己写,因为自己写,难度非常非常大,一定要跟着视频内容敲代码,每敲几行代码,就看下该代码是什么含义,或者有了实际开发经验之后,再回头看代码也是可以的。
如果我的回答帮到了你,望采纳,祝学习愉快!
相似问题
回答 1
回答 2