简体   繁体   English

如何在框/容器中将文本水平和垂直居中对齐?

[英]How to center align text horizontally and VERTICALLY in a box/container?

I am trying to create a web page that looks like this: 我正在尝试创建一个如下所示的网页:

Download page 下载页面

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-heightvertical-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM