Định vị DIV trước DIV trước


7

Tôi không rành về HTML / CSS.

Tôi sử dụng Bàn phím chữ cho blog của mình và điều đó giới hạn tôi rất nhiều.

Có bốn div.

<div id="container-inner">

  <div id="nav"></div>
  <div id="pagebody">
    <div id="pagebody-inner">
      <div id="alpha"></div>
      <div id="beta"></div> 
    </div>
  </div>

</div>

Tôi cần "beta" để xuất hiện ở bên phải của trang, bên phải "nav" và trước "alpha".

Liên kết đến trang web trực tiếp có tại đây: http://sarajchipps.com/

nhập mô tả hình ảnh ở đây

Giúp đỡ của bạn được đánh giá rất cao.

Câu trả lời:


2

Nếu bạn có ý nghĩa, bạn muốn thanh bên ngồi ở đầu trang, bắt đầu ở trên và bên phải của thanh điều hướng, như thế này ...

nhập mô tả hình ảnh ở đây

... Có hai cách dễ dàng và một cách khó hơn cũng mang lại những lợi thế khác.

1. position: absolute;

Đây là cách dễ dàng sạch nhất :

  • Thêm top: 0;, position: absolute;vào phần tử cần ngồi ở đầu trang (#beta) và thay thế float: right;bằng right: 0;( float: right;sẽ không hoạt động với position: absolute;nhưng right: 0;trong bối cảnh này sẽ tạo ra hiệu ứng tương tự)
  • position: relative;một yếu tố chứa toàn bộ trang (trên trang web của bạn, đó là #container-inner) và không có yếu tố nào ở giữa (vì vậy bạn cần xóa nó khỏi #pagebody- đã thử và nó không phá vỡ bất cứ thứ gì).

Các top: 0;của một position: absolute;phần tử sẽ được dựa trên các khu vực gần cha mẹ mà có position: relative;.


2. margin-top: -XXXpx;

Nếu vì một lý do nào đó bạn cần position: relative;đến div ở giữa (tôi không thể thấy lý do, nhưng người ta có thể xuất hiện), thì có một cách khác ít sạch hơn.

Chiều cao của phần điều hướng / tiêu đề là cố định, vì vậy bạn biết bạn muốn di chuyển thanh bên bao nhiêu pixel. Vì vậy, bạn chỉ có thể cung cấp cho thanh bên ( #beta) một lề trên âm của nhiều pixel (như margin-top: -350px;). Vấn đề duy nhất với kế hoạch này là, bạn cần điều chỉnh lề trên nếu bạn thay đổi chiều cao của tiêu đề.


3. Bố cục nội dung đầu tiên

Cuối cùng, giải pháp tốt nhất (nhưng đơn giản nhất) sẽ là chỉnh sửa mẫu HTML và di chuyển phần tử #nav xuống trong html để bên dưới nội dung trang như thanh bên #beta, sau đó, đặt một lề lớn lên trên alpha, tạo khoảng cách kích thước của phần #nav tiêu đề của bạn, sau đó tạo cả phần tử #nav và thanh bên #beta position: absolute;top: 0;(kiểm tra position: relative;s như trên) và đảm bảo rằng #nav có kích thước chính xác để lấp đầy lỗ.

Nói chung tốt hơn là có thể có các yếu tố phi nội dung bên dưới nội dung chính trong HTML - điều đó có nghĩa là những người có trình đọc màn hình nghe thấy nội dung thú vị mà họ tìm đến trước danh sách các liên kết sẽ đi tới và một số công cụ tìm kiếm có trọng lượng lớn hơn theo các điều khoản trước đó trong đánh dấu (tôi khá chắc chắn điều này vẫn đúng).

Để đọc thêm, đây là một bài viết đơn giản về bố cục nội dung đầu tiên và đây là một ví dụ trong bối cảnh thiết kế 'đáp ứng' hoạt động cho thiết bị di động và máy tính để bàn .



1

Bạn có thể triển khai một số CSS (dựa trên mã của bạn) - Tôi không chắc chắn 100% về những gì bạn cố gắng đạt được (đến đây vì vậy tôi sẽ đổ lỗi cho đồng hồ bây giờ :)) - Tôi không quen với typepad, nhưng về tổng thể -

Có lẽ điều này có thể giúp bạn đi đúng hướng:

#pagebody-inner {
    display:block;
    width:100%; /* or the size you need it to be in relation to nav */
}
/* This will float your div-elements inside pagebody-inner to the right hand side */
#pagebody-inner div {
    display:block;
    float:right;
}

Những dòng css này tất nhiên cần phải được đặt trong tệp css cho trang web của bạn.

Tôi đặt mã trên trang web này nếu bạn muốn chơi xung quanh nó - sửa đổi theo ý muốn:
http://jsfiddle.net/SE4Pr/


1

Bạn có thể sử dụng định vị tuyệt đối (nhưng hãy nhớ định vị tương pagebody-innerđối đối tượng cha trừ khi bạn hoàn toàn không quan tâm đến luồng các yếu tố).

Ngoài ra, bạn có thể nổi cả hai alphabetabên phải. Hoặc bạn chỉ có thể hoán đổi vị trí của alphabetavà nổi trái hoặc làm cho họ khối inline.


1

Tôi vừa kiểm tra trang web của bạn và bạn cần thực hiện một vài thay đổi.

#alpha{
 float:right;
}
#beta{
 float:left;
}

và thêm lề chính xác vào div có thể làm cho nó trông tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.