element-ui height:100%不生效解决方案

在使用Element-UI组件库时,遇到侧边栏无法通过设置height:100%填充全屏的难题。问题的关键在于单纯设置高度百分比无法实现预期效果。解决方案是通过使用固定定位(position: fixed)配合width:100%和height:100%,使侧边栏能够完整覆盖屏幕左侧。这种方法成功地让侧边栏铺满了整个屏幕的左侧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用element-ui组件时,想要侧边栏的高度占满屏幕的左侧边栏,单纯在样式中设置了height:100%,然而并不生效。

.el-menu {
    height: 100%;
    border: none;
    h3 {
      color: #fff;
      text-align: center;
      line-height: 48px;
    }
  }

解决方案:

当想要元素铺满整个屏幕的时候,采用绝对定位或者固定定位

定位+width:100%;height:100%

  .el-menu {
    position: fixed;
    height: 100%;
    border: none;
    h3 {
      color: #fff;
      text-align: center;
      line-height: 48px;
    }
  }

这样,左侧边栏就可以铺满整个左侧边的屏幕了。

 

控制按钮在视频上,可是由于设置了position:absolute,导致切换移动端时,按钮直接不见了,如以下代码;<template> <el-carousel class="box" ref="carouselRef"> <el-carousel-item v-for="(videoSrc,index) in videoList" :key="index"> <div class="contain"> <!--目的:按钮始终准确定位在视频区域的右下角,单靠.box无法固定,因为用的不是html的原生组件--> <video class="toy_video" autoplay loop muted playsinline @click=""> <!--playsinline允许网页内联播放--> <source :src="videoSrc" type="video/mp4" /> Your browser does not support the video tag. </video> </div> <!--buy按钮叠加在视频上--> <el-button class="buy" :style="{backgroundImage:`url(${buyImg})`}" ></el-button> </el-carousel-item> </el-carousel> </template> <style scoped lang="scss"> .box{ position: relative; /* 相对定位 */ border-radius: 25px; overflow: hidden; height: 100%; /* 用于调试布局高度 background: rgba(0,0,255,0.1);*/ margin-top: 0; line-height: 0; // 清除行高空隙 font-size: 0; // 防止文本撑开 } .contain{ position: relative; height: 100%; border-radius: 25px; } /* 设置.el-carousel 的每一层样式,用于清楚一些其自带的默认样式 */ ::v-deep .el-carousel { height: 100%; border-radius: 25px; margin: 0 !important; padding: 0 !important; } ::v-deep .el-carousel__container { height: 100%; border-radius: 25px; margin: 0 !important; padding: 0 !important; } ::v-deep .el-carousel__item { height: 100%; border-radius: 25px; margin: 0 !important; padding: 0 !important; line-height: 0; } /* 注意:必须确保整个布局链条上高度是明确传递下来的,否则<el-carousel class="box"> 的高度 不会受到 .left, .videos, .select 中 flex 样式的控制*/ .toy_video{ width: 100%; height: 100%; object-fit: contain; /* 视频覆盖满 */ z-index: 2; margin: 0; padding: 0; display: block; } .buy{ /* 直接写在css里不一定生效 background-image: url('@/assets/buy_new.png');*/ background-size: cover; /* 图片覆盖整个按钮 */ background-position: center; width: 198px; height: 96px; z-index: 6; /*确保按钮在视频上方*/ position: absolute; /* 绝对定位 */ right: 132px; bottom: 65px; /* 无效,因为绝对定位 (position: absolute) 的元素,不再受 margin 的正常流影响 margin-left: 6px; margin-bottom: 6px;*/ /* 用于调试布局高度 */ background: rgba(0,0,255,0.1); // background: rgba(0,0,0,0); // 清除按钮的默认底色:白色 border-radius: 30px; /*background-color: red; 临时测试 */ outline: none; /*去除焦点状态的轮廓线 */ border: none; /*去除按钮默认的边框 */ background-repeat: no-repeat; /* 防止重复 */ } </style>
最新发布
08-05
vue 将以下代码修改为按屏幕比例进行缩放时保持原比例且不出现滚动条<template> <div class="energy-platform"> <!-- 顶部标题 --> <div class="header"> <h1 class="company-name">XX公司</h1> <h2 class="platform-name">XX云综合管理平台</h2> <div class="gradient-bar"></div> <!-- 渐变导航条 --> </div> <!-- 应用菜单 --> <div class="app-container"> <el-row :gutter="20"> <el-col v-for="(app, index) in apps" :key="index" :xs="24" :sm="12" :md="6" :lg="6"> <div target="_blank" class="app-card" @mouseenter="hoverIndex = index" @mouseleave="hoverIndex = -1" @click="goIndex" :style="{ backgroundColor: hoverIndex === index ? '#c5edff' : '#fff' }"> <div class="app-icon"> <img :src="require(`../assets/image/${app.icon}.png`)" :alt="app.name" class="img-item2"> </div> <div class="app-title">{{ app.name }}</div> </div> </el-col> </el-row> </div> </div> </template> <script> export default { name: "Home", data() { return { hoverIndex: -1, apps: [{ name: '智慧应用', icon: 'el-icon-cpu', }, { name: '运行监测', icon: 'el-icon-monitor', }, { name: 'AI仿真', icon: 'el-icon-data-analysis', }, { name: '数据中台', icon: 'el-icon-data-board', } ], redirect: undefined } }, mounted() { console.log('设备像素比:', window.devicePixelRatio); }, methods: { goIndex() { this.$router.replace({ path: "Index" }) } } } </script> <style scoped> .energy-platform { box-sizing: border-box; padding: 120px 260px; width: 100%; height: 100%; /* min-height: 100vh; */ background-image: url('../assets/image/bg.png'); /* 背景图片设置 */ background-size: 100% 100%; background-position: center; background-repeat: no-repeat; filter: brightness(1); } .header { text-align: left; font-style: italic; color: #fff; font-size: 40px; } .company-name { margin-bottom: 30px; } .company-name, .platform-name { text-align: left; font-weight: bold; margin-bottom: 20px; color: #fff; } .gradient-bar { height: 4px; background: linear-gradient(to right, #29b0dd, #2aaed9, #ffffff); width: 260px; margin-bottom: 90px; } .app-container { margin: 0 auto; } .app-card { height: 260px; width: 80%; background: #fff; border-radius: 8px; display: flex; flex-direction: column; justify-content: center; align-items: center; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); margin-bottom: 20px; } .img-item2 { width: 100%; } .app-card:hover { transform: translateY(-5px); box-shadow: 0 6px 18px 0 rgba(0, 0, 0, 0.15); } .app-icon { font-size: 50px; color: #333; margin-bottom: 40px; transition: all 0.3s ease; } .app-card:hover .app-icon { color: #fff; } .app-title { font-size: 22px; font-weight: bold; color: #333; transition: all 0.3s ease; } .app-card:hover .app-title { color: #000; } /* 响应式调整 */ @media (max-width: 768px) { .company-name { font-size: 40px; } .platform-name { font-size: 20px; } .app-card { height: 120px; width: 100%; } .app-icon { font-size: 30px; margin-bottom: 10px; } .app-title { font-size: 16px; } .gradient-bar { margin-bottom: 40px; } } /* 响应式调整 */ @media (max-width: 1366px) { .energy-platform { padding: 150px 100px; } .app-card { width: 90%; } } /* 响应式调整 */ @media (max-width: 1024px) { .energy-platform { padding: 150px 200px; } .app-card { width: 100%; } } /* 响应式调整 */ @media (max-height: 768px) { .energy-platform { padding: 50px 120px; } .app-card { width: 100%; } } </style>
07-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值