首页 > 其他分享 >v-loading 对滚动轴部分遮盖不全

v-loading 对滚动轴部分遮盖不全

时间:2023-11-30 17:13:59浏览次数:43  
标签:遮罩 loading 盒子 auto content 滚动 遮盖

问题场景

给有滚动轴的盒子添加了 v-loading 遮罩层,但发现:当盒子内容滚动到底部,刷新页面时,遮罩层无法覆盖盒子底部的区域。如下图所示:

image

模板代码
    <div class="content" v-loading="defLoading">
	<el-form class="form">
	    <!-- 此处代码省略 -->
	</el-form>
    </div>
scss scoped 样式代码
.content {
  padding: 15px;
  height: calc(75vh - 120px);
  overflow: auto;

  .form {
    max-height: calc(100vh - 300px);
    overflow: auto;
  }
}

分析

遮罩层的起点位置是滚动内容最顶部,高度是 content 盒子的高度。当滚动轴滚动到盒子底部时,就会出现一段未被遮罩的区域。如下图所示:

image

尝试

  • 去掉 content 盒子的 overflow: auto 样式,刷新时遮罩不全的问题解决了,但是滚动轴也没了,无法显示表单底部内容。
  • content 盒子添加样式 display: table,也会导致滚动轴消失。

解决

方案一:给 content 盒子用 <div v-loading="defLoading"></div> 包裹起来。就能解决遮罩不全的问题,也能保留滚动轴。

    <div v-loading="defLoading">
        <div class="content" v-loading="defLoading">
	    <el-form class="form">
	        <!-- 此处代码省略 -->
	    </el-form>
        </div>
    </div>

方案二(推荐):给 v-loading 添加 .body

    <div class="content" v-loading.body="defLoading">
	<el-form class="form">
	    <!-- 此处代码省略 -->
	</el-form>
    </div>

参考链接

  1. elementUI的加载遮罩v-loading有滚动条时不能全遮住的问题
  2. v-loading在可变高度元素上使用(超出父级元素时,loading遮罩未完全覆盖)

标签:遮罩,loading,盒子,auto,content,滚动,遮盖
From: https://www.cnblogs.com/shayloyuki/p/17867787.html

相关文章

  • linux启动mysql数据库,报错mysql: error while loading shared libraries: libtinfo.so
    如下 原因: 解决方案:1、在/usr/lib64目录里面找一个差不多名称版本的文件进行链接#软连接出一个新的文件sudoln-s/usr/lib64/libtinfo.so.6.1/usr/lib64/libtinfo.so.5若本服务器没有相近版本的文件2、从其他服务器下载一个libtinfo.so.5拷贝进去即可,或者下载相近版本......
  • 自定义滚动条样式
    在要添加滚动条的标签样式中添加,注意lang="less“1::-webkit-scrollbar{2width:12px;3background-color:#f1f1f1;4}5/*定义滑块内阴影+圆角*/6::-webkit-scrollbar-thumb{7background-color:#cac8c8;8border:2pxsolid#f1f1f......
  • JS 判断是否有滚动条和滚动条滚到底部
    判断是否有滚动条constscrollDom=document.getElementById('滚动元素id')if(!scrollDom)returnif(scrollDom.clientHeight===scrollDom.scrollHeight){//没有滚动条}判断滚动条滚到底部constscrollDom=document.getElementById('滚动元素id')if(!scr......
  • vue指令封装(按钮权限、loading加载、slideIn窗口进入动画)
    vue指令vue本身具有一些指令,但是有些指令是vue作者自己写的,有些是第三方插件写的。v-ifv-if指令是用来控制元素是否显示的,如果值为true,则显示,如果值为false,则隐藏。<divid="app"><pv-if="isShow">我是显示的内容</p><pv-else>我是隐藏的内容</p></div><scri......
  • mac下,利用chrome浏览器长截图(滚动截图)
    1、打开需要截图的网页,随便选一个,然后「右键」「检查」,如下图。 2、点击「检查」,出现控制台窗口后,按「command+shift+p」键,如下图所示。 3、在「Run」的后面,输入「capturefullsizescreenshot」,或者单独输入某个单词,也能在列表中找到,如下图。4、点击之后,就可以完......
  • 直播平台搭建,切换页面 滚动条默认最顶端
    直播平台搭建,切换页面滚动条默认最顶端router.afterEach((to,from,next)=>{ window.scrollTo(0,0);});​以上就是直播平台搭建,切换页面滚动条默认最顶端,更多内容欢迎关注之后的文章 ......
  • 添加请求loading效果
    概述在实际开发场景中,我们需要对每一次的请求做一个loading效果,使得让用户知道正在提交中,此时需要给用户添加loading提示好处节流处理:防止用户在一次请求还没回来之前,多次进行点击,发送无效请求友好提示:告知用户,目前是在加载中,请耐心等待,用户体验会更好步骤请求拦截器中,每......
  • fgui在 cocos creator 如何让一个文本做成一个滚动的效果,使用 ts 脚本来实现
    在CocosCreator中使用FGUI(FairyGUI)实现文本的滚动效果,可以通过TypeScript脚本来实现。以下是一个简单的示例:首先,确保已经安装了FGUI插件,并且已经正确配置了TypeScript。然后,创建一个TypeScript脚本,例如ScrollText.ts,并将其附加到你的文本组件所在的节点上。下面是代......
  • 直播系统源代码,vue实现无缝滚动
    直播系统源代码,vue实现无缝滚动一、采用js的方法实现 <template><div><divclass="box"><divv-for="itemin2"class="item-box":style="{transform:'translate(0,'+scrollTop+'px)'}"><divclass=&......
  • 基于element-plus全局封装Loading
    代码新建一个loading.ts文件import{ElLoading}from"element-plus";/*全局请求loading*/letloadingInstance:ReturnType<typeofElLoading.service>;/***@description开启Loading**/conststartLoading=()=>{loadingInstance=El......