Anted a-tabs内容高度设置100%

<template>
  <div style="height: 100%;">
    <div class="flex-wrap">
      <div class="card-container flex-item flex1">
        <a-tabs v-model:activeKey="activeKey" type="card" class="tabs">
          <a-tab-pane v-for="item in tabList" :key="item.value" :tab="item.title" force-render>{{
            item.value }}</a-tab-pane>
        </a-tabs>
      </div>

      <div class="card-container flex-item">
        <a-tabs v-model:activeKey="infoKey" type="card" class="tabs tabs-r">
          <a-tab-pane v-for="item in infoList" :key="item.value" :tab="item.title" force-render>{{
            item.value }}</a-tab-pane>
        </a-tabs>
      </div>
    </div>
  </div>
</template>

<script setup>
import { ref, reactive } from "vue";

const activeKey = ref("value1");
const tabList = reactive([
  { title: "活动", value: "value1" },
  { title: "详细资料", value: "value2" }
]);

const infoKey = ref("value1");
const infoList = reactive([
  { title: "重要信息", value: "value1" }
]);
</script>

<style lang="less" scoped>
.flex-wrap {
  display: flex;
  height: calc(100% - 142px); // 减去页面上方内容高度

  .flex1 {
    flex: 1
  }

  .flex-item {
    padding-top: 15px;
    background-color: #f5f6f9;

    .tabs {
      border: 1px solid #e6e6e6;
      height: 100%;
    }

    .tabs-r {
      width: 300px;
      height: 100%;
      margin-left: 15px;
    }
  }
}
</style>

页面预览:

在Vue-element-ui中使用el-tabs组件时,有时会遇到el-tab-pane未能实现100%自适应高度,导致内部放置的div内容被遮挡的问题。要解决这个问题,可以尝试以下几种方法: 1. 使用CSS Flex布局: 在el-tabs容器上设置display: flex,并在el-tab-pane上设置flex: 1。 ```vue <template> <el-tabs class="full-height-tabs"> <el-tab-pane> <!-- 你的内容 --> </el-tab-pane> <!-- 其他tab-pane --> </el-tabs> </template> <style> .full-height-tabs { display: flex; flex-direction: column; height: 100%; } .full-height-tabs .el-tab-pane { flex: 1; overflow: auto; } </style> ``` 2. 使用v-if控制tab的显示: 通过v-if指令来确保只有在激活的tab才渲染内容。 ```vue <el-tabs v-model="activeTab"> <el-tab-pane name="tab1" v-if="activeTab === 'tab1'"> <!-- tab1的内容 --> </el-tab-pane> <el-tab-pane name="tab2" v-if="activeTab === 'tab2'"> <!-- tab2的内容 --> </el-tab-pane> <!-- 其他tab-pane --> </el-tabs> ``` 3. 使用计算属性动态设置高度: 在计算属性中计算容器高度,并将其应用到el-tabs组件上。 ```vue <template> <el-tabs :style="{ height: tabHeight + 'px' }"> <el-tab-pane> <!-- 你的内容 --> </el-tab-pane> <!-- 其他tab-pane --> </el-tabs> </template> <script> export default { data() { return { tabHeight: 0 } }, mounted() { this.updateTabHeight(); window.addEventListener('resize', this.updateTabHeight); }, beforeDestroy() { window.removeEventListener('resize', this.updateTabHeight); }, methods: { updateTabHeight() { this.tabHeight = window.innerHeight - /* 其他元素高度 */; } } } </script> ``` 4. 使用CSS Calc函数: 直接在CSS中使用calc函数计算高度。 ```css .el-tabs { height: calc(100vh - /* 其他元素高度 */); } .el-tabs .el-tab-pane { height: 100%; overflow: auto; } ``` 这些方法中,第一种使用Flex布局的方法通常是最简单和最有效的。它可以确保el-tab-pane始终占据el-tabs的剩余空间,同时允许内部内容在需要时滚动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值