背景画像の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 Whatever +
  • IE 9以降
  • Opera 10+(Opera 9.5はbackground-sizeをサポートしていますが、キーワードはサポートしていません)
  • 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に感謝
ブッフォン

1
IE8以下の別のソリューション:github.com/louisremi/background-size-polyfill
Irongaze.com

6
background-size: cover;`background-size:100%100%;` に変更した後、私のために働きました
ivan.mylyanyk '31 / 10/31

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

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 '19

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

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.