1. 创建新分支
码云上创建功能分支:index-icons,把该分支拉到本地,然后切换到该分支:
图标区域页面布局components下创建Icons.vue,取名HomeIcons图标区域页面布局
Home组件中引入并注册Icons组件:
图标区域页面布局
图标区域页面布局
设置元素icon的样式,高度自适应为父元素宽度的一半:
图标区域页面布局
2. 显示八个小图标
– 先观察其中的一个小图标icon的位置和样式:
图标区域页面布局
– 首先我们要了解在CSS中,marginpadding的百分比数值总是相对于父元素的宽度来计算的。利用这个特性,只要将padding-top或者padding-bottom设置为与width相同的百分比,再将height设为0,最后通过定位实现自适应的正方形盒子:
图标区域页面布局– 复制八个相同的icon的效果:
图标区域页面布局
– 最后实现图标的内容,每一个小方格里有一张图标和说明文字,先实现第一个:
图标区域页面布局
– 相应的样式代码:

.icon
  position: relative
  overflow: hidden
  float: left
  width: 25%
  height: 0
  padding-bottom: 25%
  .icon-img
    position: absolute
    top: 0
    left: 0
    right: 0
    bottom: .44rem  /*给p标签留出来的位置*/
    box-sizing: border-box
    padding: .1rem
    .icon-img-content
      display: block
      margin: 0 auto  /*图片实现自动居中*/
      height: 100%
  .icon-desc
    position: absolute
    right: 0
    left: 0
    bottom: 0
    height: .44rem
    line-height: .44rem
    color: $darkTextColor
    text-align: center

– 最后复制八个图标的效果:
图标区域页面布局
3. 图标区域逻辑实现

  1. 想要实现当有多于八个图标的时候可以左右循环拖动,将Swiper.vue组件中的代码(黄色部分)拷贝粘贴到icons标签中,包裹icon元素:
    图标区域页面布局
  2. bug
    在图标下侧难以拖动,原因是Swiper-container的高度和图片一样高,没有将icons的高度完全包裹在内;:
    图标区域页面布局
    解决:
    将icons之后的样式往前移一级,和icons平级。并改写icons的样式内容:
    图标区域页面布局
    这样在icons范围内左右滑动都会引起轮播图的效果。
  3. 此时显示的数据实际上是我们写死的,而在实际中应该是由后端传递过来的。下面定义一组数据:
    图标区域页面布局
    遍历数组,显示内容:
    图标区域页面布局
  4. 实现分页
    – 现在我们的第九个图标在轮播图中显示不出来,通过computed属性实现分页:
computed: {
      pages(){
        // 最终分页结果
        const pages=[]
        // 遍历icon列表
        this.iconList.forEach((item,index) => {
          // 每8条为一页;例:0-7为第一页
          // page为当前页码;
          const page =Math.floor(index/8)
          // 判断pages中当前页的存储数组是否已声明,未声明则声明当前页为数组格式;
          if(!pages[page]){
            pages[page]=[]
          }
          // 将当前icon信息放入对应的页码数组中;
          pages[page].push(item)
        })
        // 返回分页之后的icon集合;
        return pages
      }
    }

在这里下载插件vue devtools调试工具,能帮助我们直观地理解,打开Chrome
图标区域页面布局
图标区域页面布局
控制台有Vue这一选项:
图标区域页面布局
我们就可以看到各组件的结构,以及分页效果:
图标区域页面布局
– 接下来循环有多少个轮播页面:
图标区域页面布局
同时遍历的元素也由item of iconList变为item of page。最后会实现根据数据项的不同,自动化的构建页码,可以实现多页切换的效果。

4. 优化
icon-desc文字较长时,由于盒子宽度限制显示不完全,我们要借助一个css样式完成文字的省略。text-overflow:ellipsis;–当文本溢出时是否显示省略标记。并不具备其它的样式属性定义。要实现溢出时产生省略号的效果还须定义:强制文本在一行内显示white-space:nowrap及溢出内容为隐藏overflow:hidden;,只有这样才能实现溢出文本显示省略号的效果。
图标区域页面布局
方便全局修改,将这三个属性封装在styles下面的一个mixins.styl的文件里:
图标区域页面布局
首先引入该文件:
图标区域页面布局
然后直接使用别名:
图标区域页面布局
5. 提交到线上
git add .
git commit -m add_icons 放到暂存区
git push 本地的代码就同步到线上了
git checkout master master上放的是整个工程的最新代码
git merge origin/index-icons 合并masterindex-icons分支
git push

相关文章:

  • 2022-12-23
  • 2022-01-13
  • 2022-12-23
  • 2021-11-18
猜你喜欢
  • 2021-12-11
  • 2021-09-29
相关资源
相似解决方案