首页 > 其他分享 >vue中使两个不同高度的div(内容长度不一)高度相同

vue中使两个不同高度的div(内容长度不一)高度相同

时间:2023-04-18 11:37:19浏览次数:46  
标签:vue color 高度 label div li type red

设置高度height,记得给左右侧div一个最小高度min-height,保证没有内容的时候有一定的高度,内容撑起来的时候再自动适应

<el-col :xs="12" :sm="6" :md="2" class="grid-cell">
            <div class="grid-content bg-purple" :style="{ height: divHeight }"
              >XXXXX</div
            >
          </el-col>
          <el-col :xs="12" :sm="6" :md="22" class="grid-cell">
            <div class="series-basic">
              <div class="series-tag" ref="newData">
                <el-tag
                  v-for="(item, index) in items"
                  :key="index"
                  :type="item.type"
                >
                  {{ item.label }}
                </el-tag>
              </div>
            </div>
          </el-col>

items: [
          { type: '', label: '标签一', color: 'red' },
          { type: 'success', label: '标签二', color: 'red' },
          { type: 'info', label: '标签三', color: 'red' },
          {
            type: 'danger',
            label:
              '这里是很长的自定义名字我也不知道有多长有没有限制反正就是很长的样子',
            color: 'red'
          },
          {
            type: 'danger',
            label: '这是一个不太正常的标题',
            color: 'red'
          },
          {
            type: 'danger',
            label: '这是一个不太正常的标题',
            color: 'red'
          },
          {
            type: 'warning',
            label:
              '这里是很长的自定义名字我也不知道有多长有没有限制反正就是很长的样子',
            color: 'red'
          }
        ],
        divHeight: '0'

  

mounted() {
      setTimeout(() => {
        this.handleLiHeight();
      }, 500);
    },

methods: {
      // 修改左侧高度与右侧高度一致
      handleLiHeight() {
        const newDataLi = this.$refs.newData.clientHeight;
        this.divHeight = newDataLi + 'px';
      },
}

  参考连接:

https://www.freesion.com/article/53501352267/

https://ipkd.cn/webs_3046.html

链接一内容:

VUE中如何使两个不同UL对应的LI(内容长度不一)高度相同

   

不同ul中li的内容长度不一,在不固定高度的情况下,要使得他们对应的li高度一致,如下(旧值和新值分别是两个不同ul)
在这里插入图片描述

首先在相应元素分别添加ref,

<div  ref='oldData'>
	<ul>
		<li></li>
	</ul>
</div>
<div  ref='newData'>
	<ul>
		<li></li>
	</ul>
</div>

在methods中写处理函数:

 handleLiHeight () {
      const oldLiHeightArr = [] 
      const newLiHeightArr = [] 
      const oldDataLi = this.$refs.oldData.getElementsByTagName('li')  
      const newDataLi = this.$refs.newData.getElementsByTagName('li')
      let maxLength 

      Array.prototype.slice.call(oldDataLi).forEach(li => {
        // 获取每个li的高度,并追加到数组中
        oldLiHeightArr.push(li.clientHeight)
      })
      Array.prototype.slice.call(newDataLi).forEach(li => {
        newLiHeightArr.push(li.clientHeight)
      })
      for (let i = 0; i < oldLiHeightArr.length; i++) {
        for (let j = 0; j < newLiHeightArr.length; j++) {
          if (i === j) {
            var maxHeight = oldLiHeightArr[i]> newLiHeightArr[j] ? oldLiHeightArr[i] : newLiHeightArr[j]

            oldDataLi[i].style.height = maxHeight + 'px'
            newDataLi[i].style.height = maxHeight + 'px'
          }
        }
      }
    }

 

最后调用函数,需setTimeout延迟执行,否则dom渲染未完成,会获取不到元素

mounted () {
    setTimeout(() => {
      this.handleLiHeight()
    }, 500)
  }

链接二内容:

vue项目如何动态设置元素高度     

vue项目如何利用:style动态设置元素高度,下面web建站小编给大家详细介绍一下实现代码!

1、template代码:

复制代码<div :style="{width: divWidth, height: divHeight}"></div>

2、data数据:

复制代码data() {
  return {
    divHeight:0,
    divWidth:0
  }
},

3、created方法:

复制代码created(){
  this.divWidth = document.body.clientWidth + "px";
  this.divHeight = document.body.clientHeight - 200 + "px";
},
 

标签:vue,color,高度,label,div,li,type,red
From: https://www.cnblogs.com/Ao-min/p/17328961.html

相关文章

  • Vue性能优化
    (目录)Vue性能优化的必要性:Vue框架通过双向数据绑定和虚拟DOM技术,帮我们处理了前端开发中最脏最累的DOM操作部分,其本身的性能已经非常强大了,但是在一个Vue项目中还是有一定的优化空间的,性能优化可以使整个网站的访问速度更快,运行更加流程,资源占用消耗更少,降低后续运营成本,所以Vu......
  • Vue3 回顾vue2的响应式原理
    视频vue2.x的响应式实现原理:对象类型:通过Object.defineProperty()对属性的读取、修改进行拦截(数据劫持)。数组类型:通过重写更新数组的一系列方法来实现拦截。(对数组的变更方法进行了包裹)。Object.defineProperty(data,'count',{get(){},set(){}})......
  • vue 课堂笔记
    1、----数组合并----说明:定义两个数组arr1和arr2,然后把这两个合并放入arr3中;constarr1=[1,2,3,4,5]    constarr2=[6,7,8,9] //合并数组   constarr3=[...arr1,...arr2]//转字符串以逗号分割   constarr4=arr3.join(',')   ......
  • div背景图的动态高度实现
    <divstyle="width:20%;border:2pxsolidblack;padding-bottom:8.43%;background:url('../assets/1bg.png')no-repeat;background-size:cover"></div>既然是动态,那么width就是当前盒子的百分比,高度通过padding值了撑高。举个例子,若是200x100的图片,那么宽高比就是2:......
  • Vue2
    Vue的指令:用在dom元素的属性上。​{{}}---差值表达式​v-text:文本显示​v-html:解析html文本​v-on:绑定事件@​v-bind:绑定dom中的属性:​v-show---v-if:隐藏和显示dom元素​v-model:设置和获取表单元素的值---双向绑定​......
  • vue往组件中传值,值在组件内如何实现修改
    Vuewarn]:Avoidmutatingapropdirectlysincethevaluewillbeoverwrittenwhenevertheparentcomponentre-renders.Instead,useadataorcomputedpropertybasedontheprop'svalue.Propbeingmutated:"type"这是Vue的一个警告提示,意思是应该避免直......
  • wangeditor5 vue2 安装后运行报错 Error in ./node_modules/@wangeditor/editor/d
    问题解决方法:原因就是引入的链接不对,使用cnpm、npm、pnpm、yarn安装插件的时候,路径都是不一样的,所以要对应着改路径就可以了链接:https://github.com/wangeditor-team/wangEditor/issues/4041......
  • vue中的插槽
    插槽用大白话讲就是:在子组件中用slot标签占个位置,然后在父组件中,子组件标签里嵌套一个标签,然后执行的时候用嵌套的标签替代slot子组件:组件MySon定义了一个默认插槽,用slot标签表示。当父组件使用MySon时,可以在其标签内放置任意内容,该内容将会替换掉slot标签。1<template>2......
  • Vue基础语法
    模板语法Vue.js使用了基于HTML的模板语法,允许开发者声明式地将DOM绑定至底层Vue实例的数据。所有Vue.js的模板都是合法的HTML,所以能被遵循规范的浏览器和HTML解析器解析。vue将模板编译成虚拟dom,结合响应系统,Vue能够智能地计算出最少需要重新渲染多少组件,并把DOM......
  • Codeforces Round 625 (Div. 1, based on Technocup 2020 Final Round) A. Journey Pl
    https://codeforces.com/contest/1320/problem/AA.JourneyPlanning题目大意:给定一组数,问我们ai-aj==i-j的时候就可以把ai的值加起来,问我们可以凑到的最大总值是多少?input6107191015output26input1400000output400000input7892611122914out......