2009-12-24 37 views
6

Vì một số lý do khi bạn áp dụng hình nền cho một trình duyệt Safari/Chrome, nó sẽ hiển thị như thể quy tắc áp dụng cho mọi td.CSS/Webkit: Hình nền cho hàng bảng

Firefox:

Firefox http://www.whyprime.com/temp/table-firefox.png

Safari:

Safari http://www.whyprime.com/temp/table-safari.png

tôi tìm thấy bài viết này thảo luận về một sửa chữa:

http://snook.ca/archives/html_and_css/applying_a_back

Tôi đã có thể làm cho nó làm việc trong IE với gif spacer nhưng không thể tìm ra nó cho Safari.

http://www.whyprime.com/temp/table-background.html

+0

Và mã của bạn sẽ ở đâu? –

Trả lời

3

Bảng của bạn sẽ luôn có 2 hàng? Chẳng hạn như:

<table> 
    <tr> 
    <td></td> 
    <td></td> 
    </tr> 
</table> 

Nếu vậy, một giải pháp đơn giản nhưng không quá sang trọng sẽ được chia hình nền của bạn thành hai hình ảnh, và áp dụng một lớp CSS để cột bên trái và bên phải, áp dụng một nửa số mũi tên phía bên phải của cột bên trái, và về phía bên trái của cột bên phải:

<table> 
    <tr> 
    <td class="left"></td> 
    <td class="right"></td> 
    </tr> 
</table> 

CSS của bạn sau đó có thể là tương tự như:

td.left 
{ 
    background: #ffffff url(../PathToLeftBackground.png) top right; 
} 
td.right 
{ 
    background: #fffff url(../PathToRightBackground.png) top left; 
} 

bạn cũng có thể sử dụng một hình ảnh ma nơi bạn sử dụng 1 hình ảnh và đặt nó khác nhau cho hai hình nền.

Tôi nhận ra đây có thể không phải là giải pháp lý tưởng nhất nhưng ít nhất nó sẽ khắc phục được vấn đề của bạn và giúp cho dự án của bạn hoạt động. Đôi khi tôi sử dụng các giải pháp đơn giản như thế này để tiến lên phía trước, và sau đó xem lại vấn đề để làm cho nó hiệu quả hơn sau này.

Hy vọng điều này sẽ hữu ích!

+0

Ah tôi cho rằng đó sẽ là cách bạn truyền thống sẽ làm hình nền cho một bảng. Đã quá lâu kể từ khi tôi đã phải phong cách nghiêm túc lên một bảng w/thái lát và tất cả những gì tôi thậm chí không nghĩ về điều đó.Tôi đã có thể giảm thiểu các vấn đề hiển thị trong trình duyệt Webkit bằng cách định vị nền với giá trị x/y nhưng trong tương lai đây sẽ là tuyến đường tôi sẽ sử dụng và chỉ sử dụng javascript tự động áp dụng các kiểu nền thích hợp để giữ cho đánh dấu rõ ràng và đơn giản . Tôi sẽ đánh dấu là đã trả lời cho lời khuyên tốt và giải pháp chức năng. Cảm ơn bạn! –

8

Theo mặc định, TR và TD có bảng thuộc tính hiển thị và hàng trong bảng. Chúng tôi cần họ quên điều đó và cảm thấy giống như các yếu tố khối đơn giản:

tr {display: block;} 
td {display: inline-block; background: transparent;} 

Mã này giải quyết được vấn đề hiển thị cho tôi.

+0

Cảm ơn bạn đã sửa chữa hoàn hảo cho tôi bằng cách bổ sung webkit @media CSS hack. '@media screen và (-webkit-min-device-pixel-ratio: 0) { tr {display: block;} \t td {display: inline-block; width: 195px} }' – Jamie

+0

Bạn là GOD! !! Không thực sự, nhưng giải pháp của bạn đã giúp tôi. Cảm ơn. – Steve

+0

Cảm ơn đá giải pháp của bạn trên css, nó tiết kiệm rất nhiều thời gian của tôi. –

11

hơi muộn nhưng, bạn có thể sử dụng "nền đính kèm: cố định" để giải quyết vấn đề này.

<table> 
    <tr class="bg"> 
    <td></td> 
    <td></td> 
    </tr> 
</table> 

và trong CSS

tr.bg { 
    background-image : url(../PathToLeftBackground.png) repeat-y 50px 0px; 
    background-attachment: fixed; 
} 

và nó hoạt động!

+1

Bao giờ cuộn với điều này? It's kinda funny – HerrSerker

+0

Cảm ơn ý tưởng của bạn. Tôi đã dành 1 tuần trên tìm kiếm giải pháp tốt gradient nền tr bảng. Cảm ơn bạn. – Peter

+0

Điều này đã cứu mạng sống của tôi. ANH YÊU EM. – thouliha