美文网首页
css3中水平居中的一个你可能不知道的细节

css3中水平居中的一个你可能不知道的细节

作者: 码农随想录 | 来源:发表于2017-09-08 13:38 被阅读102次

    1、前言


    最近在使用postcss-center的时候,不理解css水平居中为什么需要“margin-right:-50%”。

    margin-right:-50%
    所以给作者commit了一个Issues
    commit了一个Issues

    根据作者提供的链接,才弄清楚这个细节,特此记录一下。

    2、为什么水平居中需要 margin-right: -50%;?


    • 细节问题展示

    首先创建一个test.html
    <html>
      <style>
        body {
            background: white }
        section {
            background: black;
            color: white;
            border-radius: 1em;
            padding: 1em;
            position: absolute;
            top: 50%;
            left: 50%;
            /*margin-right: -50%;*/
            transform: translate(-50%, -50%) }
      </style>
      <section>
        <h1>Nicely centered</h1>
        <p>This text block is vertically centered.
        <p>Horizontally, too, if the window is wide enough.
      </section>
      <html/>
    
    打开test.html,尝试调整窗口大小到最窄。
    打开test.html,尝试调整窗口大小到最窄。
    注释margin-right: -50%;
    注释margin-right: -50%;
    刷新浏览器test.html
    刷新浏览器test.html
    • 细节分析

    原理分析

    'left: 50%'将元素的可用宽度减少50%。因此,渲染器将尝试渲染不超过容器宽度一半的宽度。通过'margin-right: -50%'元素的右边距在右边相同的数量,渲染最大宽度再次与容器的宽度相同。

    结果分析

    当尝试调整窗口大小时,窗口宽度足够宽的时候,您会看到每个句子都在一行上。只有当整个句子的窗口太窄时,句子才能被分割成几行。
    当您将窗口宽度调整是文本行的两倍宽度时

    • 'margin-right:-50%'未被注释,您会看到每个句子都在一行上
    • 'margin-right:-50%'被注释,句子被分割成几行。

    3、最后


    如果有什么疑问,可以在下面评论或者私信我。
    如果您觉得有帮助,请给我点个👍,谢谢。

    相关文章

      网友评论

          本文标题:css3中水平居中的一个你可能不知道的细节

          本文链接:https://www.haomeiwen.com/subject/ywygjxtx.html