2011-06-27 29 views
14

Normalnie, gdy tworzysz element data-role = "page" z jQuery mobile, przejmuje on cały obszar wyświetlania. Z tego powodu nie rozumiem, jak utworzyć pasek boczny. Chciałbym naśladować następujące, ale źródłowy nie pomaga:Tworzenie paska bocznego w jQuery mobile

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

Zauważ, że po kliknięciu elementu na liście, to zamienia się w pasku bocznym i pokazuje inną listę w głównym obszar zawartości. Dodatkowo, jeśli wyświetlacz jest wystarczająco skrócony, wyświetla tylko główny obszar zawartości. Czy istnieje specjalna funkcja w jQuery mobile, która pozwala na to, czy jest za tym dużo nieprzejrzystych javascriptów i CSS?

Odpowiedz

13

Patrząc na beta Podziel widok składni można kontrolować "Sidebar" tak:

<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 --> 

Docs: http://jquerymobile.com/demos/1.0b1/ (prawy przycisk myszy, aby wyświetlić źródło)

Stosowne CSS: http://jquerymobile.com/demos/1.0b1/docs/_assets/css/jqm-docs.css

Przyzwoity artykuł ALA mówiący o zapytaniach o media (co robili): http://www.alistapart.com/articles/responsive-web-design/

+0

Tak, też to widziałem, ale nie sądzę, że tak naprawdę jest tam, gdzie tworzony jest pasek boczny. Uważam, że jest to kod służący do podziału dwóch osobnych list pokazanych w linku, który właśnie podałeś. Dlatego nie uważam, że "źródło widoku" jest pomocne w tym kontekście ... pokazuje tylko, jak wygląda root dema. –

+3

Tak właśnie działa pasek boczny - spójrz na http://jquerymobile.com/demos/1.0b1/docs/_assets/css/jqm-docs.css - który jest dodatkowym css dla wersji demonstracyjnej - są one po prostu za pomocą zapytań o media popchnij # treść-drugorzędny w lewo, jeśli jest wystarczająco dużo nieruchomości na ekranie. –

+0

Stoję poprawione, ale nadal jestem zdezorientowany. Kiedy próbuję emulować powyższy kod, kliknięcie dowolnego linku na pasku bocznym powoduje zastąpienie całego widoku nowym elementem data-role = "page", z którym łączyłem. Pożądanym zachowaniem (które ma demo) jest zmiana głównego obszaru zawartości i paska bocznego. Jak działa linkowanie? –

0

Musisz dodać ten kod do pliku 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

Generalnie nie jest dobrym pomysłem zrobić z JavaScriptem, co należy zrobić z CSS. –

+0

powinieneś to zrobić z zapytaniami o media CSS, przeczytaj: http://www.w3.org/TR/css3-mediaqueries/ –

+0

Wolę używać js na zapytania o media ... ... css should ** not * * używane do obsługi logiki (to jest to, czego skutecznie dokonują zapytania mediów) ... to jest zadanie języka skryptowego, jak js ... ... ... zadaniem css jest przechowywanie danych (w zasadzie "baza danych") wartości związanych z układem, które są "wyszukiwane" podczas parsowania) – dsdsdsdsd

Powiązane problemy