jQuery UI Resizable -如果元素被放置在iFrame旁边,则不稳定的调整大小

7fyelxc5  于 2023-08-04  发布在  jQuery
关注(0)|答案(2)|浏览(87)

基本上,我想为页面访问者提供调整左侧栏大小的能力,我尝试使用jQuery UI Resizable来实现这一点。当#left-bar旁边的div不包含iFrame时,它可以正常工作,但如果它有iFrame,结果如下所示:

#main{
    height: 900px;
    width: 1800px;

    background-color: aqua;

    display: flex;
}

#left-bar{
    height: 100%;
    width: 250px;

    background-color: blue;

    outline: medium solid red;

    margin-right: 1px;

    display: inline-block;
}

#topic-window{
    height: 100%;
    width: 100%;

    background-color: navy;

    outline: medium solid red;

    display: inline-block;
}

#docWindow{
  width: 100%;
  height: 100%;

  position:relative;

  background-color: yellow;
}

个字符
下面是#topic-window div中没有iFrame时的工作方式:

#main{
    height: 900px;
    width: 1800px;

    background-color: aqua;

    display: flex;
}

#left-bar{
    height: 100%;
    width: 250px;

    background-color: blue;

    outline: medium solid red;

    margin-right: 1px;

    display: inline-block;
}

#topic-window{
    height: 100%;
    width: 100%;

    background-color: navy;

    outline: medium solid red;

    display: inline-block;
}

#docWindow{
  width: 100%;
  height: 100%;

  position:relative;

  background-color: yellow;
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <link href="index.css" rel="stylesheet" type="text/css"/>

    <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
    <script src="https://rawgit.com/tannernetwork/resizable/master/resizable.min.js"></script>
    <link rel="stylesheet" type="text/css" href="https://rawgit.com/tannernetwork/resizable/master/resizable.min.css">
    <script>
        $(function(){
            $("#left-bar").resizable({ 
                direction: 'right' 
            })
        })
    </script>
</head>
<body>
    
    <div id="main">
        <div id="left-bar"></div>
        <div id="topic-window">
        </div>
    </div>


</body>
</html>

的字符串
所以你可以看到,它是相当顺利的,当没有iFrame。这就是我想要的表演。我是jQuery的新手,所以我无法找到解决这个问题的方法,有人能给我指出克服这个问题的方向吗?

ebdffaop

ebdffaop1#

这可能是iframe窗口“吞下”鼠标移动事件的效果,resize插件本身需要确定您移动分隔符的方式。
您应该能够抵消这一点,通过为面板内的所有元素设置pointer-events: none,当调整大小开始时-并在停止时再次删除它。

#main{
    height: 900px;
    width: 1800px;

    background-color: aqua;

    display: flex;
}

#left-bar{
    height: 100%;
    width: 250px;

    background-color: blue;

    outline: medium solid red;

    margin-right: 1px;

    display: inline-block;
}

#topic-window{
    height: 100%;
    width: 100%;

    background-color: navy;

    outline: medium solid red;

    display: inline-block;
}

#docWindow{
  width: 100%;
  height: 100%;

  position:relative;

  background-color: yellow;
}

.ignore-pointer-events > * {
  pointer-events: none;
}

个字符

qrjkbowd

qrjkbowd2#

在CBroe的帮助和我自己的一些补充下,我得到了我想要的结果。
以下是所有感兴趣的人的片段:

#main{
    height: 900px;
    width: 1800px;

    background-color: aqua;

    display: flex;
}

#left-bar{
    height: 100%;
    width: 250px;

    background-color: blue;

    outline: medium solid red;

    margin-right: 1px;

    flex: 0 0 auto;
}

#topic-window{
    height: 100%;
    width: 100%;

    background-color: navy;

    outline: medium solid red;

    flex: 1 1 0;
}

#docWindow{
  width: 100%;
  height: 100%;

  position:relative;

  background-color: yellow;
}

.ignore-pointer-events > * {
  pointer-events: none;
}

个字符

相关问题