스팬 태그 안에 무언가를 세로로 정렬하려면 어떻게합니까?


144

범위 중간에 "x"를 세로로 정렬하려면 어떻게합니까?

.foo {
    height: 50px;
    border: solid black 1px;
    display: inline-block;
    vertical-align: middle;
}

<span class="foo">
   x
</span>

답변:


218

line-height:50px;높이 대신 사용하십시오 . 그 트릭을해야합니다;)


1
엑설런트! 모든 유형의 태그에서 작동합니다. 제 경우에는 <img>로 일했습니다.
Felipe Conde

21
문제는 텍스트가 줄 바꿈되는 것입니다. 두 줄 로이 범위는 100px 높이로 렌더링됩니다.
Norberto Yoan

당신의 텍스트 줄 바꿈 내 대답을 시도 @NorbertoYoan
Hashbrown

@Sumit에 대한 ditto ( SO의 의견으로 인해 복제 됨 )
Hashbrown

이것은 가장 많이 투표 된 답변이되어서는 안됩니다. 솔루션에 따라 내용에 따라 원하지 않는 다른 결과가 나올 수 있습니다.
rafaelmorais

113

주의하십시오 line-height당신이 긴 문장이있는 경우 접근 방식은 실패 할 span충분한 공간이 아니기 때문에 라인을 중단한다. 이 경우 속성에 지정된 N 픽셀의 높이와 간격이있는 두 개의 선이 있습니다.

반응 형 웹 응용 프로그램에서 작동하는 세로 중앙에 텍스트가있는 이미지를 오른쪽에 표시하려고 할 때 문제가 발생했습니다. 기본적으로 Eric Nickus와 Felipe Tadeo가 제안한 접근 방식을 사용합니다.

달성하려는 경우 :

데스크탑

이:

변하기 쉬운

.container {
    background: url( "https://i.imgur.com/tAlPtC4.jpg" ) no-repeat;
    display: inline-block;
    background-size: 40px 40px; /* image's size */
    height: 40px; /* image's height */
    padding-left: 50px; /* image's width plus 10 px (margin between text and image) */
}

.container span {
    height: 40px; /* image's height */
    display: table-cell;
    vertical-align: middle;
}
<span class="container">
    <span>This is a centered sentence next to an image</span>
</span>


dyanmic 높이는 것입니다
알베르토 아쿠

39

여러 줄이 필요한 경우 가장 간단한 방법입니다. span텍스트를 다른 것으로 감싸고 span높이를 지정하십시오 line-height. 다중 라인 트릭 내부 리셋되어 span"들 line-height.

<span class="textvalignmiddle"><span>YOUR TEXT HERE</span></span>
.textvalignmiddle {
    line-height: /*set height*/;
}

.textvalignmiddle > span {
    display: inline-block;
    vertical-align: middle;
    line-height: 1em; /*set line height back to normal*/
}

데모

물론 외부는 spandiv또는 whathaveyou을


2
span다른 인라인 요소와 마찬가지로 HTML 인라인 요소를 포함 할 수 있습니다 . 어쨌든 필자는 필 textvalignmiddledivdisplay:inline;spans
요한

나는 그들이 없어서는 안된다는 것을 의미합니다. 텍스트를 포함하기위한 것입니다. 그렇지 않으면 div를 사용하십시오.
JorgeeFG

3
spanhtml 의 일반 인라인 컨테이너 이며 텍스트 전용 힌트 만 제공하지는 않습니다. ` 스타일링 목적으로 요소 를 그룹화하는 데 사용할 수 있습니다 ... 본인의 개인 코딩 표준을 사실로 진술하기 전에 개인 코딩 표준을 추진하기 전에 사양을 읽어보십시오.
Hashbrown

3
어느 쪽이든,이 대화의 라인은 질문에 대한 기술적 의미에서 건설적인 것이
아니며

나에게도 효과가 있습니다. span과 다른 요소를 사용했습니다.
chocolata

27

플렉스 박스 방식 :

.foo {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 50px;
}

.foo스팬 display: flex-inline이 더 잘 맞을 것이기 때문에
koala

7
"인라인 플렉스"를 의미 했습니까?
Tim Gerhard

5

링크 에이 기능이 필요했기 때문에 범위를 a-tag와 div로 감싸고 span 태그 자체를 중앙에 배치했습니다.

HTML

<div>
    <a class="tester" href="#">
        <span>Home</span>
    </a>
</div>

CSS

.tester{
    display: inline-block;
    width: 9em;
    height: 3em;
    text-align: center;
}
.tester>span{
    position: relative;
    top: 25%;
}

이것에 감사드립니다 .CSS가 엉망입니다. 여기서 귀하의 답변을 발견했을 때 요소를 수직으로 배치하려고 하루 종일 보냈습니다. 당신은 생명의 은인입니다!
Todd Nestor

5

CSS 세로 중심 이미지 및 텍스트

나는 수직 이미지 센터와 텍스트에 대한 하나의 데모를 만들었고 파이어 폭스, 크롬, 사파리, 인터넷 익스플로러 9 및 8에서도 테스트했습니다.

매우 짧고 쉬운 CSS와 HTML입니다. 아래 코드를 확인하면 screenshort에서 출력을 찾을 수 있습니다.

HTML

<div class="frame">
    <img src="capabilities_icon1.png" alt="" />
</div>

CSS

  .frame {
        height: 160px;      
        width: 160px;
        border: 1px solid red;
        white-space: nowrap;
        text-align: center; margin: 1em 0;
    }

    .frame::before {
        display: inline-block;
        height: 100%;
        vertical-align: middle;
        content:"";
    }

    img {
        background: #3A6F9A;
        vertical-align: middle;
    }

출력 이미지 설명을 여기에 입력하십시오


2

이것은 나를 위해 작동합니다 (Keltex는 동일하다고 말했습니다)

.foo {
height: 50px;
...
}
.foo span{
vertical-align: middle; 
}

<span class="foo"> <span>middle!</span></span>

1

css 세로 맞춤 속성은 예상치 못한 일을하지 않습니다. 이 기사에서는 CSS를 사용하여 요소를 세로로 정렬하는 두 가지 방법에 대해 설명합니다.


1

padding-top을 적절한 값으로 설정하여 x를 아래로 밀고 padding-top의 값을 높이에서 뺍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.