2009-07-21 36 views
31

Tôi gặp sự cố với một trong các nhịp của mình. Hãy cosider phong cách sau:CSS - chiều rộng không được tôn trọng trên thẻ span

.form_container .col1che 
{ 
float: left; 
width: 4%; 
text-align: left;  
} 

.form_container .col2che 
{ 
float: left; 
width: 80%; 
text-align:left; 
} 

.form_container .col3che 
{ 
float: right; 
width: 13%; 
text-align:right; 
} 

Những 3 nhịp trong mã của tôi:

<div class="row"><!-- start: "row" --> 
    <span class="col1che">   
      <?php //some db feeds ?>   
    </span> 
    <span class="col2che"> 
      <?php //some db feeds ?> 
    </span> 
    <span class="col3che"> 
      <?php //some db feeds ?> 
    </span> 
    <div class="clear"></div> 
</div><!-- end: "row" --> 

Vấn đề xảy ra khi không có dữ liệu sẽ được hiển thị trong "COL1CHE" (hoặc thậm chí có thể ở bất kỳ trong số họ mặc dù tôi không chắc chắn) khi không có dữ liệu khoảng này "sụp đổ" và chiều rộng của nó không được tôn trọng. Điều này xảy ra trong Firefox, trong IE nó không "sụp đổ".

Tôi đã bao gồm lớp "rõ ràng" để xem liệu điều này có giúp ích hay không.

Bất kỳ ý tưởng nào?

+0

hmmm, những gì các bạn nói có ý nghĩa hoàn hảo, nhưng đối với một số lý do, ngay cả sau khi thêm display: block nó vẫn "sụp đổ" buồn cười, nếu tôi thêm một biên giới đến lớp cột nó sẽ hiển thị chiều rộng thích hợp ngay cả khi không có nội dung. nhưng nếu không có nội dung, không có đường viền, nó chỉ sụp đổ – chicane

+0

o yea, một điều nữa, làm sao nếu các nhịp của tôi không được thiết lập thành khối và nếu có nội dung bên trong chúng, thì chiều rộng được thiết lập chính xác như trong kiểu tấm? (không phải là im tranh luận cho dù chiều rộng được vinh danh cho các yếu tố nội tuyến, im chỉ tò mò tại sao họ làm việc cho tôi) – chicane

Trả lời

13

display: blocksẽ không giúp bạn ở đây vì khi phao được kích hoạt, các phần tử được tự động chuyển sang chế độ chặn, bất kể chế độ ban đầu của nó, vì vậy chiều rộng của bạn sẽ hoạt động.

Sự cố có thể xảy ra với thẻ trống rỗng <span> có thể không được hiển thị vì một số quy tắc tối nghĩa mà tôi không thể nhớ. Bạn nên cố gắng ngăn không cho khoảng trống của mình bị trống, có thể bằng cách thêm &nbsp; nếu nội dung trống.

+0

ok tuyệt vời, các yếu tố nổi trở thành khối tự động giải thích rất nhiều về hành vi tôi nhìn thấy trên trang của tôi ... tôi đã cố gắng mũi tên và nó hoạt động rất tốt nhờ ...nếu ai đó biết lý do tại sao không có nội dung nào có thể làm cho sự sụp đổ này có thể họ có thể kêu vang chỉ để làm rõ hành vi tò mò này, nhưng bây giờ đây là một sửa chữa tuyệt vời. – chicane

3

Để thực hiện công việc này chỉ cần thêm

display: block; 

Để phong cách.

67

Span là phần tử nội tuyến và do đó bạn không thể đặt chiều rộng. Để đặt chiều rộng, trước tiên bạn phải đặt chiều rộng thành phần tử khối với

display:block; 

Sau đó bạn có thể đặt chiều rộng. Vì span là phần tử nội tuyến gốc, bạn cũng có thể sử dụng khối nội tuyến và thậm chí nó sẽ hoạt động trong IE:

display:inline-block; 
32

Chiều rộng không được vinh danh vì span là phần tử nội tuyến. Để sửa lỗi này, thêm:

display: inline-block; 

Tùy thuộc vào tình hình của bạn, display: inline-block có thể tốt hơn so với display: block vì bất kỳ nội dung sau span sẽ không bị buộc vào một dòng mới.

2

Hiển thị block và tùy chọn thả nổi left đã giúp tôi.

display: block; 
float: left; 
Các vấn đề liên quan