显示后居中的剩余元素:无

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了显示后居中的剩余元素:无相关的知识,希望对你有一定的参考价值。

注意:我使用的是Flexbox

当屏幕重新调整大小时,我使用“display:none”来删除一些不再适合尺寸缩小的元素,但一旦删除它们,仍然显示的元素不再在其列中水平居中。

例如:(这不是代码,它只是一个简单的例子)

|-------------------------------|
|       |       |       |       |
|  1 2  |  1 2  |  1 2  |  1 2  |
|-------|-------|-------|-------|  

例如:现在“2”元素具有“display:none”属性后,剩下的不再是水平居中。

|-------------------------------|
|       |       |       |       |
|  1    |  1    |  1    |  1    |
|-------|-------|-------|-------|  

当我缩小并移除元素“2”时,保持水平居中的正确方法是什么?

答案

Option 1 - Flex Solution

要将项目置于flexbox中心 - 并使它们保持居中 - 您可以使用justify-contentalign-items属性。

html

<article id="container">
    <section class="box>
        <span class="one">1</span>
        <span class="two">2</span>
    </section>
    <section class="box>
        <span class="one">1</span>
        <span class="two">2</span>
    </section>
    <section class="box>
        <span class="one">1</span>
        <span class="two">2</span>
    </section>
 </article>

CSS

#container {
    display: flex;
    justify-content: center; /* align flex items horizontally (in this case) */
    align-items: center; /* align flex items vertically (in this case) */
    height: 50px;
    background-color: lightgray;
    border: 2px dashed black;
}

section {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 50px;
    padding: 5px;
    margin: 5px;
    font-size: 1.2em;
    border: 1px solid red;
}

@media screen and (max-width: 500px) {
    span.two { display: none; }
}

DEMO(重新调整大小窗口效果)


Option 2 - text-align

保持内容居中的另一种方法是在父母身上使用text-align: center

HTML(与上面相同)

CSS

#container {
    display: flex;
    justify-content: center; /* align flex items horizontally (in this case) */
    align-items: center; /* align flex items vertically (in this case) */
    height: 50px;
    background-color: lightgray;
    border: 2px dashed black;
}

section {
    width: 50px;
    padding: 5px;
    margin: 5px;
    font-size: 1.2em;
    border: 1px solid red;
    text-align: center;
}

@media screen and (max-width: 500px) {
    span.two { display: none; }
}

DEMO

另一答案

一种方法是使用javascript从DOM中删除“2”元素,然后flexbox将中心剩余的元素。

var element2 = document.getElementById("element2");
element2.parentNode.removeChild(element2);

另一种方法是将“2”元素设置为“position:absolute”,然后flexbox将无法移动它,其余元素将居中,就好像它不在那里一样。

#element2{
  display:none;
  position:absolute;
}

以上是关于显示后居中的剩余元素:无的主要内容,如果未能解决你的问题,请参考以下文章

CSS代码片段

CSS代码片段

刷新同一活动中剩余的当前片段(ListView 数据)

Sleep() 方法后的代码片段没有被执行

CSS居中方案大全

使用 flexbox 使文本居中,然后将剩余 50% 的按钮居中 [重复]