แทรกภาพหลังแต่ละรายการ


144

อะไรจะเป็นวิธีที่ดีที่สุดในการแทรกภาพเล็ก ๆ หลังจากแต่ละองค์ประกอบของรายการ ฉันลองใช้คลาสหลอก แต่มีบางอย่างไม่ถูกต้อง ...

ul li a:after {display: block;
width: 3px;
height: 5px;
background: url ('../images/small_triangle.png') transparent no-repeat;}

ขอบคุณสำหรับความช่วยเหลือใด ๆ !

คำตอบ:


327

วิธีที่ง่ายกว่าที่จะทำคือ:

ul li:after {
    content: url('../images/small_triangle.png');
}

และยังมีปัญหาบางอย่างกับสิ่งนี้ใน firefox
Johnny_D

204
พึงระวังว่า IE7 แย่จัง
Big McLargeHuge

@RichardGarside โดย "doctype" คุณหมายถึงอะไรเช่นนี้ที่ด้านบนหรือไม่ <!DOCTYPE html>
Joe Morano

ปัญหาของวิธีนี้คือคุณไม่สามารถให้ข้อความสำรองสำหรับภาพซึ่ง (ขึ้นอยู่กับรูปที่ใช้) อาจลดความสามารถในการเข้าถึง
Damien

2
แต่คุณไม่สามารถให้ความสูง / ความกว้างกับภาพโดยใช้สิ่งนี้
Faisal Ashfaq

82

ลองสิ่งนี้:

ul li a:after {
    display: block;
    content: "";
    width: 3px;
    height: 5px;
    background: transparent url('../images/small_triangle.png') no-repeat;
}

คุณต้องcontent: "";ประกาศเพื่อให้เนื้อหาองค์ประกอบที่สร้างขึ้นแม้ว่าเนื้อหานั้นจะเป็น "ไม่มีอะไร"

นอกจากนี้ฉันได้แก้ไขไวยากรณ์ / การเรียงลำดับการbackgroundประกาศของคุณ


13
ฉันชอบเทคนิคนี้มากกว่าเทคนิคที่เรียบง่ายกว่าเพราะมันให้คุณควบคุมขนาดของภาพโดยใช้ขนาดพื้นหลัง - ภาพ
Andrew Hedges

2
คุณต้องการสิ่งนี้หากคุณต้องการจัดกึ่งกลางภาพในแนวนอน คุณไม่สามารถจัดตำแหน่งได้left: 50%เพราะจะไม่จัดแนวตรงกลาง ใช้left: 0; width: 100%และตั้งค่าตำแหน่งพื้นหลังเป็น 50% แทน ทำงานได้ดีสำหรับฉัน ขอบคุณสำหรับเคล็ดลับเกี่ยวกับcontentคุณลักษณะที่จำเป็น
ygoe

1
นี่เป็นคำตอบที่ดีกว่าและถ้าคุณใช้ bootstrap คุณอาจต้องใช้ display: inline-block มิฉะนั้นภาพจะอยู่ภายใต้รายการ li แต่ละรายการและไม่อยู่ทางขวาหรือซ้าย
Marvel Moe

1
ดูดี แต่การแสดงภาพอินไลน์ (หลังจาก "li") ควรเป็น "display: inline-block"
Deadpool

และยังbackground-size: container
เจอร์

11

สำหรับการรองรับ IE8 คุณสมบัติ "เนื้อหา" ต้องไม่ว่างเปล่า

เพื่อหลีกเลี่ยงสิ่งนี้ฉันได้ทำสิ่งต่อไปนี้:

.ul li:after {
    content:"icon";
    text-indent:-999em;
    display:block;
    width:32px;
    height:32px;
    background:url(../img/icons/spritesheet.png) 0 -620px no-repeat;
    margin:5% 0 0 45%;
}

หมายเหตุ: สิ่งนี้ใช้ได้กับภาพสไปรต์ด้วย


4

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

ul li:after {
    content: url('../images/small_triangle.png');
}


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