• getBoundingClientRect使用场景(table固定表头)


    • getBoundingClientRect()用于获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置,是DOM元素到浏览器可视范围的距离(不包含文档scroll的部分)。
    • 该函数返回一个Object对象,该对象有6个属性:top,lef,right,bottom,width,height; 

    1. "box">
    2. var object=document.getElementById('box');
    3. rectObject = object.getBoundingClientRect();
    4. rectObject.top:元素上边到视窗上边的距离;
    5. rectObject.right:元素右边到视窗左边的距离;
    6. rectObject.bottom:元素下边到视窗上边的距离;
    7. rectObject.left:元素左边到视窗左边的距离;
    8. rectObject.width:是元素自身的宽 (包括滚动条)
    9. rectObject.height是元素自身的高 (包括滚动条)

    使用场景:在使用框架进行开发是,经常会遇到需要给table固定表头的需求,这时候需要给table设置一个固定的高度,可以使用添加一个元素通过getBoundingClientRect计算top的距离,然后获取浏览器可视范围高度,进行计算

    下面以VUE为例,分装通用组件 

    1. <script>
    2. /*
    3. * @doc 自动获取元素剩下的高度, 在列表中科院很好的使用
    4. * @props { padding: Number } 底下的高度
    5. * */
    6. export default {
    7. name: 'AutofixHeight',
    8. props: {
    9. padding: {
    10. type: Number,
    11. default: 78
    12. }
    13. },
    14. data() {
    15. return {
    16. warpStyle: {
    17. height: '200px'
    18. },
    19. height: 0
    20. }
    21. },
    22. mounted() {
    23. this.initHeight()
    24. window.addEventListener('resize', this.initHeight)
    25. },
    26. methods: {
    27. initHeight() {
    28. // 初始化获取组件当前所在的位置
    29. this.$nextTick(() => {
    30. setTimeout(() => {
    31. //表格高度 = 浏览器可视范围高度 - 距离顶部高度 - 其它高度
    32. const hdiff = document.body.clientHeight - this.$refs.warp_body.getBoundingClientRect().top - this.padding
    33. this.height = hdiff
    34. this.warpStyle = {
    35. height: hdiff + 'px'
    36. }
    37. }, 200)
    38. })
    39. }
    40. },
    41. destroyed() {
    42. window.removeEventListener('resize', this.initHeight)
    43. }
    44. }
    45. script>
    46. <style scoped>
    47. .warp-body {
    48. width: 100%;
    49. }
    50. style>
    1. //使用
    2. <AutofixHeight :padding="100" v-slot="{ height }">
    3. <Table
    4. :height="height"
    5. :columns="columns"
    6. :data="data1"
    7. />
    8. AutofixHeight>

  • 相关阅读:
    Ai4science学习、教育和更多
    约瑟夫环 数学解法
    带你深入了解Redis 高级特性
    day01-Tomcat框架分析
    Spring注解中的@Component @Configuration @Bean简介说明
    野火A7学习第七次(分频器相关)
    篇8:Ubuntu18.04安装 CLion
    2068. 检查两个字符串是否几乎相等
    iOS ActivityViewController使用
    2020年居家实习日志
  • 原文地址:https://blog.csdn.net/Mr_linjw/article/details/133904481