เหตุใดขอบไม่: จัดกึ่งกลางภาพโดยอัตโนมัติ


95
<html>
<head>
<title>Test</title>
</head>
<body>
    <div>
        <img src="queuedError.jpg" style="margin:auto; width:200px;" />
    </div>
</body>
</html>

divขยายถึง 100% ตามที่ควร แต่ภาพที่ไม่ได้อยู่ตรงกลางของตัวเอง ทำไม?

คำตอบ:


201

เพราะภาพของคุณเป็นองค์ประกอบแบบอินไลน์บล็อก คุณสามารถเปลี่ยนเป็นองค์ประกอบระดับบล็อกได้ดังนี้:

<img src="queuedError.jpg" style="margin:auto; width:200px;display:block" />

และมันจะอยู่ตรงกลาง


ส่งความรักจากยูเครนถึงคุณในช่วงเวลาที่ยากลำบากนี้เพื่อขอบคุณคำตอบของคุณ นี่คือกุญแจสำคัญdisplay:block
rotimi-best

10

คุณต้องแสดงเป็นระดับบล็อก

img {
   display: block;
   width: auto;
   margin: auto;
}

เหตุใดจึงวางแนวนอนเท่านั้นและไม่ใช่แนวตั้ง
Mr Bell

4
การจัดแนวแนวตั้งไม่ตรงไปตรงมาอย่างที่คุณคาดหวัง ทุกอย่างเป็นไปตามข้อกำหนดของ CSS - ดูบทความสั้น ๆ เกี่ยวกับเรื่องนี้ - phrogz.net/css/vertical-align/index.html
TheDeadMedic

8

เพิ่ม style="text-align:center;"

ลองใช้รหัสด้านล่าง

<html>
<head>
<title>Test</title>
</head>
<body>
    <div style="text-align:center;vertical-align:middle;">
        <img src="queuedError.jpg" style="margin:auto; width:200px;" />
    </div>
</body>
</html>

ฉันไม่คิดว่าคำตอบของคุณไม่ถูกต้อง แต่ของคุณไม่มีคำอธิบายใด ๆ เกี่ยวกับประเภทการแสดงผล
Joe Phillips

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

2

ฉันรู้ว่านี่เป็นโพสต์เก่า แต่ต้องการแบ่งปันวิธีที่ฉันแก้ไขปัญหาเดียวกัน

ภาพของฉันได้รับการสืบทอดการลอย: เหลือจากคลาสแม่ โดยการตั้งค่า float: none ฉันสามารถสร้าง margin: 0 auto และ display: block ทำงานได้อย่างถูกต้อง หวังว่ามันอาจช่วยใครบางคนได้ในอนาคต


1

ฉันพบว่าฉันต้องกำหนดความกว้างเฉพาะสำหรับวัตถุไม่เช่นนั้นจะไม่มีสิ่งอื่นใดที่จะทำให้มันอยู่ตรงกลาง ความกว้างสัมพัทธ์ไม่ทำงาน


2
สิ่งนี้ไม่ได้ให้คำตอบสำหรับคำถาม จะวิจารณ์หรือการร้องขอคำชี้แจงจากผู้เขียนแสดงความคิดเห็นด้านล่างโพสต์ของพวกเขา - คุณสามารถแสดงความคิดเห็นในโพสต์ของคุณเองและเมื่อคุณมีเพียงพอชื่อเสียงคุณจะสามารถที่จะแสดงความคิดเห็นในโพสต์ใด
Kristijan Iliev

ประเด็นของฉันคือในขณะที่หลายคนให้คำตอบว่าใช้ได้ผลก็ต่อเมื่อรหัสมีคำจำกัดความเฉพาะของความกว้างของวัตถุ เช่น <img [... ฯลฯ ฯลฯ , ... ] style = "display: block; margin: auto; width: 200px" /> จะใช้ได้ แต่อย่าใช้ขนาดที่สัมพันธ์กันเช่น "width : 50% ". แน่นอนว่าถ้าคุณใช้ "width: 100%" การจัดกึ่งกลางก็ไม่ใช่ปัญหาเพราะจะไม่มีระยะขอบทางซ้ายหรือขวาของวัตถุ
Catwoman



0

ฉันพบ ... ระยะขอบ: 0 อัตโนมัติ; เหมาะกับฉัน แต่ฉันยังเห็นว่ามันไม่ได้ผลเนื่องจากคลาสถูกทรัมป์โดยความเฉพาะเจาะจงอื่นที่มี ... ลอย: ซ้าย; ดังนั้นโปรดระวังว่าคุณอาจต้องเพิ่ม ... float: none; สิ่งนี้ใช้ได้ผลในกรณีของฉันขณะที่ฉันกำลังเขียนโค้ดแบบสอบถามสื่อ

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