jquery - 父级中的中心叠加

标签 jquery css overlay

这是另一个居中叠加问题,但有所不同。我需要将叠加层置于其父容器的中心。

并发症

  1. 如果容器比屏幕长(即垂直滚动条),我需要叠加层在屏幕中垂直居中,在父级中水平居中
  2. 如果包含适合屏幕(即没有垂直侧边栏),我需要在父容器中水平和垂直居中的叠加层。

我目前在两种情况下都将叠加层居中显示。

请参阅my homepage (试试下面两个服务的寻呼机)和service list (使用寻呼机)示例。

我当前用于屏幕居中的 CSS 是

.overlay {
    display: none;
    padding: 20px 0;
    text-align: center;
    vertical-align: middle;
    background: #E9F7FF;
    border: 3px solid #97D1F4;
    font-size: 1.5em;
    color: #97D1F4;
    font-weight: bold;
    width: 300px;
    height: 20px;
    position: fixed;
    top: 50%;
    left: 50%;
    margin-top: -10px;
    margin-left: -150px;
}

是的,我可以使用 jQuery 来实现它。不过,只有 CSS 才是理想的。

最佳答案

使用 jQuery UI 来解决 - 其实很简单。

function isScrolledIntoView(elem)
{
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = $(elem).offset().top;
    var elemBottom = elemTop + $(elem).height();

    return ((docViewTop < elemTop) && (docViewBottom > elemBottom));
}

if (isScrolledIntoView(container))
        {
            $(overlay).position({
                my: "center",
                at: "center",
                of: $(container)
            });
        }
        else
        {
            $(overlay).position({
                my: "center",
                at: "center",
                of: window
            });
        }

        $(overlay).show();
}

仍然需要找到一种方法来垂直居中于窗口和水平居中于父容器,但这目前可行。

关于jquery - 父级中的中心叠加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11775696/

相关文章:

jquery - BackboneJS 单页站点 : Attaching and Cleaning Up Views

javascript - 如何在 3 个元素上划分一个元素的高度?

css - MUI 卡片文字叠加

jQuery 覆盖——不同 DIV 的相同代码

javascript - 使用创建的 PNG 进行传单叠加

php - 如何从 mysql 数据库中获取项目并将其添加到页面,每个项目都有一个复选框?

javascript - 无法在表中动态添加新行

css位置顺序问题

css - 使用另一个 div 修剪 div 不起作用

javascript - 按照以下格式对 extjs4 中的文本字段进行验证检查?