2011-09-18 40 views
11

Khi trình duyệt mở trang của tôi, trình duyệt phải ở giữa trang.Căn giữa trang một trang theo chiều ngang cuộn trong trình duyệt (không định tâm một div)

Ý nghĩa: Tôi có một trang ngang, thay vì bắt đầu từ bên trái và sang phải (ví dụ: this), sẽ bắt đầu ở giữa và có thể cuộn đến nội dung ở cả bên phải VÀ Bên trái.

Đây là một hình ảnh:

enter image description here

Nếu có thể, tôi muốn tránh di chuyển dom-ready qua JavaScript hoặc jQuery (Tôi đang sử dụng nó cho viện trợ hàng hải và các công cụ anyways), và chỉ sử dụng html5/css thuần túy hoặc ít nhất là tập trung vào màn hình sẵn sàng sẵn sàng thông qua JavaScript/jQuery.

Hai ý tưởng về phía tôi:

a) di chuyển vùng chứa sang bên trái, ví dụ: sử dụng margin-left:-x, nhưng thường cắt nó đi.

b) di chuyển màn hình sang phải từ đầu.

Than ôi, tôi đã quá không mong muốn đạt được điều này một mình.

p.s. ở đây jsfiddle của tôi cho sự nhất quán: http://jsfiddle.net/alexdot/2Dse3/

+0

Chỉ cần được rõ ràng ... bạn muốn có một thùng chứa theo chiều ngang di chuyển, nhưng bạn không muốn sử dụng JavaScript để kiểm soát việc di chuyển, chỉ cần một thanh cuộn horiz? – MrWhite

+0

Đừng nghĩ rằng có một giải pháp html5/css tinh khiết. - $ ("# myDiv") Tập trung(); – Jawad

+0

ồ không. tôi đang sử dụng javascript/jquery sau để ảnh hưởng đến việc cuộn. những gì tôi KHÔNG muốn là trang web tải, ở bên trái và sau khi tải cuộn đến khu vực bắt đầu thực tế ở giữa trang. tôi muốn tránh cho phép người dùng xem nội dung được dành riêng để xem sâu về trang web sau này. – alex

Trả lời

8

Giải pháp
Nếu bạn muốn ẩn dữ liệu, thêm visibility:hidden; đến các yếu tố có hàm lượng mà nên được giữ ẩn lúc bắt đầu. Thực thi mã cuộn trang của tôi và cuối cùng thay đổi visibility:hidden; thành visibility:visible.

Điều gì sẽ xảy ra?

  1. CSS ẩn nội dung của các yếu tố: visibility:hidden
  2. Trang tải
  3. gây
  4. JavaScript trang để di chuyển đến trung tâm: window.scrollTo(..., ...)
  5. JavaScript cho thấy nội dung bí mật (bên ngoài giao diện của trình duyệt): visibility=visible
  6. các người dùng cuộn sang trái/phải, và có khả năng đọc các bí mật

Fiddle: http://jsfiddle.net/2Dse3/5/


cuộn đang
cuộn trang để trung tâm không thể đạt được với CSS tinh khiết/HTML. Điều này chỉ có thể được thực hiện bằng cách sử dụng JavaScript. Với mục đích đơn giản này, tôi thích sử dụng JavaScript nguyên gốc hơn là bao gồm một plugin JQuery (tải máy chủ không cần thiết).

mã JavaScript:

window.scrollTo(
    (document.body.offsetWidth -document.documentElement.offsetWidth)/2, 
    (document.body.offsetHeight-document.documentElement.offsetHeight)/2 
); 
/* 
* window.scrollTo(x,y) is an efficient cross-broser function, 
* which scrolls the document to position X, Y 
* document.body.offsetWidth contains the value of the body's width 
* document.documentElement contains the value of the document's width 
* 
* Logic: If you want to center the page, you have to substract 
* the body's width from the document's width, then divide it 
* by 2. 
*/ 

Bạn phải điều chỉnh CSS (xem Fiddle):

body {width: 500%} 
#viewContainer {width: 100%} 

Một lưu ý cuối cùng. Bạn mong đợi điều gì khi người dùng đã tắt JavaScript? Họ có được phép xem nội dung của trang không? Nếu có, hãy thêm điều này:

<noscript> 
    <style> 
    .page{ 
     visibility: visible; 
    } 
    </style> 
</noscript> 

Nếu không, hãy thêm <noscript>JavaScript is required to read this page</noscript>.

+1

Công việc tuyệt vời. Nhưng bạn có thể làm với "GIẢI PHÁP" đậm và lớn! – Jawad

+0

Cảm ơn. Tiêu đề thực sự là quá đáng chú ý. Tôi cũng quên thêm tiêu đề ở phần thứ hai của câu trả lời. Đã cập nhật câu trả lời. –

+1

công việc tuyệt vời! cảm ơn rob cho giải pháp và cảm ơn thêm cho câu trả lời rất tốt và chi tiết! – alex

3

Một giải pháp jQuery dễ

$(function() { 
    scrollTo(($(document).width() - $(window).width())/2, 0); 
}); 
Các vấn đề liên quan