จะใส่รูปภาพใน div ด้วย CSS ได้อย่างไร?


97

ฉันต้องการให้ภาพทั้งหมดของฉันอยู่ใน CSS (วิธีเดียวที่ฉันรู้ว่าจะใส่เป็นภาพพื้นหลังได้อย่างไร)

แต่ปัญหาในการแก้ปัญหานี้คือคุณไม่สามารถปล่อยให้ div ใช้ขนาดของรูปภาพได้

คำถามของฉันคืออะไรคือวิธีที่ดีที่สุดในการเทียบเท่า <div><img src="..." /></div>ใน CSS


6
พื้นหลังไม่ใช่ทางเลือกอื่น: ต้องใช้พื้นหลังหากภาพไม่เกี่ยวข้องกับความเข้าใจของเนื้อหามิฉะนั้นควรเป็นแบบปกติ<img>
Fabrizio Calderan

นอกเหนือจากการหาขนาดของภาพด้วยตนเองและให้ div เท่ากันแล้วฉันไม่คิดว่าคุณจะทำได้
Jawad

วิธีที่ถูกต้อง: <img>หากรูปภาพมีความเกี่ยวข้องโดย<div>มีพื้นหลังหากรูปภาพเป็นสิ่งที่น่าสนใจเท่านั้น <img>ถ้าขนาดของภาพที่เป็นตัวแปรสำคัญและคุณควรใช้ ทำไมคุณถึงต้องการใช้พื้นหลัง?
Alessandro Pezzato

คำตอบ:


137

คำตอบนี้โดยJaap :

<div class="image"></div>​

และใน CSS:

div.image {
   content:url(http://placehold.it/350x150);
}​

คุณสามารถลองได้ที่ลิงค์นี้: http://jsfiddle.net/XAh2d/

นี่คือลิงค์เกี่ยวกับเนื้อหา css http://css-tricks.com/css-content/

สิ่งนี้ได้รับการทดสอบบน Chrome, firefox และ Safari (ฉันใช้ Mac ดังนั้นหากมีใครได้ผลลัพธ์ใน IE บอกให้ฉันเพิ่ม)


สิ่งนี้ไม่ได้ทำให้divการถ่ายภาพมีขนาดเท่ากันอย่างที่คุณถาม ดูว่าจะเกิดอะไรขึ้นถ้าคุณเพิ่มเส้นขอบให้กับ div: jsfiddle.net/XAh2d/6ไม่มีอะไรเพราะ div มีขนาด 0x0 และซ่อนอยู่หลังภาพ
Alessandro Pezzato

คุณควรลบ: ก่อนหน้านี้ฉันแก้ไขคำตอบของฉัน ตรวจสอบได้ที่นี่jsfiddle.net/2pFhc
Dany Y

2
@ DanyY เดี๋ยวก่อนคุณบอกว่าคุณอัปเดตซอ แต่ฉันเห็น แต่ขอบสีเขียวที่นั่น: jsfiddle.net/2pFhcทำไม?
Sharikov Vladislav

3
สิ่งนี้ใช้ไม่ได้กับฉันใน firefox 55 ต้องการการตัดสินใจข้ามเบราว์เซอร์ ใช้งานได้กับ before | after
Marselo Bonagi

1
ใช้ได้กับ FF และ chrome ด้วย :: before and display: flex; => jsfiddle.net/q0vL1m7v/1
Catweazle

21

คุณสามารถทำได้:

<div class="picture1">&nbsp;</div>

และใส่ลงในไฟล์ css ของคุณ:

div.picture1 {
   width:100px; /*width of your image*/
   height:100px; /*height of your image*/
   background-image:url('yourimage.file');
   margin:0; /* If you want no margin */
   padding:0; /*if your want to padding */
}

มิฉะนั้นให้ใช้แบบธรรมดา


ฉันพยายามหลีกเลี่ยงขนาดคงที่
Dany Y

หากคุณพยายามหลีกเลี่ยงขนาดคงที่วิธีที่ง่ายที่สุดคือใช้imgแท็กธรรมดา คุณพยายามทำอะไรให้สำเร็จ? อาจมีวิธีแก้ปัญหาอื่นโดยทางโปรแกรมเช่นการกำหนดขนาดภาพผ่าน PHP getimagesize แล้วสะท้อนแท็กstyleและหรือimgแท็กที่เกี่ยวข้องสำหรับรูปภาพนั้น ๆ
JudeJitsu

5

ใช้เป็นโค้ดตัวอย่าง แทนที่ความสูงของภาพและความกว้างของภาพด้วยขนาดภาพของคุณ

<div style="background:yourimage.jpg no-repeat;height:imageheight px;width:imagewidth px">
</div>

ใช้งานได้ แต่มีคำถามเกี่ยวกับ "CSS"
Michael Biermann

บางทีมันไม่ควร
jasonleonhard

5

ด้วย Javascript / Jquery:

  • โหลดภาพด้วยการซ่อน img
  • เมื่อโหลดภาพแล้วให้รับความกว้างและความสูง
  • สร้างdivและตั้งค่าความกว้างความสูงและพื้นหลังแบบไดนามิก
  • ลบต้นฉบับ img

      $(document).ready(function() {
        var image = $("<img>");
        var div = $("<div>")
        image.load(function() {
          div.css({
            "width": this.width,
            "height": this.height,
            "background-image": "url(" + this.src + ")"
          });
          $("#container").append(div);
        });
        image.attr("src", "test0.png");
      });
    
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.