element - ui组件使用card,内容无法完全填充

element - ui组件使用card,内容无法完全填充!
页面

img


代码

img


组件代码:

img

通过控制台看到实际渲染会有一层el-card__body

img

el-card添加body-style="height: 100%"

img

echart 图 用x 轴可缩放的
如有帮助给个采纳谢谢

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这篇文章:element-card用法总结
  • 除此之外, 这篇博客: 如何使用elementUi中的card卡片以及小数点转换百分比四舍五入中的 项目场景: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    后端给你的数据中是小数点、数组、对象,如何渲染在页面上。
    这是效果图,上面是自己用h5渲染的,下面用到element的card

    上代码

    <template>
    <div>
      <el-row :gutter="20" style="margin-left: 10px">
        <div style="height: 50px">
        <ul class="rightTip">
          <li class="leftTip">项目进度完成百分比:{{ (workConditon.finishPercentage*100).toFixed(2)+'%' }}</li>
          <li class="leftTip">任务总数:{{ workConditon.workTotal }}</li>
          <li class="leftTip">已完成:{{ workConditon.finishTotal }}</li>
          <li class="leftTip">未完成:{{ workConditon.notFinishTotal }}</li>
        </ul>
        </div>
        <el-col v-for="item in workConditonList" :key="item" :span="8">
          <el-card shadow="hover"
                   class="box-card"
                   >
            <div slot="header" >
              <span style="font-size: 18px;color: white">{{ item.stageName}}</span>
            </div>
            <div class="text item">
              <p>{{'工作项共计:' + item.workTotal}}</p>
              <p>{{'完成工作:' + item.finishTotal}}</p>
              <p>{{'未完成:'  + item.notFinishTotal }}</p>
              <p>{{'开始时间:' + item.finishTotal}}</p>
              <p>{{'结束时间:' + item.notFinishTotal}}</p>
            </div>
          </el-card>
        </el-col>
      </el-row>
    </div>
    </template>
    

    vue部分

    <script>
    import {getWorkList} from "@/api/project/workSituation";
    
    export default {
      name: "WorkSituation",
      props: {
        projectId: {
          type: String,
          default: '0'
        }
      },
      data() {
        return {
          workConditonList: [],
          workConditon:{}
        }
      },
      created() {
        console.log(this.test, 'created')
      },
      mounted() {
        getWorkList(this.projectId).then(res=>{
          this.workConditon = res.data.data.workConditon
          console.log(this.workConditon)
          this.workConditonList = res.data.data.workConditonList
        })
      },
      methods: {
      }
    }
    </script>
    

    还有一点css

    <style scoped>
    .text {
      font-size: 14px;
      color: white;
    }
      .box-card{
        background-color: rgb(27, 201, 142);
        height: 250px;
      }
    .rightTip{
      text-align: center;
      list-style: none;
      margin-left: 10px;
      font-size: 18px;
      font-weight: bolder;
      font-family: '微软雅黑';
      margin-bottom: 20px;
    }
    .leftTip{
      float: left;
      margin-left: 50px;
      margin-bottom: 30px;
    }
    </style>
    
  • 以下回答来自chatgpt:

    问题原因可能是由于默认的样式设置,导致card组件的内容无法完全填充。可以通过自定义样式来解决这个问题。下面是解决方案的具体步骤:

    1. 在组件的<style>标签中添加以下代码,将卡片内边距设置为0:
    .el-card {
      padding: 0;
    }
    
    1. <template>标签中添加一个新的div元素来包裹card组件的内容,并添加自定义类名(例如card-content):
    <template>
      <el-card>
        <div class="card-content">
          <!-- card内容 -->
        </div>
      </el-card>
    </template>
    
    1. 给新添加的div元素添加以下样式,用于填充整个card组件的内容:
    .card-content {
      height: 100%;
      padding: 20px; /* 可根据实际情况调整 */
    }
    

    最终代码如下:

    <template>
      <el-card>
        <div class="card-content">
          <!-- card内容 -->
        </div>
      </el-card>
    </template>
    
    <script>
    export default {
      // 组件逻辑
    }
    </script>
    
    <style>
    .el-card {
      padding: 0;
    }
    
    .card-content {
      height: 100%;
      padding: 20px; /* 可根据实际情况调整 */
    }
    </style>
    

    通过这样的方式,您应该能够解决element-ui card组件内容无法完全填充的问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^