【发布时间】:2018-07-10 05:10:51
【问题描述】:
我想将类按钮的内容水平和垂直对齐到中间。我为此使用了 margin: auto 属性,但它垂直对齐文本而不是水平对齐。我知道可以通过使用text-align 属性或display:flex 使其有效。但我只需要在这里说明为什么margin: auto 属性不起作用。我在下面添加sn-p。谢谢进步。
注意这里它垂直工作正常,问题不能水平工作。那么它如何与不能垂直工作重复?
#main-body{
width: 100%;
height: 95%;
box-sizing: border-box;
background: yellow;
}
#title-container{
width:100%;
height: 10%;
background: red;
}
#button-container{
width:100%;
height: 10%;
background-color: blue;
}
#data-container{
padding: 5px;
box-sizing: border-box;
background-color: blueviolet;
}
.btn{
width:25%;
height: 100%;
border: 1px solid black;
/*margin:auto;*/
float:left;
box-sizing: border-box;
/*margin:0px;*/
}
.btn-text{
margin:auto;
/*float:none;*/
color: #ffffff;
}
<body>
<div id="main-body">
<div id="title-container"></div>
<div id="button-container">
<div id="home-button" class="btn">
<p class="btn-txt">Home</p>
</div>
<div id="update-button" class="btn">
<p class="btn-txt">Update</p>
</div>
<div id="delete-button" class="btn">
<p class="btn-txt">Create New</p>
</div>
<div id="logout-button" class="btn">
<p class="btn-txt">Log Out</p>
</div>
</div>
<div id="data-container"></div>
</div>
</body>
我知道可以使用 text-align:center;
#main-body{
width: 100%;
height: 95%;
box-sizing: border-box;
background: yellow;
}
#title-container{
width:100%;
height: 10%;
background: red;
}
#button-container{
width:100%;
height: 10%;
background-color: blue;
text-align:center;
}
#data-container{
padding: 5px;
box-sizing: border-box;
background-color: blueviolet;
}
.btn{
width:25%;
height: 100%;
border: 1px solid black;
/*margin:auto;*/
float:left;
box-sizing: border-box;
/*margin:0px;*/
}
.btn-text{
margin:auto;
/*float:none;*/
color: #ffffff;
}
<body>
<div id="main-body">
<div id="title-container"></div>
<div id="button-container">
<div id="home-button" class="btn">
<p class="btn-txt">Home</p>
</div>
<div id="update-button" class="btn">
<p class="btn-txt">Update</p>
</div>
<div id="delete-button" class="btn">
<p class="btn-txt">Create New</p>
</div>
<div id="logout-button" class="btn">
<p class="btn-txt">Log Out</p>
</div>
</div>
<div id="data-container"></div>
</div>
</body>
它也适用于 display:flex;
#main-body{
width: 100%;
height: 95%;
box-sizing: border-box;
background: yellow;
}
#title-container{
width:100%;
height: 10%;
background: red;
}
#button-container{
width:100%;
height: 10%;
background-color: blue;
display:flex;
align-content:center;
justify-content:center;
}
#data-container{
padding: 5px;
box-sizing: border-box;
background-color: blueviolet;
}
.btn{
width:25%;
height: 100%;
border: 1px solid black;
/*margin:auto;*/
float:left;
box-sizing: border-box;
/*margin:0px;*/
display:flex;
align-content:center;
justify-content:center;
}
.btn-text{
margin:auto;
/*float:none;*/
color: #ffffff;
}
<body>
<div id="main-body">
<div id="title-container"></div>
<div id="button-container">
<div id="home-button" class="btn">
<p class="btn-txt">Home</p>
</div>
<div id="update-button" class="btn">
<p class="btn-txt">Update</p>
</div>
<div id="delete-button" class="btn">
<p class="btn-txt">Create New</p>
</div>
<div id="logout-button" class="btn">
<p class="btn-txt">Log Out</p>
</div>
</div>
<div id="data-container"></div>
</div>
</body>
【问题讨论】:
-
@caramba 这里的问题正好相反。在这段代码上它垂直工作正常
-
@ismail 但这里只是 margin:auto;不是边距:0 自动;
-
margin:auto 或
margin: 0 auto;之间没有区别尝试在<p>标签上添加宽度并检查margin:0 auto;删除顶部底部边距也没有别的