การจัดตำแหน่งแนวดิ่ง CSS ขององค์ประกอบแบบอินไลน์ / inline-block


142

ฉันพยายามที่จะได้รับหลายinlineและส่วนประกอบในแนวตั้งในinline-block divทำไมspanในตัวอย่างนี้ถึงยืนยันว่าถูกผลักลงมา? ฉันได้พยายามทั้งสองvertical-align:middle;และvertical-align:top;แต่ไม่มีอะไรเปลี่ยนแปลง

HTML:

<div>
  <a></a><a></a>
  <span>Some text</span>
</div>

CSS:

a {
    background-color:#FFF;
    width:20px;
    height:20px;
    display:inline-block;
    border:solid black 1px;
}

div {
    background:yellow;
    vertical-align:middle;
}
span {
    background:red;
}

ผลลัพธ์:
ป้อนคำอธิบายรูปภาพที่นี่

ซอ


โปรดทราบว่าสิ่งนี้จะไม่เกิดขึ้นหาก<a>องค์ประกอบมีข้อความอยู่ภายในพวกเขาเห็นลิงก์นี้
S.Serpooshan

คำตอบ:


270

vertical-alignนำไปใช้กับองค์ประกอบที่ถูกจัดแนวไม่ใช่องค์ประกอบหลัก หากต้องการจัดแนวแนวตั้งของ div ให้ทำดังนี้:

div > * {
    vertical-align:middle;  // Align children to middle of line
}

ดู: http://jsfiddle.net/dfmx123/TFPx8/1186/

หมายเหตุ : vertical-alignสัมพันธ์กับบรรทัดข้อความปัจจุบันไม่ใช่ความสูงเต็มของพาเรนdivต์ ถ้าคุณอยากให้ผู้ปกครองdivที่จะสูงและยังมีองค์ประกอบเป็นศูนย์กลางในแนวตั้ง, ตั้งdivของสถานที่ให้บริการแทนของline-height heightติดตามลิงก์jsfiddleด้านบนเพื่อดูตัวอย่าง


divนี้หยุดทำงานหากคุณระบุความสูงสำหรับด้านนอก
Abhranil Das

4
@AbhranilDas vertical-alignสัมพันธ์กับบรรทัดข้อความปัจจุบันไม่ใช่องค์ประกอบหลัก เพื่อให้งานนี้เท่าที่คุณต้องการตั้ง div ที่เป็นแทนของline-height height
Diego


5

เพียงแค่ลอยองค์ประกอบทั้งสองไปทางซ้ายก็จะได้ผลลัพธ์เดียวกัน

div {
background:yellow;
vertical-align:middle;
margin:10px;
}

a {
background-color:#FFF;
width:20px;
height:20px;
display:inline-block;
border:solid black 1px;
float:left;
}

span {
background:red;
display:inline-block;
float:left;
}

ปัญหาของการลอยตัวไปทางซ้ายคือพวกมันจะพันไปบรรทัดถัดไปเมื่อเบราว์เซอร์เล็กเกินไป บางครั้งคุณต้องมีรายการที่จะอยู่ในบรรทัดแม้จะเกินขอบเขตเบราว์เซอร์และinline-blockเป็นวิธีแก้ปัญหาเท่านั้น
Jake Wilson

ในขณะที่ปัญหาการห่ออาจอยู่ในปัญหาฉันจะบอกว่านี่เป็นทางออกที่ดีมากสำหรับกรณีเหล่านั้นที่การห่อไม่เป็นไร มันสวยงามพูดถึงจิตวิญญาณของเอฟเฟกต์ที่ต้องการและไม่ต้องการการดัดแปลงกับผู้ปกครอง
Crispen Smith

1

สำหรับการปรับตำแหน่งของinline-blockรายการอย่างละเอียดให้ใช้ด้านบนและซ้าย:

  position: relative;
  top: 5px;
  left: 5px;

ขอบคุณCSS-Tricks !


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