ฉันจะตั้งศูนย์กลางองค์ประกอบสแปนในแนวนอนภายใน div ได้อย่างไร


123

ฉันกำลังพยายามจัดลิงก์สองลิงก์ "ดูเว็บไซต์" และ "ดูโครงการ" ภายใน div โดยรอบ ใครสามารถชี้ให้เห็นสิ่งที่ฉันต้องทำเพื่อให้งานนี้

JS Fiddle: http://jsfiddle.net/F6R9C/

HTML

<div>
  <span>
    <a href="#" target="_blank">Visit website</a>
    <a href="#">View project</a>
  </span>
</div>

CSS

div { background:red;overflow:hidden }

span a {
    background:#222;
    color:#fff;
    display:block;
    float:left;
    margin:10px 10px 0 0;
    padding:5px 10px
}


ต่อไปนี้เป็นวิธีง่ายๆสองวิธีในการจัดองค์ประกอบให้อยู่กึ่งกลางภายใน div แนวตั้งแนวนอนหรือทั้งสองอย่าง (CSS ล้วน): stackoverflow.com/a/31977476/3597276
Michael Benjamin

คำตอบ:


134

ทางเลือกหนึ่งคือให้<a>แสดงinline-blockแล้วนำไปใช้text-align: center;กับบล็อกที่มี (ลบลอยด้วย):

div { 
    background: red;
    overflow: hidden; 
    text-align: center;
}

span a {
    background: #222;
    color: #fff;
    display: inline-block;
    /* float:left;  remove */
    margin: 10px 10px 0 0;
    padding: 5px 10px
}

http://jsfiddle.net/Adrift/cePe3/


1
นี่เป็นเคล็ดลับสำหรับฉันในธีมที่ซับซ้อนพอสมควรฉันต้องการแฮ็คเล็กน้อย ลิงก์ไปยัง JSFiddle เพิ่มเติมนั้นยอดเยี่ยมมากที่อนุญาตให้ฉันทดสอบ ฉันแก้ไขรายการนี้เพื่อรวมเพื่อเปลี่ยน "overflow: hidden" เป็น "overflow: hidden;"
วาด ..

1
ดูเหมือนวิธีการแก้ปัญหาที่สะอาดมาก
Jim Aho

ดูคำตอบของ Ahmed Bahtity ด้านล่าง style = "text-align: center" จะกระชับกว่านี้มาก
Wallace Howery

142

อีกทางเลือกหนึ่งคือให้ช่วงdisplay:table;และอยู่ตรงกลางmargin:0 auto;

span {
display:table;
margin:0 auto;
}

4
น่าสนใจเสมอที่จะเห็นการแก้ปัญหาที่แตกต่างกันสำหรับปัญหาเดียวกัน
Jim Aho

รองรับเฉพาะเบราว์เซอร์ที่อัปเดตภายในสองสามปีที่ผ่านมา caniuse.com/#feat=css-table
CamHart

1
ทางออกที่ดีที่สุด IMO
Martijn Scheffer


8

การใช้inline-blockองค์ประกอบที่จะจัดกึ่งกลางและการใช้text-align:centerกับบล็อกหลักเป็นเคล็ดลับสำหรับฉัน

ทำงานได้แม้กระทั่งกับ<span>แท็ก


1

Spans อาจเป็นเรื่องยุ่งยากเล็กน้อยในการจัดการ หากคุณตั้งค่าความกว้างของช่วงการสอนคุณสามารถใช้ได้

margin: 0 auto;

เพื่อให้พวกเขาอยู่กึ่งกลาง แต่แล้วก็จบลงในบรรทัดที่แตกต่างกัน ฉันขอแนะนำให้ลองใช้วิธีอื่นในโครงสร้างของคุณ

นี่คือ jsfiddle ฉันแคม e ขึ้นโดยปิดด้านบนของหัวของฉัน: jsFiddle

แก้ไข:

คำตอบของ Adrift เป็นทางออกที่ง่ายที่สุด :)


0

ฉันคิดว่าคุณต้องการจัดกึ่งกลางให้อยู่ในบรรทัดเดียวไม่ใช่สองบรรทัดที่แยกจากกันตามเสียงซอของคุณ ในกรณีนี้ให้ลอง css ต่อไปนี้:

 div { background:red;
      overflow:hidden;
}
span { display:block;
       margin:0 auto;
       width:200px;
}
span a { padding:5px 10px;
         color:#fff;
         background:#222;
}

ฉันลบลูกลอยออกเนื่องจากคุณต้องการจัดกึ่งกลางจากนั้นทำให้สแปนล้อมรอบลิงก์ที่อยู่ตรงกลางโดยเพิ่มระยะขอบ: 0 อัตโนมัติให้กับพวกเขา สุดท้ายฉันเพิ่มความกว้างคงที่ในช่วง สิ่งนี้จะรวมลิงก์ไว้ที่บรรทัดเดียวภายใน div สีแดง


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