วิธีสร้างการแสดง <ul> ในแถวแนวนอน


106

ฉันจะทำให้รายการของฉันปรากฏในแนวนอนติดต่อกันโดยใช้ CSS ได้อย่างไร

#div_top_hypers {
    background-color:#eeeeee;
    display:inline;      
}
#ul_top_hypers {
    display: inline;
}
<div id="div_top_hypers">
    <ul id="ul_top_hypers">
        <li>&#8227; <a href="" class="a_top_hypers"> Inbox</a></li>
        <li>&#8227; <a href="" class="a_top_hypers"> Compose</a></li>
        <li>&#8227; <a href="" class="a_top_hypers"> Reports</a></li>
        <li>&#8227; <a href="" class="a_top_hypers"> Preferences</a></li>
        <li>&#8227; <a href="" class="a_top_hypers"> logout</a></li>
    </ul>
</div>


คำถามที่ดี. ฉันคิดว่าสิ่งสำคัญคือการทำสิ่งนี้ให้สอดคล้องกับมาตรฐานเว็บล่าสุด
andy

คำตอบ:


132

โดยปกติรายการเป็นองค์ประกอบบล็อก เปลี่ยนให้เป็นองค์ประกอบแบบอินไลน์ผ่านdisplayคุณสมบัติ

ในรหัสที่คุณให้คุณต้องใช้ตัวเลือกบริบทเพื่อให้display: inlineคุณสมบัติใช้กับรายการแทนที่จะเป็นรายการเอง (การใช้display: inlineกับรายการโดยรวมจะไม่มีผล):

#ul_top_hypers li {
    display: inline;
}

นี่คือตัวอย่างการทำงาน:

#div_top_hypers {
    background-color:#eeeeee;
    display:inline;      
}
#ul_top_hypers li{
    display: inline;
}
<div id="div_top_hypers">
    <ul id="ul_top_hypers">
        <li>&#8227; <a href="" class="a_top_hypers"> Inbox</a></li>
        <li>&#8227; <a href="" class="a_top_hypers"> Compose</a></li>
        <li>&#8227; <a href="" class="a_top_hypers"> Reports</a></li>
        <li>&#8227; <a href="" class="a_top_hypers"> Preferences</a></li>
        <li>&#8227; <a href="" class="a_top_hypers"> logout</a></li>
    </ul>
</div>


2
ฉันยังได้เอฟเฟกต์นี้ด้วยการใช้ float ดังนั้นจึงรักษาลักษณะการบล็อกของรายการไว้
Joel

1
นั่นเป็นแนวทางที่น่าสนใจ แต่ฉันต้องบอกว่าอย่างไรก็ตามฉันคิดว่านั่นจะสร้างความยุ่งยากโดยไม่จำเป็นกับระยะขอบและด้วยเหตุนี้เนื่องจากคุณสามารถยกรายการออกจากโมเดลกล่องได้อย่างมีประสิทธิภาพ
hbw

1
@htw: คุณสามารถเตะมันกลับเข้าเกียร์ได้ด้วยโซลูชัน clearfix ใด ๆ
alex

2
คุณสามารถใช้ display: inline-block ได้ตลอดเวลาหากคุณต้องการคงลักษณะการบล็อกไว้ ... แม้ว่าจะไม่ได้รับการสนับสนุนอย่างสมบูรณ์ในขั้นตอนนี้ (ฉันเชื่อว่า Fx2 เป็นตัวการสำคัญ)
James B

17

คุณยังสามารถตั้งค่าให้ลอยไปทางขวา

#ul_top_hypers li {
    float: right;
}

สิ่งนี้ทำให้พวกเขายังคงเป็นระดับบล็อก แต่จะปรากฏในบรรทัดเดียวกัน


1
การลอยตัวไปทางขวาจะมีผลพิเศษ: มันจะสลับลำดับของพวกมันดังนั้นจากซ้ายไปขวาพวกมันจะอยู่อันดับสุดท้าย
Matthew James Taylor

อ่าใช่พวกเขาจะต้องย้อนกลับในมาร์กอัป (มากสำหรับการแยกเค้าโครง / มาร์กอัป!)
อเล็กซ์

11

ตั้งค่าdisplayคุณสมบัติเป็นinlineสำหรับรายการที่คุณต้องการใช้กับ มีคำอธิบายที่ดีในการแสดงรายการบนเป็นรายการนอกเหนือ


8

อย่างที่ @alex บอกคุณสามารถลอยได้ แต่ถ้าคุณต้องการให้มาร์กอัปเหมือนเดิมให้ลอยไปทางซ้าย!

#ul_top_hypers li {
    float: left;
}


4

เป็นคนอื่นได้กล่าวถึงคุณสามารถตั้งค่าliการdisplay:inline;หรือทางซ้ายหรือขวา นอกจากนี้คุณยังสามารถใช้กับไฟล์. ในตัวอย่างข้อมูลด้านล่างฉันได้เพิ่มเพื่อให้มีระยะห่างมากขึ้นfloatlidisplay:flex;uljustify-content:space-around

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ flexbox โปรดดูคู่มือฉบับสมบูรณ์นี้

#div_top_hypers {
    background-color:#eeeeee;
    display:inline;      
}
#ul_top_hypers {
    display: flex;
    justify-content:space-around;
    list-style-type:none;
}
<div id="div_top_hypers">
    <ul id="ul_top_hypers">
        <li>&#8227; <a href="" class="a_top_hypers"> Inbox</a></li>
        <li>&#8227; <a href="" class="a_top_hypers"> Compose</a></li>
        <li>&#8227; <a href="" class="a_top_hypers"> Reports</a></li>
        <li>&#8227; <a href="" class="a_top_hypers"> Preferences</a></li>
        <li>&#8227; <a href="" class="a_top_hypers"> logout</a></li>
    </ul>
</div>


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