当前位置:   article > 正文

Vue-使用element-resize-detector监听元素大小变化

resize-detector

1、应用场景

        底部固定按钮栏使用 position: fixed 固定定位,宽度等于右侧内容栏的宽度,当我们左侧菜单栏收起的时候,其宽度也能够自适应变化。也就是说底部栏的宽度需要监听其父元素右侧内容的宽度从而实现自适应变化。

2、 解决方法:使用 element-resize-detector

(1)下载

npm i element-resize-detector --save

(2)导入

const elementResizeDetectorMaker = require('element-resize-detector')

(3)使用

  1. // 监听右侧page元素宽度变化,更新底部固定按钮栏宽度
  2. let erd = elementResizeDetectorMaker();
  3. erd.listenTo(document.getElementById('id元素'), (ele) => {
  4. console.log(ele.clientWidth);
  5. })

3、源码

  1. <template>
  2. <div class="page" ref="page">
  3. <div class="page-footer" :style="{'width': footerWidth }">
  4. <el-button type="primary" @click="handleSubmit">保 存</el-button>
  5. </div>
  6. </div>
  7. </template>
  8. <script>
  9. const elementResizeDetectorMaker = require('element-resize-detector')
  10. export default {
  11. name: "home",
  12. data() {
  13. return {
  14. footerWidth: "500px" // 底部固定按钮栏宽度
  15. }
  16. },
  17. mounted() {
  18. // 监听右侧page元素宽度变化,更新底部固定按钮栏宽度
  19. let erd = elementResizeDetectorMaker();
  20. erd.listenTo(this.$refs.page, (ele) => {
  21. this.footerWidth = ele.clientWidth - 32 + "px";
  22. })
  23. }
  24. }
  25. </script>
  26. <style lang="less" scoped>
  27. .page-footer {
  28. height: 52px;
  29. margin: 0 16px;
  30. border-top: 1px solid #e0e0e0;
  31. display: flex;
  32. align-items: center;
  33. position: fixed;
  34. bottom: 0;
  35. z-index: 99;
  36. background-color: rgba(255, 255, 255, 0.9);
  37. .el-button {
  38. height: 32px;
  39. width: 96px;
  40. line-height: 32px;
  41. padding: 0;
  42. border-radius: 2px;
  43. }
  44. }
  45. </style>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/223194?site
推荐阅读
相关标签
  

闽ICP备14008679号