【问题标题】:How to center the absolute positioned div, inside the relative div, inside the absolute positioned flexContainer?如何将绝对定位的 div 居中,在相对 div 内,在绝对定位的 flexContainer 内?
【发布时间】:2014-11-09 10:47:29
【问题描述】:

让我说清楚。我有一个 定位flex container 来创建网格布局。在 flex 内部,我有一个 定位 .tileWrapper.tile 本身被动画后填充空间(并且仍然保持布局)。

当我单击磁贴( 定位)时,它会在 Y 轴上翻转并改变大小。

.tile 翻转时,我想在屏幕上居中。在我再次单击它后,中心将取消。我什至不知道这是否可行。如果不是让我知道。

HTML 标记:

<body>

    <div class="flexContainer">
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.<br>
                    Matematyka
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper small">
            <div class="tile matematyka">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>
        <div class="tileWrapper big">
            <div class="tile technologie">
                <div class="tileContent front">
                    Tytuł artykułu.
                </div>
                <div class="tileContent back">
                    Treść artykułu.
                </div>
            </div>
        </div>

    </div>

CSS:

* {
    margin: 0;
    padding: 0;

/*    outline: 1px solid pink;*/
}
.flexContainer {
    position: absolute;
    width: 100%;
    height: 100%;
    max-height: 100%;
    padding: 30px;
    overflow-x: scroll;
    background: url(../img/background.png);
    -webkit-box-sizing: border-box;
       -moz-box-sizing: border-box;
       -webkit-box-sizing: border-box;
            box-sizing: border-box;
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -webkit-flex-direction: column;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    -webkit-align-content: flex-start;
        -ms-flex-line-pack: start;
            align-content: flex-start;
    -webkit-box-pack: center;
    -webkit-justify-content: center;
        -ms-flex-pack: center;
            justify-content: center;
}
.tileWrapper {
    position: relative;
    width: 200px;
    margin: 10px;
    -webkit-box-flex: 0;
    -webkit-flex-grow: 0;
        -ms-flex-positive: 0;
            flex-grow: 0;
    -webkit-flex-shrink: 0;
        -ms-flex-negative: 0;
            flex-shrink: 0;
}
.tileWrapper.small {
    -webkit-flex-basis: 100px;
        -ms-flex-preferred-size: 100px;
            flex-basis: 100px;
}
.tileWrapper.big {
    -webkit-flex-basis: 220px;
        -ms-flex-preferred-size: 220px;
            flex-basis: 220px;
}
.tile {
    position: absolute;
    width: 100%;
    height: 100%;
    padding: 10px;
    /*    */
    background : rgb(255, 0, 0);
    /*    */
    border: 0 solid rgba(255, 255, 255, 0.4);
    border-radius: 2px;
    opacity: 0.8;
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
    -webkit-align-items: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
    -webkit-justify-content: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.4), inset 0 0 30px rgba(0, 0, 0, 0.1);
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.4), inset 0 0 30px rgba(0, 0, 0, 0.1);
    -webkit-box-sizing: border-box;
       -moz-box-sizing: border-box;
            box-sizing: border-box;
    -webkit-transition: 0.5s;
            transition: 0.5s;
    -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;

}
.tile:hover {
    border: 5px solid rgba(255, 255, 255, 0.4);
    -webkit-transition:0.2s;
            transition:0.2s;
        -ms-transform: scale(1.1);
    -webkit-transform: scale(1.1);
            transform: scale(1.1);
    -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
}
.tile.flipped {
    position: absolute;
    margin: auto;
    width: 500px;
    height: 300px;
    opacity: 0.9;
    z-index: 10;
    border: 5px solid rgba(255, 255, 255, 0.4);
    -webkit-transform: perspective(700) rotateY(-180deg);
            transform: perspective(700) rotateY(-180deg);
    -webkit-transition: 0.5s;
            transition: 0.5s;
}


/*Categories*/

.tile.technologie {
    background: rgb(0, 100, 255);
}

/*End Categories*/


.tileContent {
    font-family: 'tahoma';
    color: #fafafa;
    text-shadow: 0 0 1px black;
}
.tileContent.front {
    display: inline-block;
    text-align: center;
    -webkit-flex-basis: 200px;
        -ms-flex-preferred-size: 200px;
            flex-basis: 200px;
    -webkit-box-flex: 0;
    -webkit-flex-grow: 0;
        -ms-flex-positive: 0;
            flex-grow: 0;
    -webkit-flex-shrink: 0;
        -ms-flex-negative: 0;
            flex-shrink: 0;
    -webkit-backface-visibility: hidden;
            backface-visibility: hidden;
}
.tileContent.front.flipped {
    display: none;
}
.tileContent.back {
    display: none;
    -webkit-transform: rotateY(180deg);
            transform: rotateY(180deg);
}
.tileContent.back.flipped {
    display: block;
}

FIDDLE

【问题讨论】:

  • 这是 CSS 的 Inception 版本。
  • 我知道您正在尝试提供帮助,但您的问题已经用不相关的 css 和 HTMl 负担过重,请缩减您的答案并使其尽可能与您的问题相关。

标签: absolute relative absolute javascript jquery html css css-position


【解决方案1】:

在我看来,您正在寻找位于页面中间的弹出窗口。如果是这样,您需要在 CSS 中添加和删除以下内容。

.flipped{
  width: 500px;
  height: 300px;
  opacity: 0.9;
  z-index: 10;
  border: 5px solid rgba(255, 255, 255, 0.4);
  -webkit-transform: perspective(700) rotateY(-180deg);
  transform: perspective(700) rotateY(-180deg);
  -webkit-transition: 0.5s;
  transition: 0.5s;
  position: fixed;
  left: 50%;
  margin-left: -250px;
  top: 50%;
  margin-top: -150px;
}

左侧 50% 和负边距仅因为您在 div 上设置的大小而起作用,上边距也是如此。它现在在窗口中居中。

JSFiddle

【讨论】:

  • 谢谢,定心工作正常。唯一的问题是现在翻转的图块低于其余图块,并且 z-index 不起作用。不过还是非常感谢:)
猜你喜欢
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
  • 2013-04-20
  • 2015-04-11
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多