推书总结

整个推书项目从3月30日开始,到4月20日结束。按照主页-分类-详情-搜索页面的顺序进行打码。

1.主页:

由于美观问题,采用比例方式将整个设计图自适应窗口,同时采用最小宽度的方法。

里面主要涉及

  • 1.布局。采用盒子套盒子,flex的方法进行布局。
  • 2.搜索框的书写。当时在这块卡了比较久的时间,因为以为是鼠标点击里面的字消失,所以用了onfocus ,onblur 。后来原来只是输入的时候字消失,则采用了placeholder。
  • 3.分类框框的点击。因为要实现两个页面的互动,所以采用localstorage记录下点击的状态,在另一个页面继续用这个记录下的状态。中间有个难题是,怎么让它知道我点击的是哪一个呢?我采用了onclick的方法,用闭包的方法,为每一个类赋值,这样就更好记录状态。
  • 4.登录框的弹出。采用了js的样式改变,style和innerHTML.里面的难点我认为是loading的弹出,我继续采用了localstorage来记录登录小头像是否变成用户名的状态,来实现loading动画的播放。
2.搜索页:

其余三个页面都用px按照设计图直接编排。

里面主要涉及:

  • 1.布局:还是用flex布局。‘
  • 2.轮播图:这个比较难。写码思想参考了慕课网老师的想法。整个代码核心是animate函数。点击小圆点,自动播放,都依赖于animate。
    • 点击小圆点,分为三种情况,如果动画正在播放则无效,如果小圆点高亮则无效,否则根据点击的第几个个数来计算偏移量,传至animate函数,同时高亮,播放动画。
    • 自动播放,分为两种情况,如果正在播放,则无效,否则传入默认值1280至animate函数。这里有个点,实现轮播无缝链接,需要将圆点的第几个数index变化。
    • animate函数。通过传入的偏移量,计算速度,并且判断移位是否在范围之内,在则动画播放,不在则调整,再播放动画。
  • 3.内容填充。这里的数据交互用了很长的一段时间来把它突破,因为当时身体不太好,很迷糊,一直没有找到突破口,不晓得数据交互是什么东西。后来通过搜索引擎,师兄师姐指点,摸出了点门路。
    • 我先把整个板块用css排好,然后把它们的html删掉。将数据获得之后,采用了几个循环,利用jq的append方法,将标签及数据一个个填充进去。
  • 4.分类,分页栏。将数据填充好后,记录点击的类数,页数。分类框相对容易解决,记录完类数,则用tab方法实现类别的切换。
    • 分页框,记录点击的页面,在这里要对数据的填充的循环条件进行修正,因为一页只能出现8本书,两行。比较难的点是下页的翻动,因为涉及了和总页数的判断,所以要得到总页数。之前一直用total这个全局变量来做总页数,然后发现它在之前的循环已经被固定了,不会因为类别的变化而变化。所以最后采用了Math.ceil(data.bookclass[currentcategory - 1].bookInfo.length / 8)的方法,用之前闭包得出的全局变量currentcategory当前类别来做。
3.详情页:

里面主要涉及:

  • 1.布局。
  • 2.数据填充。里面比较难的点是如何让它知道我点的是哪一本书?因为一个页面只出现8本书,所以我给他们用数值添加新属性行不通。所以最后我利用了几个全局变量,当前类别,当前页数,当前书本数,构成表达式书写。
  • 3.过渡。因为弹出框需要过渡,因此我采用了jq的css方法。
4.搜索页面

里面主要涉及:

  • 1.布局。
  • 2.数据填充。
  • 3.搜索的东西里的填充。采用localstorage。
  • 4.分类下拉框。采用jq的过渡,slideToggle方法。
学到了什么:
  • 1.这个月,过的很充实。打码的过程也挺爽,总是在遇到一个问题,解决一个问题的循环中度过,然后回首发现原来自己也可以解决这么多问题。不过学的知识很散,这个月学的知识因为都只是为了要写的代码服务,所以很杂,很碎片化。
  • 2.一直想要培养的打码习惯,写注释终于培养出来了,实在不想再对着一堆代码发愁。不过写版本这件事,还是没有培养好。
  • 要学习的还有很多,只有不断向前,才能不被别人追上/追上别人。