拉伸背景图片CSS?


175
<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,则不会发生质量下降。
posit labs 2014年

Answers:


296
.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 Whatever +
  • IE 9+
  • Opera 10+(Opera 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%;它可以如我所愿地工作...谢谢
Buffon

1
另一个IE8和更低版本的解决方案:github.com/louisremi/background-size-polyfill
Irongaze.com 2012年

5
更改background-size: cover;为`background-size:100%100%;` 后为我工作了
ivan.mylyanyk

1
我需要固定高度(130像素)和全宽。这有效:background: url("images/bg.jpg") no-repeat center 0 fixed;background-size: 100% 130px;(等)。如果高度足够短,将高度居中(如答案中所示)将隐藏背景。
sleeparrow


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 2011年

我在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 2015年

1

这在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" />
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.