weui.css中flex容器下子项目的水平和垂直居中

想用weui.css写微信平台的页面,发现没有让flex(weui-flex)容器下,子项目(weui-flex__item)居中的类。

百度了一下,是用justify-content:center;实现水平居中,用align-items:center 实现垂直居中。

可是当我这样写的时候,竟然没有用!

<!-- style -->
<style>
    .justify{
        justify-content: center;
    }
    .align{
        align-items: center;
    }
</style>
<!-- HTML -->
<div class="weui-flex justify">
    <div class="weui-flex__item">
        <p>AAAA</p>
    </div>
    <div class="weui-flex__item">
        <p>BBBB</p>
    </div>
</div>

页面效果是这样的:

页面style是这样的:

注意! 这里的 div{display:block;} 

------------------以上为初次尝试结果,下面说一下正确结果及上面无法实现的原因--------------------

当我不使用 weui-flex__item 来实现子项目等分空间,而是使用width来控制时,发生了这样一幕:

 -----代码-----

<!-- style -->
<style>
    .justify{
        justify-content: center;
    }
    .align{
        align-items: center;
    }
    .wid{
        width: 100px;
        height: 5em;
    }
</style>
<!-- html -->
    <div class="weui-flex justify">
        <div class="wid">
            <p>AAAA</p>
        </div>
        <div class="wid">
            <p>BBBB</p>
        </div>
    </div>
    <div class="weui-flex justify">
        <p class="wid" style="background: red;">11111</p>
        <p class="wid" style="background: blue;">22222</p>
    </div>
    <div class="weui-flex justify">
        33333
    </div>        

-----页面效果-----

-----页面style-----

外层div-                                                       

  -

 子元素 p

 

总结发现:display: flex; 只对自身起作用,子元素依旧是 display: block;

     当flex-direction:row时justify-content: center;(垂直居中),align-items: center;(水平居中) 

     而这里justify-content: center;(水平居中)  align-items: center;(垂直居中) ,

     这里之所以和网上的说法相反,是因为weui中的flex-direction的属性值设置为column了,

     要作用在 display属性为flex的标签上才会对其子元素起作用(只有子元素,孙子都不好使)。

     而我们还像用 flex:1来实现等分,那么就出现了我最后的结果。关于flex:1,看这里

     写在一起。

上代码  

  <style>
        .justify{
            justify-content: center;
        }
        .align{
            align-items: center;
        }
        .wid{
            height: 5em;
        }
    </style>
  <div class="weui-flex">
        <div class="weui-flex__item weui-flex justify align">
            <p>AAAA</p>
        </div>
        <div class="weui-flex__item weui-flex justify">
            <p>BBBB</p>
        </div>
    </div>

页面效果

这里顺便写了一下垂直居中,如何实现一看便知。

垂直居中和水平居中效果的实现,关键就在于display,以及作用的范围是 display: flex; 的子节点(没孙子节点什么事)。 

希望可以得到分享和指正。

原文地址:https://www.cnblogs.com/whocare/p/6040050.html