[英]How to center align text horizontally and VERTICALLY in a box/container?
I am trying to create a web page that looks like this: 我正在尝试创建一个如下所示的网页:
I worked with bootstrap and created rows to align three download options next to each other. 我使用了引导程序并创建了行,以使三个下载选项彼此相邻对齐。 I then created containers in these rows (to replicate the boxes) and center aligned the text and download icon horizontally. 然后,我在这些行中创建了容器(以复制框),并使文本居中对齐并水平下载图标。 Unfortunately, I am not sure how to center align the text and icon vertically in a container. 不幸的是,我不确定如何在容器中垂直对齐文本和图标。 Can anyone help out? 有人可以帮忙吗? My current design looks like this: 我当前的设计如下所示:
My code is the following: 我的代码如下:
.download { font: Verdana, Helvetica, Arial, sans-serif; color: RGB(112, 112, 112); font-size: 18px; text-align: center; padding: 5px; } .download:hover { color: rgb(227, 111, 30); cursor: pointer; } #download-icon { font-size: 80px; float: left; } .container-border { border-style: solid; border-color: rgb(0, 143, 197); padding: 5px; min-height: 120px; }
<div class="container"> <div class="row"> <div class="col-xs-4"> <div class="container-border"> <i class="material-icons" style="color:rgb(0,143,197);" id="download-icon">file_download</i> <p class="download"> Download list of charities that have <b> not submitted </b> data yet </p> </div> </div> </div> </div>
Edit: Thanks everyone for their answers! 编辑:谢谢大家的回答! I really appreciate them. 我真的很感激他们。 For me it worked by simply adjusting my content-border class with: 对我来说,它可以通过以下方式简单地调整我的content-border类:
.container-border {
border-style: solid;
border-color: rgb(0, 143, 197);
padding: 5px;
min-height: 120px;
display: flex;
align-items: center;
/* vertical center */
}
I would use a flexbox
for the container-border
class. 我会在container-border
类中使用flexbox
。 In that case you can remove the floats. 在这种情况下,您可以卸下浮子。
.download { font: Verdana, Helvetica, Arial, sans-serif; color: RGB(112, 112, 112); font-size: 18px; padding: 5px; text-align: center; } .download:hover { color: rgb(227, 111, 30); cursor: pointer; } #download-icon { font-size: 80px; } .container-border { border-style: solid; border-color: rgb(0, 143, 197); padding: 5px; min-height: 120px; display: flex; align-items: center; /* vertical center */ }
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <div class="container"> <div class="row"> <div class="col-xs-4"> <div class="container-border"> <i class="material-icons" style="color:rgb(0,143,197);" id="download-icon">file_download</i> <p class="download"> Download list of charities that have <b> not submitted </b> data yet </p> </div> </div> </div> </div>
You don't need to complicate stuff using FlexBox. 您无需使用FlexBox使内容复杂化。 Please use something like this, a table layout or line-height
and vertical-align
combination: 请使用以下格式,表格布局或line-height
和vertical-align
组合:
.download { font: Verdana, Helvetica, Arial, sans-serif; color: RGB(112, 112, 112); font-size: 18px; text-align: center; padding: 5px; } .download:hover { color: rgb(227, 111, 30); cursor: pointer; } #download-icon { font-size: 80px; vertical-align: middle; line-height: 120px; } #download-icon + span { vertical-align: middle; line-height: 1; } .container-border { border-style: solid; border-color: rgb(0, 143, 197); padding: 5px; min-height: 120px; }
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <div class="container"> <div class="row"> <div class="col-xs-4"> <div class="container-border"> <i class="material-icons" style="color:rgb(0,143,197);" id="download-icon">file_download</i> <span class="download"> Download list of charities that have <b> not submitted </b> data yet </span> </div> </div> </div> </div>
Preview 预习
add display: flex;align-items: center;
添加display: flex;align-items: center;
to .container-border
到.container-border
.container-border{
border-style:solid;
border-color: rgb(0,143,197);
padding: 5px;
min-height:120px;
display: flex;
align-items: center;
}
Why not just set a padding: 为什么不只设置填充:
.download {
font: Verdana,Helvetica,Arial,sans-serif;
color: RGB(112,112,112);
font-size:18px;
text-align:center;
/* padding: 5px; <- removed */
padding: 12px 5px 5px 5px; /* New */
}
#download-icon {
font-size:80px;
float:left;
padding-top: 10px; /* New */
}
.container-border {
border-style:solid;
border-color: rgb(0,143,197);
padding: 5px;
min-height:120px;
width: 300px; /* New*/
}
Demo: 演示:
.download { font: Verdana,Helvetica,Arial,sans-serif; color: RGB(112,112,112); font-size:18px; text-align:center; /* padding: 5px; <- removed */ padding: 12px 5px 5px 5px; /* New */ } .download:hover { color: rgb(227,111,30); cursor: pointer; } #download-icon { font-size:80px; float:left; padding-top: 10px; /* New */ } .container-border { border-style:solid; border-color: rgb(0,143,197); padding: 5px; min-height:120px; width: 300px; /* New*/ }
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <div class="container"> <div class="row"> <div class="col-xs-4"> <div class="container-border"> <i class="material-icons" style="color:rgb(0,143,197);" id="download-icon">file_download</i> <p class="download"> Download list of charities that have <b> not submitted </b> data yet </p> </div> </div> </div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.