商品分类栏目鼠标滑动到后的隐藏分类栏目显示的代码先后顺序

来源:1-5 按需加载商品详情

键盘f11

2020-10-14 20:49:04

http://img.mukewang.com/climg/5f86ea1e09b06c1a08000494.jpg

http://img.mukewang.com/climg/5f86ea1e09c64d7c09460385.jpg

http://img.mukewang.com/climg/5f86ea1e092d03d008400422.jpg

http://img.mukewang.com/climg/5f86ea1e0910fb5c06940350.jpg

http://img.mukewang.com/climg/5f86ea1e09bfcfcd05740246.jpg

http://img.mukewang.com/climg/5f86ea1e0914efd711520415.jpg

http://img.mukewang.com/climg/5f86ea1f09fa8c8505040226.jpg

老师,您好,使用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回答

好帮手慕久久

2020-10-15

同学你好,问题解答如下:

  1. dropdown-layer的显示和隐藏是通过jquery来实现的,以css动画为例,代码在如下:

    http://img.mukewang.com/climg/5f87ab280909dbe006430262.jpg

    http://img.mukewang.com/climg/5f87ab5d0916c0f506790436.jpghttp://img.mukewang.com/climg/5f87ab9909ef9d1308200322.jpg

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

    http://img.mukewang.com/climg/5f87ac4509fc311903450042.jpg

http://img.mukewang.com/climg/5f87ac7809ca8ffd06980528.jpg

http://img.mukewang.com/climg/5f87acab0995b64118450302.jpg

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

4. 动态加载数据,是index.js中的loadOnce方法,如下:

http://img.mukewang.com/climg/5f87af0c0910fa6b08900440.jpg

createCategoryDetails 方法只是将loadOnce方法请求回来的数据,生成html结构,它不是加载数据的代码,因此单纯调用createCategoryDetails 是没有作用的,也不会报错。

此处内容是非常难的知识点,即使工作了一两年,也未必能写出这样的代码,因此建议同学先以学习组件化开发思想为主,即跟着老师体验一下代码是如何进行一步步封装、优化的,然后再关注代码本身是怎样实现的。对于代码的具体实现,建议同学先不要自己写,因为自己写,难度非常非常大,一定要跟着视频内容敲代码,每敲几行代码,就看下该代码是什么含义,或者有了实际开发经验之后,再回头看代码也是可以的。

如果我的回答帮到了你,望采纳,祝学习愉快!

0

0 学习 · 14456 问题

查看课程