2010-01-14 26 views
6

Tôi muốn tạo một thanh điều hướng có hình ảnh ở mỗi đầu để làm cho nó trở nên tinh khiết.Tại sao nền hình ảnh của tôi biến mất trên phao: trái?

Vì vậy, tôi đã tạo HTML và CSS bên dưới và nó hoạt động rất tốt. Các mục menu của tôi nằm trong danh sách ul/li.

Khi tôi tạo kiểu danh sách để đặt tất cả các mục trên cùng một dòng, hình ảnh trên đầu sẽ biến mất. Có chuyện gì thế? Làm thế nào để tôi sửa chữa nó?

Thủ phạm là nổi: trái; phía dưới.

--- test.html ---

<html> 
<head> 
    <link rel="stylesheet" href="test.css" type="text/css"> 
</head> 
<body> 
    <div id="container"> 
     <div id="header-usernav" class="span-6 last large"> 
      <div id="header-usernav-leftside"><div id="header-usernav-rightside"> 
       <ul> 
        <li>Register</li> 
        <li>Signin</li> 
        <li>Signout</li> 
       </ul> 
      </div></div> 
     </div> 
    </div> 
</body> 
</html> 

--- test.CSS ---

#container #header-usernav { 
    background: url('http://www.webcredible.co.uk/i/bg-i-resources.gif'); 
    height: 28px; 
    background-repeat: repeat; 
} 
#container #header-usernav-leftside { 
    background: url('http://www.webcredible.co.uk/i/nav-l-h.gif'); 
    background-position: top left; 
    background-repeat: no-repeat; 
} 
#container #header-usernav-rightside { 
    background: url('http://www.webcredible.co.uk/i/nav-r-h.gif'); 
    background-position: top right; 
    background-repeat: no-repeat; 
} 

#container #header-usernav ul { 
    list-style: none; 
    padding: 0; 
    margin: 0; 
    margin-left: 10px; 
} 

#container #header-usernav li { 
    float: left; 
    padding: 0; 
    margin: 0 0.2em; 
} 

Các hình ảnh khác nhau để html/css có thể được sao chép dán vào kiểm tra nó.

Thỏa thuận là gì? Tôi đang làm gì sai?

Trả lời

7

Tôi khuyên bạn nên thêm tràn: bị ẩn; (và zoom: 1; để duy trì khả năng tương thích trình duyệt chéo cho IE6) với div vùng chứa thay vì thêm div xóa. Xóa thêm bloat vào mã nguồn của bạn.

#container #header-usernav ul { 
    list-style: none; 
    padding: 0; 
    margin: 0; 
    margin-left: 10px; 
    overflow: hidden; 
    zoom: 1; 
    height: 28px; /* This is needed to ensure that the height of the rounded corners matches up with the rest of the bg. 
} 
5

Chỉ với trẻ em lưu hành, vùng chứa ngoài của bạn sẽ trả về chiều cao là 0px. Như vậy, bạn có thể đặt sau ngay sau khi các yếu tố nổi (s):

<div class="clear"></div> 

Và thêm các quy tắc sau:

.clear { clear:both; } 

Ví dụ:

<div id="container"> 
    <div id="header-usernav" class="span-6 last large"> 
     <div id="header-usernav-leftside"> 
      <div id="header-usernav-rightside"> 
      <ul> 
       <li>Register</li> 
       <li>Signin</li> 
       <li>Signout</li> 
      </ul> 
      <div class="clear"></div> 
      </div> 
     </div> 
    </div> 
</div> 
+0

Điều này dường như không hoạt động trong Safari và Firefox trên Mac OS. http://jsbin.com/ikige. Thanh toán bù trừ phải nằm ngay sau UL –

+0

Lưu ý và sửa chữa. Cảm ơn Chetan. – Sampson

+0

Trong khi kỹ thuật này hoạt động, hầu hết mọi người sẽ sử dụng một số biến thể của clearfix những ngày này, vì nó không yêu cầu thêm đánh dấu thêm - xem Anwsers của Chetan hoặc Sasha. –

2

Nó đang xảy ra vì divs của bạn không có chiều cao. Bạn có thể thêm một div trống với clear: both ngay sau UL của bạn. Hoặc bạn có thể thêm các kiểu này vào UL

width: 100%; 
overflow: auto; 

Xem this để được giải thích.

1

Thêm height: 28px; vào ul trong css của bạn. Jonathan và Chetan đã đưa ra một lời giải thích rất tốt về lý do tại sao công trình này, nhưng để nhắc lại, cha mẹ của các yếu tố nổi không bị ảnh hưởng bởi chiều cao của trẻ em lưu hành của họ.

+1

Giải thích tuyệt vời, cảm ơn! –

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