如何在图中垂直居中文本?

Posted

技术标签:

【中文标题】如何在图中垂直居中文本?【英文标题】:How to center vertically text in figure? 【发布时间】:2017-04-05 01:50:58 【问题描述】:

我想让两个文本都垂直居中,以分辨率为 720 像素的图像。 文本“serwis”现在没有垂直居中于图像。 我该怎么做? 这是一个演示codepen

html 代码

<section class="primary">
        <figure class="primary__figure">
            <img class="primary__img" src="http://www.linkpad.me/static/img/welcome/key.png" >
            <figcaption class="primary__caption">serwis</figcaption>
        </figure>

        <figure class="primary__figure">
            <img class="primary__img" src="http://www.linkpad.me/static/img/welcome/key.png" >
            <figcaption class="primary__caption primary__caption--secondary">częsci zamienne</figcaption>
        </figure>
    </section>

SCSS 代码

$font: 'Lato', sans-serif;
$break-medium: 45em;
@function calculateRem($size) 
    $remSize: $size / 16px;
    @return $remSize * 1rem;

@mixin font-size($size) 
    font-size: $size;
    font-size: calculateRem($size);

.primary 
    background: -webkit-linear-gradient(top, rgb(10,198,162) 0%,rgb(0,160,175) 100%);
    height: 500px;
    width: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    @media only screen and (min-width: $break-medium) 
        display: flex;
        flex-direction: row;
    

    &__figure 
        padding: 20px;
    

    &__img 
        width: 100px;
    

    &__caption 
        font-family: $font;
        text-transform: uppercase;
        font-weight: 700;
        @include font-size(30px);
        text-align: center;
        color: rgb(255,255,255);
        padding-top: 10px;
        @media only screen and (min-width: $break-medium) 
            float: right;
            @include font-size(40px);
            padding-left: 20px;
        

        &--secondary 
            width: 100px;
            flex-wrap: wrap;
            @media only screen and (min-width: $break-medium)               
                width: 200px;
            
        
    

【问题讨论】:

你能做一个sn-p吗? 这里是codepen.io/anon/pen/mOWMrm 【参考方案1】:

除了@Praveen Kumar 的回答,你还可以使用

display:table-cell;
vertical-align:middle;

当然父母需要有

display:table;

【讨论】:

【参考方案2】:

您在&lt;figcaption&gt; 中有float: right。浮动元素不能用于vertical-align。所以,你需要这样做:

.primary__caption, .primary__img 
  float: none;
  display: inline-block;
  vertical-align: middle;

预览

CodePen:http://codepen.io/anon/pen/NbpvyL

【讨论】:

以上是关于如何在图中垂直居中文本?的主要内容,如果未能解决你的问题,请参考以下文章

Word文本框里面的文字如何让它垂直居中?

如何垂直居中 UITextField 文本?

web前端技巧-文本如何垂直居中?多行文本如何实现上下居中?

如何在textarea中垂直居中文本?

如何在 div 块内居中文本(水平和垂直)?

css如何设置文本在li元素中垂直居中显示