2011-06-27 24 views
14

Thông thường, khi bạn tạo phần tử data-role = "page" với jQuery mobile, nó chiếm toàn bộ khu vực xem. Vì lý do này, tôi không hiểu cách tạo thanh bên. Tôi muốn bắt chước những điều sau đây, nhưng xem nguồn không giúp gì nhiều:Tạo thanh bên trong jQuery mobile

http://jquerymobile.com/demos/1.0b1/docs/lists/index.html

Chú ý rằng khi bạn nhấp vào một mục trong danh sách, nó biến thành một thanh bên và cho thấy một danh sách trong chính khu vực nội dung. Ngoài ra, nếu màn hình bị thu nhỏ, nó chỉ hiển thị vùng nội dung chính. Có một tính năng đặc biệt trong jQuery điện thoại di động cho phép điều này, hoặc là có một số lượng lớn javascript mờ và CSS đằng sau nó?

Trả lời

13

Nhìn qua các phiên bản beta Split View cú pháp bạn có thể kiểm soát "Sidebar" như thế này:

<div data-role="page" id="jqm-home" class="type-home"> 
    <div data-role="content"> 
     <div class="content-secondary"> 
      This would be the sidebar/split view on a tablet, 
      would show up stacked on a mobile device 
     </div><!-- end content-secondary -->  

     <div class="content-primary"> 
      This is the main content. 

      If Tablet device this would be to the right of the above content, 
      if mobile this would be below the above content. 

     </div><!-- end content-primary --> 
    </div><!-- end content --> 
</div><!-- end page --> 

Documents: http://jquerymobile.com/demos/1.0b1/ (click chuột phải để xem nguồn)

thích hợp CSS: http://jquerymobile.com/demos/1.0b1/docs/_assets/css/jqm-docs.css

Bài viết ALA phong nha nói về truy vấn phương tiện (những gì họ đã sử dụng để thực hiện việc này): http://www.alistapart.com/articles/responsive-web-design/

+0

Vâng tôi cũng thấy điều đó, nhưng tôi không nghĩ đó thực sự là nơi tạo thanh bên. Tôi tin rằng đó là mã để chia nhỏ hai danh sách riêng biệt được hiển thị trong liên kết mà bạn vừa đưa ra. Đó là lý do tại sao tôi không nghĩ rằng "xem nguồn" là hữu ích trong bối cảnh này ... nó chỉ cho thấy những gì gốc của bản demo trông như thế nào. –

+3

Đây thực sự là cách thanh bên được thực hiện - hãy xem http://jquerymobile.com/demos/1.0b1/docs/_assets/css/jqm-docs.css - đây là phần bổ sung cho bản demo - chúng là chỉ cần sử dụng các truy vấn phương tiện để đẩy # nội dung thứ cấp sang bên trái nếu có đủ màn hình bất động sản. –

+0

Tôi đã sửa chữa, nhưng tôi vẫn còn bối rối. Khi tôi cố gắng mô phỏng mã ở trên, hãy nhấp vào bất kỳ liên kết nào trong thanh bên khiến toàn bộ chế độ xem được thay thế bằng phần tử data-role = "page" mới mà tôi đã liên kết đến. Hành vi mong muốn (mà bản demo có) là thay đổi vùng nội dung chính và thanh bên còn lại. Liên kết hoạt động như thế nào? –

0

Bạn cần phải thêm mã này vào tệp javascript:

function setPositions(){ 
    var winwidth = $(window).width() 

    if(winwidth >= 750){ 
     $('.content-secondary').css({'float':'left','width':'35%'}); 
     $('.content-primary').css({'margin-left':'36%'}); 
    } 
    else{ 
     $('.content-secondary').css({'float':'none','width':'100%'}); 
     $('.content-primary').css({'margin-left':'0px'}); 
    } 
} 


$(function(){ 
    setDefaultTransition(); 
    $(window).bind("throttledresize", setPositions); 
}); 
+3

Nói chung, không nên làm gì với JavaScript nên làm gì với CSS. –

+0

bạn nên làm điều này với truy vấn phương tiện CSS thay vào đó, vui lòng đọc: http://www.w3.org/TR/css3-mediaqueries/ –

+0

Tôi thích sử dụng js hơn truy vấn phương tiện ... ... css nên ** không * * được sử dụng để xử lý logic (đó là những gì các phương tiện truyền thông truy vấn có hiệu quả làm) ... đó là công việc của một ngôn ngữ kịch bản, như js ... ... ... css của công việc là để giữ dữ liệu (về cơ bản là một "cơ sở dữ liệu" các giá trị liên quan đến bố cục được "truy vấn" trong quá trình phân tích cú pháp) – dsdsdsdsd