资讯专栏INFORMATION COLUMN

一些问题

VincentFF / 3410人阅读

摘要:并且满足条件下一个标题高度高于滚动的高度和条件没有下一个标题的其中之一条件。解决了原来专题页面的几个问题,如海报与大小不一致问题。修正了一些边距的问题。下周工作计划确保页面的问题都解决,并完成测试。

2016年第四周周报 1. 上周工作内容

这一周主要把重心放在了项目方面,解决了以下几个问题:

border 1px的问题,直接上代码:

CSS部分:

</>复制代码

  1. .line{
  2. border-bottom: 1px solid #E6E6E6;
  3. }
  4. .iosx2line{
  5. border-bottom: 0.5px solid #E6E6E6;
  6. }
  7. .iosx3line{
  8. border-bottom: 0.35714px solid #E6E6E6;
  9. }

JS部分:

</>复制代码

  1. //解决border 1px问题,之所以引入这个js是因为我发现在chrome浏览器上模拟的时候并不支持低于1px像素的设置
  2. let dpr = window.devicePixelRatio,
  3. newsHead = $(".newsHead"),
  4. commentItem = $(".comment-item"),
  5. nList = $(".n-list,.newslist-digest"),
  6. mainShow = $(".mainshow-wrapper"),
  7. borderClass = "",
  8. isMobile = !!navigator.userAgent.match(/AppleWebKit.*Mobile.*/);
  9. if (dpr >= 2) {
  10. var testElem = document.createElement("div");
  11. testElem.style.border = ".5px solid transparent";
  12. document.body.appendChild(testElem);
  13. if (testElem.offsetHeight == 1){
  14. if(isMobile && dpr === 2){
  15. borderClass = "iosx2line";
  16. }else if(isMobile && dpr === 3){
  17. borderClass = "iosx3line";
  18. }else{
  19. borderClass = "line";
  20. }
  21. }else{
  22. borderClass = "line";
  23. }
  24. document.body.removeChild(testElem);
  25. }
  26. newsHead.addClass(borderClass);
  27. commentItem.addClass(borderClass);
  28. nList.addClass(borderClass);
  29. mainShow.addClass(borderClass);

标题栏置顶的问题
描述:在项目中需要将每个分栏的标题在不同的情况下分别置顶,做出原生的效果,JS代码如下:

</>复制代码

  1. const TopTitle = (() => {
  2. const my = {
  3. config : {
  4. },
  5. init(){
  6. let h2s = $(".topNews>h2"),
  7. body = $("body"),
  8. posfixed = false;
  9. $(window).on("scroll",function(){
  10. let titleEle = $("#topTitle");
  11. h2s.forEach(function(item,index){
  12. my.config[my.getElementTop(item)] = {
  13. html :`

    ${item.innerHTML}

    `,
  14. isfixed : false,
  15. element : item
  16. };
  17. })
  18. let tops = Object.keys(my.config),
  19. currentEle,
  20. nextEle,
  21. article,
  22. currentTop = my.getScrollTop();
  23. for(let i = 0,len = tops.length; i < len; i++){
  24. //前n-1个标题
  25. if(i !== (len - 1)){
  26. nextEle = my.config[tops[i+1]].element;
  27. article = $(nextEle).parents("article");
  28. }else{
  29. //最后一个标题
  30. currentEle = my.config[tops[i]].element,
  31. article = $(currentEle).parents("article");
  32. }
  33. //满足条件1:当前标题小于滚动的高度。并且满足条件2:下一个标题高度高于滚动的高度;和条件3:没有下一个标题;的其中之一条件。
  34. if(tops[i] <= currentTop && (tops[i+1] > (currentTop + 40) || !tops[i+1])){
  35. posfixed = false;
  36. //如果目前已经有标题被置顶
  37. if(my.config[tops[i]].isfixed === false){
  38. my.config[tops[i]].isfixed = true;
  39. article.append(my.config[tops[i]].html);
  40. if(!!titleEle){
  41. titleEle.remove();
  42. }
  43. }
  44. }else if(nextEle.getBoundingClientRect().top <= 40){
  45. console.log(11);
  46. if(posfixed == false){
  47. $("#topTitle").removeClass().addClass("posunfixed");
  48. posfixed = true;
  49. }
  50. }else{
  51. console.log(22);
  52. posfixed = false;
  53. titleEle.remove();
  54. }
  55. }
  56. })
  57. },
  58. //获取当前页面滚动的高度
  59. getScrollTop(){
  60. var scrollTop=0;
  61. if(document.documentElement&&document.documentElement.scrollTop){
  62. scrollTop=document.documentElement.scrollTop;
  63. }else if(document.body){
  64. scrollTop=document.body.scrollTop;
  65. }
  66. return scrollTop;
  67. },
  68. //获取元素在页面中的所在位置高度
  69.   getElementTop(element){
  70.     var actualTop = element.offsetTop;
  71.     var current = element.offsetParent;
  72.     while (current !== null){
  73.       actualTop += current.offsetTop;
  74.       current = current.offsetParent;
  75.     }
  76.     return actualTop;
  77.   }
  78. }
  79. return my;
  80. })()

该部分并没有完善,效果还有区别,今天应该可以做完,做完继续更新。

解决了原来专题页面的几个问题,如:
1.poster海报与video大小不一致问题。
2.修正了一些边距的问题。

2. 下周工作计划

确保页面的问题都解决,并完成测试。

3.问题

多列多个元素布局的问题,目前我的布局:

这个是使用justify-content:flex-start,但是可以注意到的是,最左边和最右边的边距距离并不一致,而如果使用justify-content:space-between进行布局,又会导致最后一行元素也左右对称。
能不能达到下面原生的效果,如下图:

3.学习与成长

感觉在编程的时候,更重要的是思考好解决问题的逻辑和需要使用的设计模式与算法,一开始没有思考对正确的逻辑,结果导致在coding的时候不断的陷入困难,不得不推翻前面自己的假设,从新想设计思路。下次再在做类似问题的时候,思考好清晰的逻辑结构,确保逻辑不会出错,然后再进行从coding

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78754.html

相关文章

  • 无人值守时代,运维如何保障发布质量?

    摘要:摘要阿里巴巴千亿交易背后,如何尽量避免发布故障在面对实际运维过程中遇到的问题该如何解决阿里巴巴运维技术专家少荃,给我们带来了解决方案和思路。在阿里,这些屏幕包括监控发布单机器故障预警等。无人值守发布无人值守发布主要是把上述过程自动化智能化。 摘要: 阿里巴巴千亿交易背后,如何尽量避免发布故障?在面对实际运维过程中遇到的问题该如何解决?阿里巴巴运维技术专家少荃,给我们带来了解决方案和思路...

    LancerComet 评论0 收藏0
  • 无人值守时代,运维如何保障发布质量?

    摘要:导读阿里巴巴千亿交易背后,如何尽量避免发布故障在面对实际运维过程中遇到的问题该如何解决近日,在大会上,阿里巴巴运维技术专家少荃,给我们带来了解决方案和思路。在阿里,这些屏幕包括监控发布单机器故障预警等。 导读:阿里巴巴千亿交易背后,如何尽量避免发布故障?在面对实际运维过程中遇到的问题该如何解决?近日,在GOPS大会上,阿里巴巴运维技术专家少荃,给我们带来了解决方案和思路。 showIm...

    Yu_Huang 评论0 收藏0
  • Jstorm到Flink 在今日头条的迁移实践

    摘要:第二个问题就是说业务团队之间没有扩大管理,预算和审核是无头绪的。支持一些高优先级的比如说支持以及窗口等特性包括说。到现在为止,整体迁移完了,还剩下十个左右的作业没有迁移完。 作者:张光辉 本文将为大家展示字节跳动公司怎么把Storm从Jstorm迁移到Flink的整个过程以及后续的计划。你可以借此了解字节跳动公司引入Flink的背景以及Flink集群的构建过程。字节跳动公司是如何兼容以...

    luckyyulin 评论0 收藏0
  • 前端架构师亲述:前端工程师成长之路的 N 问 及 回答

    摘要:问题回答者黄轶,目前就职于公司担任前端架构师,曾就职于滴滴和百度,毕业于北京科技大学。最后附上链接问题我目前是一名后端工程师,工作快五年了。 showImg(https://segmentfault.com/img/bVbuaiP?w=1240&h=620); 问题回答者:黄轶,目前就职于 Zoom 公司担任前端架构师,曾就职于滴滴和百度,毕业于北京科技大学。 1. 前端开发 问题 大...

    crossoverJie 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<