一 网易严选分类效果图

vue pc商城仿网易严选商品的分类效果

 

 

分析:

  1. 共3级分类,正常页面1级分类显示2,3级分类弹窗隐藏,当鼠标移到1级分类上面,下面的2,3级分类弹窗显示
  2. 鼠标可以从一级分类顺滑移入到下面弹窗2,3级分类,且弹窗一直显示
  3. 当鼠标移出分类范围,2,3级分类弹窗隐藏

 

 

二 思路分析

  1. 最开始想的是使用鼠标移入移出事件: mouseover,mouseout,实现了一下,发现在1级分类与2,3级分类之间移入时,弹窗总是先隐藏,比较麻烦,故舍弃
  2. 最后决定使用 css 的 hover 属性,关键是:最开始的弹窗需要隐藏,用哪种方式? display:none、visibility:hidden、opacity:0、overflow:hidden;
  3. 先后使用了 opacity:0、overflow:hidden 这2种,出现一个bug: 从任何1级分类往下移,都只展示1级分类最后一个的2,3级分类,如下图:

vue pc商城仿网易严选商品的分类效果

vue pc商城仿网易严选商品的分类效果

从彩妆护肤往下移鼠标,就变成了海鲜水产的2,3级分类了

 

但是使用 display:none、visibility:hidden 这两个属性,问题就不存在了

 

三 实现核心代码

html:

               <!-- 分类 -->
                <li
                  v-for="(item,i) in categoryList"
                  :key="i"
                  class="categoryBox"
                  :class="{'active':i === choosePage}"
                  @click="goCategoryPage(item.id,i)"
                  @mouseover="mouseoverEvent(item.children)"
                >
                  <div class="categoryName cursor">{{item.categoryName}}</div>

                  <ul class="categoryList2" ref="categoryPopRef">
                    <li
                      v-for="(stem,d) in categoryList2"
                      :key="d"
                      class="categoryItem2"
                    >
                      <div
                        class="categoryName2 cursor"
                        @click="goCategoryPage(stem.id,i)"
                      >{{stem.categoryName}}</div>

                      <ul class="categoryList3">
                        <li
                          v-for="(titem,t) in stem.children"
                          :key="t"
                          class="categoryItem3"
                          @click="goCategoryPage(titem.id,i)"
                        >
                          <div class="categoryName3 cursor">{{titem.categoryName}}</div>
                        </li>
                      </ul>
                    </li>
                  </ul>
                </li>
View Code

相关文章:

  • 2022-02-09
  • 2022-01-05
  • 2022-12-23
  • 2021-08-14
  • 2022-12-23
  • 2021-09-16
  • 2021-12-21
  • 2022-03-01
猜你喜欢
  • 2021-07-21
  • 2021-09-22
  • 2021-10-06
  • 2022-12-23
  • 2022-03-15
  • 2022-12-23
  • 2022-02-09
相关资源
相似解决方案