ฉันจะจัดแนวสิ่งภายในแท็ก span ได้อย่างไร


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
Excelent! ใช้งานได้กับแท็กประเภทใดก็ได้ ในกรณีของฉันทำงานเพื่อ <img>
Felipe Conde

21
ปัญหาคือเมื่อข้อความห่อ ด้วยสองบรรทัดช่วงนี้จะแสดงผลด้วยความสูง 100px
Norberto Yoan

หากข้อความของคุณปรากฏอยู่ให้ลองคำตอบของฉัน @NorbertoYoan
Hashbrown

เหมือนกันสำหรับ @Sitit (ทำซ้ำเนื่องจากมีปัญหากับความคิดเห็นของ 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 คืออะไร
Alberto Acuña

39

นี่เป็นวิธีที่ง่ายที่สุดในการทำหากคุณต้องการหลายบรรทัด ห่อคุณspan'd ข้อความในอีกและระบุความสูงด้วยspan line-heightเคล็ดลับที่จะหลายบรรทัดจะถูกรีเซ็ตภายใน'sspanline-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*/
}

การสาธิต

แน่นอนด้านนอกspanอาจเป็นdivหรือ whathaveyou


2
spans เช่นองค์ประกอบแบบอินไลน์อื่น ๆสามารถมีองค์ประกอบแบบอินไลน์ HTML ใด ๆ โดยไม่คำนึงถึงฉันเขียนว่าtextvalignmiddleอาจเป็นdivสิ่งที่จำเป็นมาก (และคุณสามารถตั้งค่าเป็นdisplay:inline;หากคุณไม่ชอบที่จะใช้spans)
Hashbrown

ฉันหมายความว่าพวกเขาไม่ควรมี พวกเขามีไว้สำหรับข้อความ อื่นใช้ div
JorgeeFG

3
spanเป็นคอนเทนเนอร์แบบอินไลน์ทั่วไปสำหรับ html และไม่ได้เป็นคำแนะนำที่เป็นข้อความเท่านั้น `มันสามารถใช้เพื่อจัดกลุ่มองค์ประกอบเพื่อการจัดแต่งทรงผม ... ' ผมขอแนะนำให้อ่านสเปคก่อนที่จะผลักดันมาตรฐานการเข้ารหัสส่วนบุคคลของคุณกับคนอื่น ๆ ที่ระบุว่าพวกเขาเป็นจริง
Hashbrown

3
ไม่ว่าจะด้วยวิธีใดบทสนทนานี้ไม่สร้างสรรค์ในแง่เทคนิคสำหรับคำถามและไม่ใช่ความคิดเห็นใน SO ดังนั้น
Hashbrown

ทำงานให้ฉันด้วย ใช้องค์ประกอบที่แตกต่างจาก span
chocolata


5

ฉันต้องการสิ่งนี้สำหรับการเชื่อมโยงดังนั้นฉันจึงใส่เครื่องหมายจุดด้วย a-tag และ div จากนั้นจัดกึ่งกลางแท็กให้อยู่ตรงกลาง

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 ภาพกึ่งกลางแนวตั้งและข้อความ

ฉันได้สร้างตัวอย่างหนึ่งสำหรับศูนย์ภาพแนวตั้งและข้อความฉันยังมีการทดสอบเกี่ยวกับ firefox, chrome, Safari, Internet explorer 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 แนวตั้งไม่ได้ทำตามที่คุณคาดหวัง บทความนี้จะอธิบาย 2 วิธีในการจัดแนวองค์ประกอบโดยใช้ css


1

ตั้ง padding-top ให้เป็นค่าที่เหมาะสมในการกด x ลงจากนั้นลบค่าที่คุณมีสำหรับ padding-top จากความสูง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.