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;
}

Працює в:

  • Сафарі 3+
  • Chrome "Що б ні +"
  • 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/


це добре працює, але я хочу розтягнути висоту лише як я можу це зробити
Буффон

3
дякую за допомогу в роботі, коли я змінюю те, що у вашому коді -moz-background-size: 100% 100%;він працює так, як мені хочеться ... дякую u
Buffon

1
Ще одне рішення IE8 та нижчих версій
Irongaze.com

6
працював для мене після зміни 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;(тощо). Центрування по висоті (як у відповіді) приховало б тло, якби воно було досить коротким.
сонник

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 не є відносною у всіх браузерах, якщо такі є.
мадр

Я боровся з 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" />
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.