el.scrollHeight属性的理解

前言

        在看iview的collaspse-transition组件实现时,发现有el.scrollHeight这个属性:

enter(el) {
    el.dataset.oldOverflow = el.style.overflow
    if (el.scrollHeight !== 0) {
      el.style.height = el.scrollHeight + 'px'
      el.style.paddingTop = el.dataset.oldPaddingTop
      el.style.paddingBottom = el.dataset.oldPaddingBottom
    } else {
      el.style.height = ''
      el.style.paddingTop = el.dataset.oldPaddingTop
      el.style.paddingBottom = el.dataset.oldPaddingBottom
    }

    el.style.overflow = 'hidden'
  },

 上面代码主要通过设置overflow属性与style.height属性来控制元素的展示,其中具体思路我们不在本文分析,主要聊一下el.scrollHeight属性


提示:以下是本篇文章正文内容,下面案例可供参考

一、scrollHeight是什么?

scrollHeight指整个元素的高度,与元素本身有关,是元素本身的高度与你所设置的style属性相加的结果,但与overflow:hidden等属性无关,与是否在可视范围内无关。比如:

<body>
  <div id="ht" style="background-color: red;height:10px;">123</div>
  <script>
      let div = document.querySelector("#ht")
      console.log(div.scrollHeight, div.style.height)
  </script>
</body>

我们给元素的height设置为10px,此时打印的值,scrollHeight为元素真实的高度22,style.height为我们设置的10px。

再看添加了overflow与padding的情况 :

  <body>
    <div id="ht" style="background-color: red;height:10px;overflow:hidden;padding-top:10px">123</div>
    <script>
        let div = document.querySelector("#ht")
        console.log(div.scrollHeight, div.style.height)
    </script>
  </body>

此时元素的高度为本身的22 + padding-top 撑起来的高度,共32,scrollHeight的值能正常打印。但因为我们设置了overflow:hidden,因此超出了style.height + padding-top = 20 高度的部分是看不到的,可以利用这一点来对元素进行显隐的展示,再进一步可以添加css3相关属性进行动态的高度变化展示,如前言中transition 组件实现的动态效果一样。想要恢复元素原本的高度时,即可利用scrollHeight重新给height赋值,获取真实的高度。

二、没了

。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值