Css hình nền kéo dài?


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>

Đây là tập lệnh CSS của tôi

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

Tôi muốn kéo dài background-imagetất cả các <td>tế bào


Chỉ cần lưu ý rằng hình ảnh raster kéo dài làm giảm chất lượng.
wdm


@wdm: suy giảm chất lượng sẽ không xảy ra nếu đó là một Svg.
phòng thí nghiệm posit

Câu trả lời:


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

Hoạt động trong:

  • Safari 3+
  • Chrome bất cứ điều gì +
  • IE 9+
  • Opera 10+ (Opera 9.5 hỗ trợ kích thước nền nhưng không phải từ khóa)
  • Firefox 3.6+ (Firefox 4 hỗ trợ phiên bản tiền tố không phải của nhà cung cấp)

Ngoài ra, bạn có thể thử điều này cho một giải pháp IE

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

Tín dụng cho bài viết này của Chris Coyier http://css-tricks.com/perinf-full-page-background-image/


Điều này hoạt động tốt nhưng tôi chỉ muốn kéo dài chiều cao bằng cách nào tôi có thể làm điều đó
Buffon

3
cảm ơn vì đã giúp nó hoạt động khi tôi thay đổi mã trong mã của bạn, -moz-background-size: 100% 100%;nó hoạt động như tôi muốn ... cảm ơn bạn
Buffon

1
Một giải pháp IE8 và thấp hơn: github.com/louisremi/background-size-polyfill
Irongaze.com 18/12/12

6
đã làm việc cho tôi sau khi thay đổi background-size: cover;thành 'kích thước nền: 100% 100%; `
ivan.mylyanyk

1
Tôi cần một chiều cao cố định (130px) và chiều rộng đầy đủ. Điều này đã làm việc: background: url("images/bg.jpg") no-repeat center 0 fixed;background-size: 100% 130px;(vv). Căn giữa chiều cao (như trong câu trả lời) sẽ ẩn nền nếu nó đủ ngắn.
xe trượt tuyết

62

CSS3: http://webdesign.about.com/od/styleproperIES/p/blspbgsize.htmlm

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

Bạn có thể chỉ định chiều rộng hoặc chiều cao với:

background-size: 100% 50%;

Nó sẽ kéo dài 100% chiều rộng và 50% chiều cao.


Hỗ trợ trình duyệt: http://caniuse.com/#feat=background-img-opts


1
Wow, nó hoạt động hoàn hảo với tôi - Tôi đã thử các câu trả lời khác và một loạt các kỹ thuật khác nhau. Nhưng điều này rất đơn giản và làm việc ngay lập tức. Cảm ơn bạn: D
DylanT 25

11

Bạn không thể kéo dài hình nền (cho đến CSS 3).

Bạn sẽ phải sử dụng định vị tuyệt đối, để bạn có thể đặt một thẻ hình ảnh bên trong ô và kéo dài nó để bao phủ toàn bộ ô, sau đó đặt nội dung lên trên cùng của hình ảnh.

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, đúng. Nó cũng là một ý tưởng tốt để quấn <img>với một <div>position: relative;và tối đa chiều rộng / chiều cao. Bản thân TD không được định vị tương đối trong tất cả các trình duyệt, nếu có.
madr

Tôi đã vật lộn với IE, +1 cho điều đó
arjuncc

9

Tôi nghĩ những gì bạn đang tìm kiếm là

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

đây chính xác là những gì tôi cần!
Rachelle Uy

0

Điều này hoạt động hoàn hảo @ 2019

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

-7

Chỉ cần dán mã này vào dòng mã của bạn:

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.