2011-01-17 36 views
8

Tôi đã đặt background-image trên một vài yếu tố span, nhưng chúng không hiển thị, tôi nghĩ vì cài đặt heightwidth của bạn đang bị bỏ qua.Câu đố CSS: Cách thêm hình nền và đặt chiều cao/chiều rộng trên khoảng trống?

nguồn HTML:

<div class="textwidget"> 
<a href="#" title="Start here"><span id="starthere" class="sidebar-poster"></span></a> 
<a href="#" title="Primary documents"><span id="#primarydocs" class="sidebar-poster"></span></a> 
<a href="#" title="Donate"><span id="donate" class="sidebar-poster"></span></a> 
</div> 

CSS:

span.sidebar-poster { 
    margin-bottom: 10px; 
    background-repeat: no-repeat; 
    width: 160px; 
} 
span#starthere { 
    background-image: url(/betatesting/wp-content/themes/dynamik/css/images/brunelwantsyou180.jpg); 
    height: 285px; 
} 
span#starthere:hover { 
    background-image: url(/betatesting/wp-content/themes/dynamik/css/images/brunelwantsyou_hover.jpg); 
} 
span#primarydocs { 
    background-image: url(/betatesting/wp-content/themes/dynamik/css/images/brunelwantsyou180.jpg); 
    height: 285px; 
} 
span#primarydocs:hover { 
    background-image: url(/betatesting/wp-content/themes/dynamik/css/images/brunelwantsyou_hover.jpg); 
} 
span#donate { 
    background-image: url(/betatesting/wp-content/themes/dynamik/css/images/donatebutton.jpg); 
    height: 285px; 
} 
span#donate:hover { 
    background-image: url(/betatesting/wp-content/themes/dynamik/css/images/donateposter_hover.jpg); 
} 

Không ai trong số những hình ảnh nền thực sự nhìn thấy được.

Trong Công cụ dành cho nhà phát triển Chrome, Theo Kiểu được tính toán, hai nhịp này dường như có hình nền. Nếu tôi sao chép và dán URL của hình ảnh này, tôi sẽ thấy hình ảnh. Tuy nhiên, không có gì thực sự dựng hình.

[CẬP NHẬT - phần này được giải quyết, nhờ] Trong Công cụ nhà phát triển Chrome, dưới Rules khớp, chỉ có #starthere#donate nhịp đang thực sự chọn lên các thuộc tính background-image. Khoảng thời gian #primarydocs là không. Tại sao không?

+0

Vì vậy, các thành phần nhịp có độ cao 0px và chiều rộng 0px, có thể là vậy. Tại sao? Tại sao họ không có chiều cao mà tôi đã đưa cho họ trong #id và chiều rộng trong lớp sidebar-poster? – AP257

+2

'span id =" # primarydocs "' có thể là 'span id =" primarydocs "'. –

+0

CÓ. Cảm ơn bạn, không biết làm thế nào tôi đã không phát hiện ra điều đó! Bây giờ chỉ cần có chiều rộng để tìm ra. – AP257

Trả lời

8

SPAN là phần tử nội tuyến. Mà thực sự sẽ bỏ qua những điều như vậy. Thử đặt chế độ hiển thị trong CSS của bạn thành một cái gì đó như: display: block;

4

Tôi nghĩ rằng span s cần phải có display:inline-block, khoảng thông thường sẽ luôn có chiều rộng và chiều cao 'tự nhiên' của nó.

+0

Lưu ý rằng khối nội tuyến không được hỗ trợ bởi tôi nghĩ ít nhất là IE6, có thể không phải là 7. Thành thật mà nói, tôi chỉ nhớ nó không được "hỗ trợ tốt", tôi không nhớ mức độ của nó. –

+0

Lý do của tôi là IE6 là như vậy aaaaaancient tôi chỉ không cung cấp cho một s, và tất cả các nền tảng đã có IE7 cũng có IE8. Rất may tôi làm việc ở một nơi nerdy và có thể nhận được đi với nó. ;) –

0

Giải quyết sự cố - bạn không thể đặt heightwidth trên span vì đó là phần tử nội tuyến. Chuyển sang div đã giải quyết.

Phew.

Nếu có ai biết cách gỡ lỗi CSS bằng các công cụ tốt hơn so với phỏng đoán, hy vọng, tìm kiếm trên Google và chửi thề, vui lòng cho tôi biết!

+1

Sử dụng Chrome và các công cụ dành cho nhà phát triển tích hợp sẵn, chúng tuyệt vời! Hoặc nếu bạn là người nghiện Firefox, hãy sử dụng tiện ích FireBug. Cả hai đều là những công cụ gỡ lỗi tuyệt vời. – Baer

2

Tự động không thể mấtvà height thuộc tính từ CSS.

Nếu bạn muốn sử dụng đặc tính inline nhưng không có nội dung bên trong (ví dụ: <span> nội dung </span>) và thay vào đó có hình nền, hãy sử dụng padding thay thế.

ví dụ:

span { padding: 10px; }

nhưng đầu vào số lượng pixel bạn sẽ cần phải thể hiện hình ảnh.

Các vấn đề liên quan