zoukankan      html  css  js  c++  java
  • cloud_music项目笔记

    cloud_music项目中发现的问题与解决方法

    一、滚动条问题

    • 这里使用到了perfect-scrollbar的插件

    • 然而初始化遇到了某些问题

      • 滚动条无法正常显示
      • 正常显示之后滚动条拖动却停留在顶部
    • 解决方法

      • 官方文档

      • 应满足以下要求:

        • 容器必须具有position样式。
        • 该容器必须是普通容器元素。

        软件包中的CSS满足了这些要求,但是当您要更改CSS文件时请切记。

        • 容器必须具有overflow: hiddenCSS样式。
        • 滚动条的位置必须为absolute
        • 滚动条x必须具有bottomtop,而滚动条y必须具有 rightleft
      • 但是发现仅仅这样不够

        • 会发现可以显示但是无法滚动的问题(页面可以滚动, 但是滚动条没有下去)
          • 解决方法 (如下面css样式)
            • 这里面把scrollbar的大容器跟小容器(即显示的滚动条都配置了position)
    <!-- 先要搞清楚初始化perfect-scrollbar的结构 -->
    <div id="myScroll" ref="myScrollRef">
        <div class="content" ref="containerRef">
          <slot></slot>
        </div>
    </div>
    ...
    
    this.myScroll = new PerfectScrollbar(this.$refs.myScrollRef, {
    	wheelSpeed: 1,
    	wheelPropagation: true,
    	minScrollbarLength: 20
    })
    // 这里面使用的是vue框架
    
    #myScroll {
      > .ps__rail-y {
        width: 10px;
        position: absolute;
        right: 0;
        left: calc(100%);
        transform: translateX(-100%);
        > .ps__thumb-y {
          position: absolute;
          width: 10px;
          background-color: #e1e1e2;
          border-radius: 10px;
          &:hover {
            background-color: #cfcfd1;
          }
        }
      }
    }
    

    二、Debounce问题

    2.1 debounce函数

    function debounce (fn, delay = 300) {
      let timeout = null
      return function (...args) {
        console.log(1)
        if (timeout) clearTimeout(timeout)
        timeout = setTimeout(() => {
          console.log(args)
          fn.apply(this, args)
        }, delay)
      }
    }
    

    2.2 使用方式

    • 使用debounce的时候高频时候的是return回来的函数, 而不是debounce的函数

    三、perfectscrollbar问题

    3.1 获取ref使用异步

    • 使用nextTick来获取ref

    3.2 使用perfectscroll来回到顶部

    • this.$refs.myScrollRef.scrollTop = top
    • 其中myScrollRef是Dom对象, 修改其scrollTop即可修改滚动的位置

    3.3 scroll的update没有效果

    • 试一试调用两次

    四、Vue使用中的一些小问题

    4.1 父子组件传递信息

    • img动态生成
      • 在父组件中如果将要传递的信息初始化是为null, 需要等待请求才能获得,则会报错, 所以设置为{}或者[]

    4.2 项目执行顺序问题

    • 比如A组件的子组件是B
    • B在created或者mounted的时候需要A请求回来的数据传递给子组件B
    • 但是B即使在setTimeout的异步操作下都是无法获取
      • 解决方法:
        • 在A组件请求回来的时候用ref调用B组件的方法, 而不是在created中调用(确保已经返回获得数据)
        • 然后再加上setTimeout

    4.3 watch检测vuex的改变

    • 使用计算变量computed中保存$store中的值
    • 然后使用watch对该值进行检测

    五、字符串与数组处理问题

    5.1 回车问题

    • 由于葱服务器上面获取的内容是带有回车键如"学习.努力.上进.积极.自律.end 优秀.↵huangwenxin! fighting!↵(欢迎投稿)"
    • 尝试: 把替换成<br/>
      • 发现无法成功替换
      • 原因: 获取字符串那刻会自动解析成
    • 解决方法: str = str.replace(/ /g, '<br/>')

    参考

    5.2 提取数组

    • slice()

      • 输入两个参数的时候, 是提取到最后面那个下标代表的元素的前一个元素

      • ex:

      • const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
        
        console.log(animals.slice(2));
        // expected output: Array ["camel", "duck", "elephant"]
        
        console.log(animals.slice(2, 4));
        // expected output: Array ["camel", "duck"]
        
        console.log(animals.slice(1, 5));
        // expected output: Array ["bison", "camel", "duck", "elephant"]
        

    六、样式问题

    6.1 超出两行省略号显示

    {
        overflow:hidden;
        display:-webkit-box; //将对象作为弹性伸缩盒子模型显示;
        text-overflow:ellipsis;//溢出部分用省略号代替
        -webkit-line-clamp:2; //设置文本显示两行
        -webkit-box-orient:vertical;  //从上到下排列子元素;
        white-space:normal;
    }
    

    6.2 把浮动高度算进容器

    • 在他的父容器添加overflow: hidden;

    6.3 文字影响float排列问题

    • 把文字的height设置为0
    • 这时候文字会被隐藏, 在其父容器加上padding-bottom即可看见

    6.4 让图片自动宽高占父容器宽100%且相等

    .image-header{
    position:relative
    width:100%
    height:0
    padding-top:100%
    
    }
    .image-header img{
    position:absolute
    top:0
    left:0
    width:100%
    height:100%
    
    }
    

    6.5 样式中设置取消点击事件

    • pointer-events: none;
    • 可以作用在使用伪类元素作为**|或者/**分割符分开的时候为其屏蔽点击事件

    6.6 height继承问题

    • 父容器height设置为auto(即不设置)或者设置成min-height的时候, 高度不继承
  • 相关阅读:
    Ubuntu16.04更新源后apt-get update报错的解决方法
    安装Ubuntu16.04 64bit系统时出错的解决方案
    采用Python-Qt5制作置顶透明桌面提醒词/座右铭/便签
    如何手动解析Keras等框架保存的HDF5格式的权重文件
    读取yml配置文件中的值
    添加20位随机数,不重复,可以用来作为发票申请流水等功能
    java 从json串中取出某个字段的值
    Spring事务的两种方式
    (附表设计)超级全面的权限系统设计方案
    nfs 测试
  • 原文地址:https://www.cnblogs.com/lezaizhu/p/13836155.html
Copyright © 2011-2022 走看看