1. 创建分支city-list
把线上的分支拉到本地:git pull,然后切换到这个分支上:git checkout city-list,最后重启服务器:cnpm run dev
2. 创建List组件并在City组件中引用注册使用。
3. 分析布局,建三个区域,并加一像素边框:
城市列表布局
4. css
城市列表布局
一像素边框的颜色不是太清楚,改动一下颜色:
城市列表布局
5. 三个部分

  • 当前城市
    城市列表布局
    样式:
    城市列表布局
    发生了塌陷,我们在布局的时候经常会遇到这个问题,当给子元素设置浮动后,父元素的高度会发生塌陷,也就是说父元素的高度变为0,解决这个问题,我们只要把父元素变成一个BFC(块级格式化上下文)就可以了,常用的办法是给父元素设置overflow:hidden
    城市列表布局
    这样就显示正常了。
    调整样式,设置padding:.1rem 0,同时设置border-radius: .06rem
    城市列表布局
    多复制几个button部分:
    城市列表布局
    最终要实现右图的效果,我们需要在右侧预留大约30像素的距离,来设置根据首字母查询城市,所以要给button-list右边一个0.6rempadding值:
    城市列表布局
  • 热门城市
    复制当前城市div内容改为热门城市:
    城市列表布局
  • 首字母
    城市列表布局
    设置样式:
    城市列表布局
    效果:
    城市列表布局
    然后多复制几个区块:
    城市列表布局
    Bug:
    这时发现是可以上下“拉动的”,是因为没有设置overflow:hidden,多出去的部分会撑出去;
    解决:
    为标签list设计样式:
    城市列表布局
    List将空间都占满了,需要设置样式让他让出城市选择部分:
    城市列表布局
    想要撑出的区域隐藏,给list加上设置:overflow:hidden。就出现了不能拖动的list区域:

6. Better-scroll的使用及字母表布局

  1. better-scroll 是一款重点解决移动端(已支持 PC)各种滚动场景需求的插件。在这个模块中我们要实现字母表的滚动:
  • 在GitHub上搜索better-scroll第三方包,安装better-scroll
    城市列表布局
  • 重启服务器,到官网看使用说明:
    城市列表布局
    注意:better-scroll应用于wrapper,滚动部分是content。Better-scroll只处理wrapper的第一个子元素content的滚动,这意味着将忽略其他元素。
  • 根据better-scroll结构要求,修改我们的模板,在三个area最外层增加一层div:
    城市列表布局
  • 使用规则,首先要引入better-scroll,然后创建一个better-scroll的实例,这个实例接收一个dom元素(wrapper):
    城市列表布局
    还记得我们操作dom需要借助什么吗?利用ref,其可以帮助我们获取dom
    城市列表布局
  • 然后在逻辑部分引入better-scroll,并利用mounted函数,它会在页面挂载完后自动执行,这样就能够实现按住页面滑动的效果了:
    城市列表布局
  1. 右侧字母表的实现
  • components里创建一个组件Alphabet.vue,并在City组件中引用,对该子组件进行布局的修改:
    城市列表布局
    Display:flex;flex-direction:column;justify-content:center。这三行语句使字母垂直居中。其中justify-content 用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式。这里需要了解flex布局,见http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool。使文字水平方向上居中,并设置颜色:
    城市列表布局
    7. 提交到线上

相关文章:

  • 2022-12-23
  • 2022-02-28
  • 2023-03-13
  • 2021-12-02
  • 2022-12-23
  • 2021-11-17
  • 2022-03-01
  • 2021-11-20
猜你喜欢
  • 2021-11-05
  • 2021-11-12
  • 2022-12-23
  • 2022-12-23
  • 2021-09-16
  • 2021-06-18
相关资源
相似解决方案