使用偶数 space 调整大小后居中 div?

Centering div after resize with even space?

你好,我在让居中 div 内的元素出现在中心且水平 space 左右两边之间出现问题时遇到了问题。

问题不在于 div 居中,而是在 window 太小(例如:Smartphone)时保持 space 即使有限制,并且由于该页面预计会响应并加载到任何屏幕上,我希望它是均匀的。 这是 HTML 代码的样子:

<body>
<div class="header">
<h1 align="center">CRM</h1>
</div>
<div class="col-12 col-m-12">
<div class="row"> 
<div id="group1">       
    <div class="tile amarelo" onclick="location.href='http://whosebug.com/'">
    <span class="titulo">Calendar Placeholder</span><br/>
    </div>
    <div class="tile azul">
    <span class="titulo">Budget Placeholder</span><br/>
    </div>
    <div class="tile azul">
    <span class="titulo">Program X</span><br/>
    </div>
    <div class="tile azul">
    <span class="titulo">Program Y</span><br/>
    </div>
    </div>  

    <div id="group2"> 
    <div class="tile azul">
    <span class="titulo">Program W</span><br/>
    </div>
    <div class="tile azul">
    <span class="titulo">Program Z</span><br/>  </div>
</div>
</div>
</div>
</body>

CSS:

@media only screen and (min-width: 600px) {
/* For tablets: */
.col-m-1 {width: 8.33%;}
.col-m-2 {width: 16.66%;}
.col-m-3 {width: 25%;}
.col-m-4 {width: 33.33%;}
.col-m-5 {width: 41.66%;}
.col-m-6 {width: 50%;}
.col-m-7 {width: 58.33%;}
.col-m-8 {width: 66.66%;}
.col-m-9 {width: 75%;}
.col-m-10 {width: 83.33%;}
.col-m-11 {width: 91.66%;}
.col-m-12 {width: 100%;}
}
@media only screen and (min-width: 768px) {
/* For desktop: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}

}
[class*="col-"] {
margin:0 auto;
 border: 1px solid red;
}
.da{
background-color:#FF0000;

}

.db{background-color:#0101DF;}
.hide{
 display:none;
  }

 .row:after {
 content: "";
 clear: both;
 display: block;
 }



 body{
 font-family: Calibri;
 background: rgb(51,51,51);
 color: #fff;
 }

.row{
width:auto;
padding:5px;
height:auto;
display:table; 
margin:0 auto;     
 }

 .tile{

cursor:pointer;
height:110px;   
width:110px;  
float:left;
margin:5px 5px 5px 5px;
padding:2px;
}

.amarelo{
background:#DAA520;
}

.azul{
background:#4682B4;
}

.header {
background-color: #58D3F7;
color: #ffffff;
padding: 15px;
}

我在这里创建了一个fiddle:http://jsfiddle.net/DiogoSilva/ojnkbzbd/1/

当我调整 window 元素的大小时,会发生什么情况,元素向左移动,右边的限制大于左边的限制。

编辑:

已添加打印屏幕:http://s8.postimg.org/yo55yy1wl/crm_Bug.jpg

解决方案 1:

根据选择的答案,我能够实现我的设想,即让智能phone 磁贴居中,类似于 windows phone,并且在平板电脑屏幕和桌面屏幕上具有向左浮动的元素。

CSS:

@media only screen and (min-width: 400px) {
/* For tablets: */
.col-m-1 {width: 8.33%;}
.col-m-2 {width: 16.66%;}
.col-m-3 {width: 25%;}
.col-m-4 {width: 33.33%;}
.col-m-5 {width: 41.66%;}
.col-m-6 {width: 50%;}
.col-m-7 {width: 58.33%;}
.col-m-8 {width: 66.66%;}
.col-m-9 {width: 75%;}
.col-m-10 {width: 83.33%;}
.col-m-11 {width: 91.66%;}
.col-m-12 {width: 100%;}
.tile-M{
cursor:pointer;
height:110px;   
width:110px;  
float:left;
display:inline-block;
margin:5px 5px 5px 5px;
padding:2px;
}

.row-M{
width:auto;
padding:5px;
height:auto;
display:table; 
margin:0 auto;     

}

}
@media only screen and (min-width: 768px) {
/* For desktop: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
.tile-D{
cursor:pointer;
height:110px;   
width:110px;  
float:left;
display:inline-block;
margin:5px 5px 5px 5px;
padding:2px;
 }

  .row-D{
  width:auto;
  padding:5px;
  height:auto;
  display:table; 
  margin:0 auto;     

 }
 }
 [class*="col-"] {
 margin:0 auto;
 border: 1px solid red;
 }
.da{
background-color:#FF0000;

}

.db{background-color:#0101DF;}



.hide{
display:none;
}

.row:after {
content: "";
clear: both;
display: block;
}



body{
font-family: Calibri;
background: rgb(51,51,51);
color: #fff;
}

.row{

width:auto;
padding:5px;
height:auto;
display:table; 
margin:0 auto;     
text-align:center;


}

.tile{

cursor:pointer;
height:110px;   
width:110px;  
display: inline-block;
overflow: auto;
margin:5px 5px 5px 5px;
padding:2px;
text-align:left;



 }

 .amarelo{
 background:#DAA520;
 }

 .azul{
 background:#4682B4;
 }

.header {
background-color: #58D3F7;
color: #ffffff;
padding: 15px;
}

HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta http-equiv="Content-Type" content="text/html"/>
 <link rel="stylesheet" href="css/menu.css"/>
   <script type="text/javascript" src="javascript/jquery-1.8.3.min.js">     </script>
   <script type="text/javascript" src="javascript/mainMenu.js"></script>
 <title>CRM</title>
 </head>
<body>
<div class="header">
<h1 align="center">CRM</h1>
</div>
<div id="conteudo" class="col-12 col-m-12">
<div class="row row-D row-M"> 
<div id="group1">       
    <div id="tile" class="tile tile-D tile-M amarelo">
     <a href="Calendar/calendar.jsp"></a> 
    <span class="titulo">Calendar Placeholder</span><br/>
    </div>
    <div class="tile tile-D tile-M azul">
      <a href="http://whosebug.com/"></a> 
    <span class="titulo">Budget Placeholder</span><br/>
    </div>
    <div class="tile tile-D tile-M azul">
    <span class="titulo">Program X</span><br/>
    </div>
    <div class="tile tile-D tile-M azul">
    <span class="titulo">Program Y</span><br/>
    </div>
    </div>  

    <div id="group2"> 
    <div class="tile tile-D tile-M azul">
    <span class="titulo">Program W</span><br/>
    </div>
    <div class="tile tile-D tile-M azul">
    <span class="titulo">Program Z</span><br/>  </div>
</div>
</div>
</div>
</body>
</html>

这是你想要的吗?

.tile{
    cursor:pointer;
    height:110px;   
    width:110px;  
    display:inline-block;
    margin:5px 5px 5px 5px;
    padding:2px;
}

Demo

这个怎么样?

你会看到我做了以下更改:

.tile{
    cursor:pointer;
    height:110px;   
    width: 100%;
    float:left;
    margin:5px 0;
    padding:2px;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}

@media only screen and (min-width: 480px) {
    .tile {width: 48%; margin:5px 1%; padding: 10px;} 
}

@media only screen and (min-width: 600px) {
    .tile {max-width:31%;} 
}

@media only screen and (min-width: 768px) {
    .tile {max-width:23%;} 
}

请参阅 example,我已将红色背景添加到示例的 .row 容器中。我还从你的 HTML 中删除了 <div class="col-12 col-m-12">,因为我不确定这个容器在做什么,但你可能需要重新添加它,因为我只关注此示例的子容器堆叠.

看来你的 float:left; 正在破坏居中。

您可以尝试在 .row 上使用 text-align:center; 并在 .tile 上使用 display:inline-block;overflow:auto;text-align:left; 使您的方框居中:

.row{
    width:auto;
    padding:5px;
    height:auto;
    display:table; 
    margin:0 auto;     
    text-align:center;
}
.tile{
    cursor:pointer;
    height:110px;   
    width:110px;  
    display: inline-block;
    overflow: auto;
    margin:5px 5px 5px 5px;
    padding:2px;
    text-align:left;
}

请记住,新的 #groupN 总是会开始新的一行。

请看这个FIDDLE