目录

前言

一、scrollHeight是什么?

二、没了


前言

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

enter(el) {el.dataset.oldOverflow = el.style.overflowif (el.scrollHeight !== 0) {el.style.height = el.scrollHeight + 'px'el.style.paddingTop = el.dataset.oldPaddingTopel.style.paddingBottom = el.dataset.oldPaddingBottom} else {el.style.height = ''el.style.paddingTop = el.dataset.oldPaddingTopel.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赋值,获取真实的高度。

二、没了

。。。

el.scrollHeight属性的理解相关推荐

  1. [html] 说说你对HTML5中pattern属性的理解

    [html] 说说你对HTML5中pattern属性的理解 好像是判断input在输入时按下tab键跳转到下一个input的优先级 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚 ...

  2. [html] 说说你对属性data-的理解

    [html] 说说你对属性data-的理解 data- 属性是H5新增的自定义属性,也可以用来存储值.我个人用的不多,这个data- 属性倒是和vue中的v-bind 功能相似, 自定义属性,绑定数据 ...

  3. [html] 谈谈你对input元素中readonly和disabled属性的理解

    [html] 谈谈你对input元素中readonly和disabled属性的理解 相同点:都会使文本框变成只读,不可编辑.不同点:1.disabled属性在将input文本框变成只读不可编辑的同时, ...

  4. [vue] 说说你对选项el,template,render的理解

    [vue] 说说你对选项el,template,render的理解 el: 把当前实例挂载在元素上 template: 实例模版, 可以是.vue中的template, 也可以是template选项, ...

  5. [css] 说说你对css的will-change属性的理解,它有什么作用呢?

    [css] 说说你对css的will-change属性的理解,它有什么作用呢? 告诉浏览器,这个元素的某些属性可能会频繁变动触发回流,要求浏览器给予资源进行优化,一般浏览器会给这个元素单独生成一个图层 ...

  6. [css] 举例说说你对white-space属性的理解

    [css] 举例说说你对white-space属性的理解 值 说明 normal 默认.空白会被浏览器忽略. pre 空白会被浏览器保留.其行为方式类似 HTML 中的 <pre> 标签. ...

  7. BOM部分属性及理解

    BOM部分属性及理解 BOM称之为浏览器对象模型.里面主要是我们和浏览器进行交互的方法. 是由IE3.0和Netscape Navigator3.0(网景)提供的一种新的特性,主要是用来通过JS这门脚 ...

  8. html clear属性值,clear属性有哪些属性值 CSS clear属性的理解.

    CSS clear是什么属性... 语法: clear : none | left |right | both 参数: none : 允许两边都可以有浮动对象 both : 不允许有浮动对象 left ...

  9. Android入门: 对图片 ImageView的scaleType属性的理解

    关于ImageView的scaleType属性的理解 问题:图片在不同机型上的显示大小不同 1.android:scaleType="center" 保持原图的大小,显示在Imag ...

最新文章

  1. 连SEO优化师都难以收集的搜索引擎规则,在这里!
  2. python入门基础知识教程-Python基础知识入门,这三个原则是你要知道的,还有教程...
  3. GIS中的拓扑关系和ArcGIS中的拓扑
  4. (读书笔记).NET大局观-.NET框架类库概观
  5. Requests库基本使用
  6. 手游方舟怎么输入代码_明日方舟再次登顶失败,为了不发十连奖励,鹰角实力控分?...
  7. Python之数据分析(卷积运算、移动均线、布林带)
  8. (转)不要跟赌场说谎,它真的比你老婆还了解你
  9. 神舟t6ti-x5刷蓝天新版BIOS教程 可提升0.5G睿频 模具N85xHKx/HJx
  10. C++卡常数之内存优化
  11. 尺缩钟慢之动尺收缩——思想实验推导狭义相对论(六)
  12. 产品经理原型工具选择:墨刀和axure的区别?
  13. 查询学生的学号、课程号和成绩,并按成绩升序排序
  14. 谷粒商城 - 微服务分布式电商项目
  15. 如何检索、写作和顺利发表一篇SCI论文?
  16. 20172319 《程序设计与数据结构》第11周学习总结
  17. Zotero添加影响因子插件IF
  18. 【Arduino和高中通用技术】——十一、BF1K-3AA系列电阻式压力应变片、HX711压力传感器和另一种按键去抖动方法
  19. mediawiki 简易的使用教程
  20. scroll-top 设置微信小程序滚动条位置

热门文章

  1. 控制工程基础应掌握的重要知识点
  2. 2018.07.19 仿优酷网页小项目
  3. 诺基亚固件下载器,比NAVIFIRM还要好用!!!
  4. TCP面向连接中的“连接”究竟是什么,可靠与不可靠
  5. Windows系统常用工具,支持windows7 vista
  6. createjs之easeljs【游戏围住神经猫】
  7. unity 启动选择分辨率_Unity发布exe去窗口设置分辨率
  8. 直播平台源码中直播系统捕获音视频的步骤
  9. scanf() 与 scanf_s() 的区别
  10. angular5基础笔记