【问题标题】:how to make inner divs horizontally centered when pushed on top of each other on small screens如何在小屏幕上相互叠加时使内部 div 水平居中
【发布时间】:2019-04-12 01:36:46
【问题描述】:

当屏幕宽时,我有 4 个 div(每个计数器)彼此相邻。y 当屏幕变小时,它们会相互堆叠,但它们会向右对齐

我希望它们始终居中,当 4 行、2 行 2 和 1 行 4 行时。

我怎样才能做到这一点?数字可能会改变并使 div 的宽度可变

看这里: https://jsfiddle.net/Zivo/gp5wnL9f/1/

body {
    margin: 0;
    --border: 1px solid #cccccc;

}

.numbers {
    font-family: lato;
    font-size: 72px;
    color: #131128;
}

.odometer {
    display: inline-block;
    top: -7px;
}

.suffix {
    float: right
}

.frame {
    transform: translate(-50%);
    left: 50%;
    position: relative;
    border-bottom: var(--border);
    height: 94px;
    overflow: hidden
}

.suffix p {
    margin: 0 5px 0 0;
}

.odometer p {
    margin: 0 0 0 5px;
}

.theme {
    box-sizing: border-box;
    margin: 20px;
    float: left;
}

.hline {
    height: 40px;
    width: 50%;
    border-right: var(--border);
    /*    transform: translateY(-4px);*/
}

.num-title {
    text-align: center;
    font-weight: 700;
    font-size: 16px;
    letter-spacing: 0.5px;
    padding-top: 6px;
}

HTML

<body>
    <div class="numbers">
        <!--counter 1 - Sensors-->
        <div class="sensors theme">
            <div class="frame">
                <div class="odometer" odometer-goal="10">
                    <p>0</p>
                </div>
                <div class="suffix">
                    <p>k+</p>
                </div>
            </div>
            <div class="hline"></div>
            <div class="num-title">Sensors</div>
        </div>
        <!--counter 2 - ICO-->
        <div class="sensors theme">
            <div class="frame">
                <div class="odometer" odometer-goal="13">
                    <p>0</p>
                </div>
<!--
                <div class="suffix">
                    <p>k+</p>
                </div>
-->
            </div>
            <div class="hline"></div>
            <div class="num-title">IOC Types</div>
        </div>
        <!--counter 3 - Scanners-->
        <div class="sensors theme">
            <div class="frame">
                <div class="odometer" odometer-goal="550">
                    <p>0</p>
                </div>
                <div class="suffix">
                    <p>k+</p>
                </div>
            </div>
            <div class="hline"></div>
            <div class="num-title">Scanners</div>
        </div>
        <!--counter 4 - Attackers-->
        <div class="sensors theme">
            <div class="frame">
                <div class="odometer" odometer-goal="5">
                    <p>0</p>
                </div>
                <div class="suffix">
                    <p>k+</p>
                </div>
            </div>
            <div class="hline"></div>
            <div class="num-title">Attackers</div>
        </div>
    </div>
    <script type="text/javascript">
        setTimeout(function() {
            let elements = document.getElementsByClassName('odometer');
            for (var i = 0; i < elements.length; i++) {
                let goal = elements[i].getAttribute("odometer-goal");
                elements[i].innerHTML = goal;
            }
        }, 1000);

    </script>
</body>

【问题讨论】:

    标签: css alignment center


    【解决方案1】:

    从您的类.theme 中删除float: left 并将以下flex 属性添加到.numbers

    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    
    • 第一个属性将激活 flex 布局
    • flex-wrap: wrap 允许在没有足够空间时换行的元素行
    • justify-content: center 将使元素居中而不是默认对齐方式(取决于文本方向)

    body {
        margin: 0;
        --border: 1px solid #cccccc;
    
    }
    
    .numbers {
        font-family: lato;
        font-size: 72px;
        color: #131128;
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
    }
    
    .odometer {
        display: inline-block;
        top: -7px;
    }
    
    .suffix {
        float: right
    }
    
    .frame {
        transform: translate(-50%);
        left: 50%;
        position: relative;
        border-bottom: var(--border);
        height: 94px;
        overflow: hidden
    }
    
    .suffix p {
        margin: 0 5px 0 0;
    }
    
    .odometer p {
        margin: 0 0 0 5px;
    }
    
    .theme {
        box-sizing: border-box;
        margin: 20px;
    }
    
    .hline {
        height: 40px;
        width: 50%;
        border-right: var(--border);
        /*    transform: translateY(-4px);*/
    }
    
    .num-title {
        text-align: center;
        font-weight: 700;
        font-size: 16px;
        letter-spacing: 0.5px;
        padding-top: 6px;
    }
    <body>
        <div class="numbers">
            <!--counter 1 - Sensors-->
            <div class="sensors theme">
                <div class="frame">
                    <div class="odometer" odometer-goal="10">
                        <p>0</p>
                    </div>
                    <div class="suffix">
                        <p>k+</p>
                    </div>
                </div>
                <div class="hline"></div>
                <div class="num-title">Sensors</div>
            </div>
            <!--counter 2 - ICO-->
            <div class="sensors theme">
                <div class="frame">
                    <div class="odometer" odometer-goal="13">
                        <p>0</p>
                    </div>
    <!--
                    <div class="suffix">
                        <p>k+</p>
                    </div>
    -->
                </div>
                <div class="hline"></div>
                <div class="num-title">IOC Types</div>
            </div>
            <!--counter 3 - Scanners-->
            <div class="sensors theme">
                <div class="frame">
                    <div class="odometer" odometer-goal="550">
                        <p>0</p>
                    </div>
                    <div class="suffix">
                        <p>k+</p>
                    </div>
                </div>
                <div class="hline"></div>
                <div class="num-title">Scanners</div>
            </div>
            <!--counter 4 - Attackers-->
            <div class="sensors theme">
                <div class="frame">
                    <div class="odometer" odometer-goal="5">
                        <p>0</p>
                    </div>
                    <div class="suffix">
                        <p>k+</p>
                    </div>
                </div>
                <div class="hline"></div>
                <div class="num-title">Attackers</div>
            </div>
        </div>
        <script type="text/javascript">
            setTimeout(function() {
                let elements = document.getElementsByClassName('odometer');
                for (var i = 0; i < elements.length; i++) {
                    let goal = elements[i].getAttribute("odometer-goal");
                    elements[i].innerHTML = goal;
                }
            }, 1000);
    
        </script>
    </body>

    【讨论】:

      【解决方案2】:

      要获得您要求的内容,请将 text-align: center; 添加到 .numbers 类,并从 .theme 类中删除 float: left; 并将 display: inline-block; 添加到 .theme

      这是最后的课程:

      .numbers {
          font-family: lato;
          font-size: 72px;
          color: #131128;
          text-align: center; /* new */
      }
      
      .theme {
          box-sizing: border-box;
          margin: 20px;
          /* float: left; */ /* removed */
          display: inline-block; /* new */
      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-16
        • 2012-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-31
        • 1970-01-01
        • 2015-02-10
        相关资源
        最近更新 更多