当父元素和子元素都具有不同的百分比宽度时如何使子 div 居中

Posted

技术标签:

【中文标题】当父元素和子元素都具有不同的百分比宽度时如何使子 div 居中【英文标题】:How to center child div when both the parent and child elements have different % widths 【发布时间】:2018-01-14 08:48:49 【问题描述】:

我有两行,每行三个 div。当行的宽度为 100% 且每个 div 的宽度为 28% 时,如何将每行中的三个 div 居中?我还试图让 div 保持居中并响应不同的设备(如手机、平板电脑、台式机和笔记本电脑)。

我试过了:

margin: 0 auto;
display: inline-block;

和:

left: 50%;
right: 50%;

* 
  box-sizing: border-box;


body 
  margin: 0;



/*Phones*/

[class*="col-"] 
  width: 100%;
  height: auto;
  float: left;


.row::after 
  content: "";
  clear: both;
  display: table;


.insideRows 
  margin: 0 auto;


.buttons 
  font-size: 20px;
  color: black;
  border: solid 3px #3366ff;
  padding: 1em;
  margin: 1em;
  text-align: center;



/*For Tablets*/

@media only screen and (min-width: 600px) 
  .col-m-5 
    width: 41.66%;
  



/*For Desktops/Laptops*/

@media only screen and (min-width: 768px) 
  .col-3 
    width: 28%;
  
  .col-12 
    width: 100%;
  
<div class="col-12 row">
  <div class="insideRows">
    <div class="col-3 col-m-5 buttons">Row 1 Column 1</div>
    <div class="col-3 col-m-5 buttons">Row 1 Column 2</div>
    <div class="col-3 col-m-5 buttons">Row 1 Column 3</div>
  </div>
  <div class="insideRows">
    <div class="col-3 col-m-5 buttons">Row 2 Column 1</div>
    <div class="col-3 col-m-5 buttons">Row 2 Column 2</div>
    <div class="col-3 col-m-5 buttons">Row 2 Column 3</div>
  </div>
</div>

【问题讨论】:

【参考方案1】:

您可以为.insideRows 使用弹性框

* 
  box-sizing: border-box;


body 
  margin: 0;


.insideRows 
  display: flex;
  justify-content: center;



/*Phones*/

[class*="col-"] 
  width: 100%;
  height: auto;
  float: left;


.row::after 
  content: "";
  clear: both;
  display: table;


.insideRows 
  margin: 0 auto;


.buttons 
  font-size: 20px;
  color: black;
  border: solid 3px #3366ff;
  padding: 1em;
  margin: 1em;
  text-align: center;



/*For Tablets*/

@media only screen and (min-width: 600px) 
  .col-m-5 
    width: 41.66%;
  



/*For Desktops/Laptops*/

@media only screen and (min-width: 768px) 
  .col-3 
    width: 28%;
  
  .col-12 
    width: 100%;
  
<div class="col-12 row">
  <div class="insideRows">
    <div class="col-3 col-m-5 buttons">Row 1 Column 1</div>
    <div class="col-3 col-m-5 buttons">Row 1 Column 2</div>
    <div class="col-3 col-m-5 buttons">Row 1 Column 3</div>
  </div>
  <div class="insideRows">
    <div class="col-3 col-m-5 buttons">Row 2 Column 1</div>
    <div class="col-3 col-m-5 buttons">Row 2 Column 2</div>
    <div class="col-3 col-m-5 buttons">Row 2 Column 3</div>
  </div>
</div>

【讨论】:

以上是关于当父元素和子元素都具有不同的百分比宽度时如何使子 div 居中的主要内容,如果未能解决你的问题,请参考以下文章

如何解决高度塌陷

前端几种常见的布局方式

Flexbox tailwind:无法使子元素的宽度调整内容

javascript:仅当父元素处于活动状态且子元素具有特定类时,如何向子元素添加属性?

jquery如何获得宽度为百分比的元素的宽度?

如何使选择元素缩小到字段集中的最大宽度百分比样式