ยืดภาพพื้นหลัง css หรือไม่


176
<td class="style1" align='center' height='35'>
  <div style='overflow: hidden; width: 230px;'>
    <a class='link' herf='' onclick='topic(<?=$key;?>)'>
      <span id='name<?=$key;?>'><?=$name;?></span>
    </a>
  </div>
</td>

นี่คือสคริปต์ CSS ของฉัน

.style1 {
  background-image: url('http://localhost/msite/images/12.PNG');
  background-repeat: no-repeat;
  background-position: left center;
}

ฉันต้องการยืดเซลล์background-imageให้ทั่ว<td>


เพียงทราบว่าการยืดภาพแรสเตอร์ทำให้คุณภาพลดลง
wdm


@wdm: การลดคุณภาพจะไม่เกิดขึ้นหากเป็น svg
วางตัวแล็บ

คำตอบ:


297
.style1 {
  background: url(images/bg.jpg) no-repeat center center fixed;
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
}

ทำงานใน:

  • Safari 3+
  • Chrome ไม่ว่าจะ +
  • IE 9+
  • Opera 10+ (รองรับ 9.5 ขนาดพื้นหลัง แต่ไม่ใช่คำหลัก)
  • Firefox 3.6+ (Firefox 4 รองรับเวอร์ชันนำหน้าที่ไม่ใช่ผู้ขาย)

นอกจากนี้คุณสามารถลองวิธีนี้เพื่อหาวิธีแก้ปัญหา IE

filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.myBackground.jpg', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='myBackground.jpg', sizingMethod='scale')";
zoom: 1;

ให้เครดิตกับบทความนี้โดย Chris Coyier http://css-tricks.com/perfect-full-page-background-image/


ทำงานได้ดี แต่ฉันต้องการยืดความสูงเท่านั้นฉันจะทำเช่นนั้นได้อย่างไร
Buffon

3
ขอบคุณสำหรับความช่วยเหลือมันทำงานเมื่อฉันเปลี่ยนที่ในรหัสของคุณ-moz-background-size: 100% 100%;มันทำงานได้ตามที่ฉันต้องการ ... ขอบคุณ u
Buffon

1
อีกโซลูชันหนึ่งของ IE8 และที่ต่ำกว่า: github.com/louisremi/background-size-polyfill
Irongaze.com

6
ทำงานให้ฉันหลังจากเปลี่ยนbackground-size: cover;เป็น `ขนาดพื้นหลัง: 100% 100%; '
ivan.mylyanyk

1
ฉันต้องการความสูงคงที่ (130px) และความกว้างเต็ม สิ่งนี้ได้ผล: background: url("images/bg.jpg") no-repeat center 0 fixed;และbackground-size: 100% 130px;(ฯลฯ ) การจัดกึ่งกลางความสูง (ตามคำตอบ) จะซ่อนพื้นหลังถ้ามันสั้นพอ
Sleeparrow

62

CSS3: http://webdesign.about.com/od/styleproperties/p/blspbgsize.htm

.style1 {
  ...
  background-size: 100%;
}

คุณสามารถระบุความกว้างหรือความสูงได้ด้วย:

background-size: 100% 50%;

ซึ่งจะยืดมันได้ 100% ของความกว้างและ 50% ของความสูง


การสนับสนุนเบราว์เซอร์: http://caniuse.com/#feat=background-img-opts


1
ว้าวนั่นมันทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน - ฉันลองคำตอบอื่น ๆ แล้วใช้เทคนิคต่าง ๆ แต่มันง่ายและใช้งานได้ทันที ขอบคุณ: D
DylanT 25

11

คุณไม่สามารถยืดภาพพื้นหลังได้ (จนถึง CSS 3)

คุณจะต้องใช้การจัดตำแหน่งแบบสัมบูรณ์เพื่อให้คุณสามารถใส่แท็กรูปภาพภายในเซลล์และยืดเพื่อครอบคลุมเซลล์ทั้งหมดจากนั้นวางเนื้อหาไว้ด้านบนของภาพ

table {
  width: 230px;
}

.style1 {
  text-align: center;
  height: 35px;
}

.bg {
  position: relative;
  width: 100%;
  height: 100%;
}

.bg img {
  display: block;
  width: 100%;
  height: 100%;
}

.bg .linkcontainer {
  position: absolute;
  left: 0;
  top: 0;
  overflow: hidden;
  width: 100%;
}
<table cellpadding="0" cellspacing="0" border="10">
  <tr>
    <td class="style1">
      <div class="bg">
        <img src="http://placekitten.com/20/20" alt="" />
        <div class="linkcontainer">
          <a class="link" href="#">
            <span>Answer</span>
          </a>
        </div>
      </div>
    </td>
  </tr>
</table>


1
+1 ถูกต้อง นอกจากนี้ยังเป็นความคิดที่ดีที่จะปิด<img>ด้วยการ<div>มีposition: relative;และความกว้าง / ความสูงสูงสุด TD นั้นไม่ได้อยู่ในตำแหน่งที่สัมพันธ์กับเบราว์เซอร์ทั้งหมดหากมี
madr

ฉันกำลังดิ้นรนกับ IE, +1 สำหรับที่
arjuncc

9

ฉันคิดว่าสิ่งที่คุณกำลังมองหาคือ

.style1 {
  background: url('http://localhost/msite/images/12.PNG');
  background-repeat: no-repeat;
  background-position: center;
  -webkit-background-size: contain;
  -moz-background-size: contain;
  -o-background-size: contain;
  background-size: contain;
}

นี่คือสิ่งที่ฉันต้องการ!
Rachelle Uy

0

ใช้งานได้อย่างไม่มีที่ติ @ 2019

.marketing-panel  {
    background-image: url("../images/background.jpg");
    background-repeat: no-repeat;
    background-size: auto;
    background-position: center;
}

-7

เพียงวางสิ่งนี้ลงในบรรทัดรหัสของคุณ:

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.