如何用css将盒子完美的等分

Posted 前端知识汇总

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用css将盒子完美的等分相关的知识,希望对你有一定的参考价值。

假期结束了


今天开始你们都返回各自的岗位了吧

这一期来介绍下css的伸缩布局方式:


有这样一个简单的需求


现在你的手里有一个div,你需要把里面的内容分成不定的几等分,同时还具备伸缩的功能?


想想这个需求要怎么完成



有的同学就发言了,这还不简单,看我几分钟就实现


  
    
    
  
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1">     <title>三等分测试</title> <style type="text/css">      * {        padding: 0;        margin: 0;      }      section {        width: 80%;        height: 150px;        background-color: pink;        border: 1px solid #0000FF;      }      section div {        width: 33.33%;        height: 100%;        float: left;      }      div:nth-child(1) {        background-color: #FFC0CB;      }      div:nth-child(2) {        background-color: skyblue;      }      div:nth-child(3) {        background-color: chocolate;      } </style> </head> <body> <section>      <div>第一个盒子</div>      <div>第二个盒子</div>      <div>第三个盒子</div> </section> </body> </html>


这样写完全没有问题,可以任由缩放,来看看效果


如何用css将盒子完美的等分


但是这样写是存在问题的,你需要去计算百分比,这种传统的写法现在已经很少见了,但是很多网站还是用这种写法写的


再来看看我今天要介绍的这种写法


<!DOCTYPE html><html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1">    <title>三等分测试</title><style type="text/css">      * {        padding: 0;        margin: 0;      }      section {        width: 80%;        height: 150px;        background-color: pink;        border: 1px solid #0000FF;        display: flex; /* 第一步先改变显示模式*/        min-width: 300px;/* 设置缩放的最小宽度 */        max-width: 1000px;/* 设置缩放的最大宽度 */        flex-direction: row;/* 以水平方式缩放 */        flex-direction: column; /* 以垂直方式缩放*/      }      section div {        width: 33.33%;        height: 100%;        float: left;        flex: 1;/* 第二步,设定每个框所占的份数 */      }      div:nth-child(1) {        flex2;/*占显示的两份*/        background-color: #FFC0CB;      }      div:nth-child(2) {        flex3;/*占显示的三分*/

       background-color: skyblue;

     }      div:nth-child(3) {        width: 200px;/* 这样设置了之后这个盒子就不会缩放了 */        background-color: chocolate;      }</style></head><body><section>      <div>第一个盒子</div>      <div>第二个盒子</div>      <div>第三个盒子</div></section></body></html>


这两种写法的效果稍微有点区别,第二种方式现在经常用到



再说说第二种方法需要注意的问题:


  • 一定要先在父级盒子里面改变显示的方式为flex
  • flex的值后面是数字,没有单位的
  • flex是写在子元素中的,不能给加到父级中
  • 一旦有盒子手动的添加width之后此盒子将不会再被缩放
  • flex-direction可以改变缩放是水平的还是垂直的


以后建议大家使用第二种,以为第二种还有哦一个巨大的优点,假如你用第一种给盒子添加margin值后,会因为父级盒子的宽度不够而使盒子掉下来,但是第二种就不会了,这在开发中很大的帮助了我们。


今天就先到这里了,更多的请关注后续的更新............



以上是关于如何用css将盒子完美的等分的主要内容,如果未能解决你的问题,请参考以下文章

如何用几何画板把圆奇数等分

如何用PHOTOSHOP把一矩形等分

需要背景图片时如何用 CSS 切角?

如何用java中的星号制作盒子?嵌套循环?

如何用CSS使图片自适应显示宽度

如何用jQuery实现点击按钮弹出一个盒子,除了这个盒子以外的其他部分颜色全变暗?