首页 > 其他分享 >页面全屏后antd的下拉框下拉选项不出现的问题

页面全屏后antd的下拉框下拉选项不出现的问题

时间:2024-03-29 10:25:17浏览次数:25  
标签:el value isFullScreen 全屏 antd document 下拉框

最近碰到数据可视化页面需要全屏的功能,但是全屏之后ant design of vue组件的下拉框点击之后无法出现下拉选项。

原因:下拉框的下拉部分父节点默认是body,全屏后body元素被挡住了

全屏功能实现:

<div class="large-screen" ref="el">
    <div class="large-screen-full-btn" @click="switchFullscreen">
      <FullscreenOutlined />
    </div>
  </div>
const el = ref() const isFullScreen = ref(false) // 全屏 function switchFullscreen() {   isFullScreen.value = !isFullScreen.value   if (document.fullscreenElement !== el.value) {     el.value?.requestFullscreen()   } else {     document.exitFullscreen()   } }

解决方法:在全屏的时候把下拉框的下拉部分父节点设置成当前组件根元素

实现:

<div class="temperature">
      ........ <a-select class="warehouse" v-model:value="warehouse" :options="warehouseOption" :getPopupContainer="getPopupContainer" :key="num" > </a-select> </div>
// 改变num的值,重渲染下拉框组件
const num = ref(0)
function getPopupContainer() {
  // 返回一个 DOM 元素作为弹出层的挂载容器
  return props.isFullScreen ? document.querySelector('.temperature') : document.querySelector('body')
}
watch(() => props.isFullScreen, (newVal) => { num.value++ })

在全屏切换时下拉部分并不会重渲染,这会导致由非全屏切换为全屏状态时下拉菜单不会出现,所以需要给下拉框设置key属性,并在切换状态时改变key值,达到重渲染的效果。

 

标签:el,value,isFullScreen,全屏,antd,document,下拉框
From: https://www.cnblogs.com/ljiali/p/18103191

相关文章

  • 一个基于Nodejs环境的小工具,使用Puppeter对网页进行全屏截图
    screenshotsAsmalltoolbasedonNodejsenvironment,usingPuppetertotakefullscreenscreenshotsofanywebpage1.简介 一个基于Nodejs环境的小工具,使用Puppeter对任何网页进行全屏截图 2.特点 如果页面有滚动条会自动滚屏截取全部可见内容如果页面使用......
  • tailwindcss 默认的button按钮样式导致其他ui库,如antd、element等透明失效问题的终极
    我先说一下好消息,这个问题在官方层面已经准备解决了,并且在当前版本(3.4.1)的下一个正式版彻底解决。这里是原文:https://github.com/tailwindlabs/tailwindcss/pull/12735但截至目前24.3.26日,仍然没发布新版。官方的解决办法也很简单,就是降低优先级原来的:button,[type='button......
  • antd pro umi 3 项目去掉404页面的layout
    背景:如果访问不存在的路由会自动跳转到带layout的404页面,如果在未登录的情况下不需要这个layout版本"umi":"^3.5.0",使用约定式路由,在app.tsx中配置的layoutexportconstlayout:RunTimeLayoutConfig=({initialState,setInitialState})=>{}解决办法使用pure属性......
  • 在使用 Yarn Workspaces 时,有业务包A和组件库包B,两个包分别引用了antd4 和antd5 三方
    在使用YarnWorkspaces时,有业务包A和组件库包B,两个包分别引用了antd4和antd5三方包,安装依赖时该注意什么?在使用YarnWorkspaces的项目中,如果有业务包A和组件库包B,分别引用了antdv4和antdv5两个不同版本的三方包,安装依赖时需要注意以下几点:版本隔离:由于antd......
  • antdesign protable 修改搜索区Form item的placeholder
    默认protable搜索去的placeholder为请输入或者请选择: 需要修改为其他内容,配置 constcolumns=[  {   title:'项目',   dataIndex:'project',   valueEnum:currentUser.projects.reduce((r,c)=>{    r[c]=c;    re......
  • Antd+ProComponent管理系统中的部分业务封装
    本文记录在我司后台管理系统中,自己对部分业务的一些封装。业务封装涉及的技术栈为Antd+ProComponent+zustand权限由于此项目的权限精度并没那么高,后台采用ACL权限控制而不是RBAC,仅根据角色来判断权限,因此可能无法适配所有业务场景,但是可以参考思路。此处封装了两个权限......
  • antd 表单聚焦
    antd表单聚焦在AntDesign(antd)中,要实现表单的聚焦,你可以使用Form组件的getFieldDecorator方法来绑定一个Input组件,并通过ref属性引用这个Input组件,然后调用其focus()方法来聚焦。以下是一个简单的例子:  importReactfrom'react';import{Form,Input,Button......
  • 前端-全屏功能
    constisFullScreen=ref(false)//全屏constfullScrenn=()=>{letelement=document.documentElementif(element.requestFullscreen){ element.requestFullscreen()}elseif(element.webkitRequestFullScreen){ element.webkitRequestFullScreen()......
  • Antd ProTable 设置表格头,可拖动变换列宽度
    ProTable表格本身是不支持,列宽度可拖动的。1、按照一个插件( react-resizable)npm install --save react-resizable2、新建一个工具类ResizableTableUtil.jsimportReactfrom'react';import{Resizable}from'react-resizable';constResizableTitle=(props)=>......
  • Grafana添加下拉框变量
    背景在做完通过process-exporter采集指定进程的资源使用情况后发现Grafana提供的监控图标是将所有机器的进程都存放在一起,不支持单独查看某台机器的进程情况,所以决定对Grafana图表进行修改。Grafanav10.3.1步骤步骤1:点击设置--->添加变量步骤2:设置变量变量类型、常规信......