2008-08-29 29 views
6

Tôi mong đợi hai thẻ span trong mẫu sau đây sẽ hiển thị cạnh nhau, thay vào đó chúng hiển thị bên dưới thẻ kia. Nếu tôi thiết lập chiều rộng của lớp span.right đến 49% chúng hiển thị bên cạnh nhau. Tôi không thể tìm ra lý do tại sao nhịp phải được đẩy xuống như khoảng bên phải có một số padding/lề vô hình mà làm cho nó mất hơn 50%. Tôi đang cố gắng để có được điều này được thực hiện mà không cần sử dụng bảng html. Bất kỳ ý tưởng?inline-block trên span

<html> 
<head> 
    <title>Test Page</title> 
    <style type='text/css'> 
     * { 
      margin: 0; 
     } 

     html,body{ 
      margin:0; 
      padding:0; 
      height:100%; 
      width:100%; 
      border:none; 
     } 

     div.header{ 
      width:100%; 
      height:80px; 
      vertical-align:top; 
     } 

     span.left { 
      height:80px; 
      width:50%; 
      display:inline-block; 
      background-color:pink; 
     } 

     span.right { 
      vertical-align:top; 
      display:inline-block; 
      text-align:right; 
      height:80px; 
      width:50%; 
      background-color:red; 
     } 
    </style> 
</head> 
<body> 
    <div class='header'> 
     <span class='left'>Left Span 50% width</span> 
     <span class='right'>Right Span 50% width</span> 
    </div> 
</body> 
</html> 

Cảm ơn lời giải thích. Các phao: trái hoạt động đẹp với kết quả mong đợi trong FF 3.1. Thật không may, trong IE6 khoảng bên phải làm cho 50% của 50%, có hiệu lực cho nó một chiều rộng 25% của cửa sổ trình duyệt. Thiết lập chiều rộng của nó đến 100% đạt được kết quả mong muốn nhưng phá vỡ trong FF 3.1 đó là trong chế độ tuân thủ tiêu chuẩn và tôi hiểu điều đó. Bắt nó hoạt động cả trong FF và IE 6, mà không cần đến hacks hoặc sử dụng nhiều sheet CSS đã là một thách thức

+0

Tại sao hỗ trợ IE6? http://www.ie6nomore.com/ – jrummell

Trả lời

3
float: left; 

Hãy thử thêm rằng để span.left

Nó sẽ gây ra nó để nổi lên các trái (như được đề xuất bởi cú pháp).


Tôi không phải là một chuyên gia về CSS bằng bất kỳ phương tiện vì vậy xin đừng lấy thực tế như unarguable này nhưng tôi thấy rằng khi một cái gì đó đang nổi lên, nó làm cho không có sự khác biệt với các vị trí thẳng đứng thứ dưới nó.

Nếu bạn thả nổi bên phải, sau đó thêm văn bản bên dưới, bạn sẽ nhận được một số kết quả thú vị, để ngăn chặn những "kết quả thú vị" này bạn có thể sử dụng "clear: left/right/both" với phong cách rõ ràng để được dưới bất cứ điều gì nổi bên trái/phải/cả hai. W3Schools cũng có trang trên thuộc tính này.

Và chào mừng bạn đến với Stackoverflow.

+0

Cảm ơn câu trả lời nhanh chóng thêm phao: trái đã làm cho 2 nhịp kéo dài bên cạnh nhau. Tuy nhiên tôi không hiểu tại sao nhịp được đẩy xuống mà không có phao. Điều gì đẩy nó? – rams

+0

Chiều cao của khoảng là lý do tại sao nó đẩy nó xuống cho tôi, và rất có thể cũng đã được lý do của bạn là tốt. – Johannes

1

tôi không thích hack này nhưng có vẻ như để làm công việc cả trong Firefox và IE6:

span.right { 
    vertical-align:top; 
    display:inline-block; 
    text-align:right; 
    height:80px; 
    width:50%; 
    *width:100%; 
    background-color:red; 
} 

Lưu ý *width: 100% mà dường như để đáp ứng yêu cầu của IE6 và được bỏ qua bởi trình duyệt Firefox.

2

Điều này là do nội tuyến và khối nội tuyến bao gồm khoảng trắng (trong trường hợp của bạn là ngắt dòng) giữa các phần tử. Trong trường hợp của bạn, chiều rộng kết hợp của các phần tử là 50% + 50% + khoảng trắng> 100%.

Bạn nên hoặc là đặt hai yếu tố trên cùng hàng trong tài liệu HTML của bạn (không có dấu cách)

<div class='header'> 
    <span class='left'>Left Span 50% width</span><span class='right'>Right Span 50% width</span> 
</div> 

Hoặc sử dụng HTML bình luận

<div class='header'> 
     <span class='left'>Left Span 50% width</span><!-- 
    --><span class='right'>Right Span 50% width</span> 
</div> 

Bản thân tôi thích thứ hai.

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