2013-06-25 17 views
9

Po przeczytaniu nowego (niedokończonego) Bootstrap 3 docs zastanawiam się, jak stworzyć semantyczną sieć mobilną.Bootstrap 3.x semantycznej sieci mobilnej

Krótko mówiąc. Jak przekonwertować to:

<div class="row"> 
    <div class="col col-lg-6 col-sm-6">6</div> 
    <div class="col col-lg-6 col-sm-6">6</div> 
</div> 

Aby to i zachować niewielką siatkę mobile:

<div class="wrapper"> 
    <div class="left">6</div> 
    <div class="right">6</div> 
</div> 

Mniej

.wrapper { .make-row(); } 
.left { .make-column(6); // this creates only large grid } 
.right { .make-column(6); } 

Odpowiedz

4

Jeśli rozumiem pytanie dobrze myślę, że należy użyć:


<div class="row"> <div class="col-span-6 col-small-span-6″>6</div> <div class="col-span-6 col-small-span-6″>6</div> </div>

Gdzie col-span-6 jest klasa dla dużej sieci i col-small-span-6 dla małej sieci. Jeśli opuścisz col-small-span-6 twój div będzie się stosował. Mała siatka nie używa klas col-span-*.

Zobacz także: http://bassjobsen.weblogs.fm/migrate-your-templates-from-twitter-bootstrap-2-x-to-twitter-bootstrap-3/

Od teraz Twittera Bootstrap definiuje trzy siatek: Tiny siatkę do telefonów (< 480px), Siatka do tabletek (< 768px) oraz średnich i dużych sieci dla Destkops (> 768px) . Prefiksy klasy wiersza dla tych siatek to ".col-", ".col-sm-" i ".col-lg-". Średnio-duża siatka będzie się składać z mniejszej niż 768 pikseli szerokości ekranu. Tak samo mała siatka poniżej 480 pikseli i mała siatka nigdy się nie układa.

Więc html powinno być:

<div class="row"> 
    <div class="col-6 col-lg-6 col-sm-6">6</div> 
    <div class="col-6 col-lg-6 col-sm-6">6</div> 
</div> 

MNIEJ Najnowsza wersja: https://github.com/twitter/bootstrap/archive/3.0.0-wip.zip nie zawiera funkcję .Dokonać-small-kolumna więcej. Zobacz także: https://github.com/twbs/bootstrap/pull/8302 .make-column() doda zapytanie o media dla min-width: @ grid-float-breakpoint, więc na małej siatce twoje kolumny będą się układać w stos zawsze za pomocą tej funkcji.

można spróbować:

// Generate the small columns 
.make-small-column(@columns) { 
    position: relative; 
    float: left; 
    // Prevent columns from collapsing when empty 
    min-height: 1px; 
    // Inner gutter via padding 
    padding-left: (@grid-gutter-width/2); 
    padding-right: (@grid-gutter-width/2); 
    @max : (@grid-float-breakpoint - 1); 
    // Calculate width based on number of columns available 
    @media (max-width: @max) { 
    width: percentage((@columns/@grid-columns)); 
    } 
} 

.wrapper { .make-row(); } 
.left { .make-column(6); .make-small-column(6);} 
.right { .make-column(6); .make-small-column(6);} 

UPDATE

Odpowiedź powyżej będą oparte na kandydatów uwalnianiu Twittera Bootstrap 3. Ostateczna wersja Twittera Bootstrap 3 ma 4 siatkę dodatkowy mały (xs), mały (sm), średni (md) i duży (lg). Również mniejszy kod został zmieniony zgodnie z tymi siatkami. Więc używać .make- {x} -column wstawek jak opisany przez @gravy w jego odpowiedź: https://stackoverflow.com/a/18667955/1596547

11

Część 1: Rant

nienawidzę bootstrappers Używanie klas html div jako warstwy prezentacji ich HTML !! ! Cieszę się, że chcesz poprawnie zaprogramować swoją stronę.

Przypomina mi lata 90. i początku XXI wieku, kiedy wszyscy budowaliśmy strony internetowe z tabelami ... czy cofamy ludzi?

<div class="col-6 col-lg-6 col-sm-6">6</div> 
<div class="col-6 col-lg-6 col-sm-6">6</div> 

vs

<table><tr><td>6</td><td>6</td></tr></table> 

czekam na dzień, że Google nakłada kary na non-semantycznych znaczników.

CZĘŚĆ 2: Rozwiązanie

Tak czy inaczej, ciągnąc ten Wracając do pytania ...

Dla bootstrap 3, o ile mi wiadomo, nie można używać .make-column(6) itd ... jak za Odpowiedź Bass Jobsen, ponieważ musisz określić rozmiar okna/ekranu. lg/md/sm/xs

Oto jak zrobiłbym to ...

main.less

@import 'bootstrap.less'; 

.wrapper { 
    .container; 
    .make-row(); 
    .clearfix(); 
} 

.content-main { // Change these for each window size 
    .make-lg-column(6); 
    .make-md-column(6); 
    .make-sm-column(6); 
    .make-xs-column(6); 
} 
.content-sidebar { // change these for each window size 
    .make-lg-column(6); 
    .make-md-column(6); 
    .make-sm-column(6); 
    .make-xs-column(6); 
} 

index.html

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>Page Title</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <meta charset="UTF-8"> 
    <style rel="stylesheet/less" src="less/main.less" /> 
    <script src="js/less-1.4.1.min.js" type="text/javascript"></script> 

    <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> 
    <!--[if lt IE 9]> 

    <script src="assets/js/html5shiv.js"></script> 
    <script src="assets/js/respond.min.js"></script> 
    <![endif]--> 
</head> 
<body> 
    <div class="wrapper"> 
     <div class="content-main"> 
      <div class="page-title"> 
       <!-- Page Title Stuff --> 
      </div> 
      <div class="page-content"> 
       <!-- Page Content Stuff --> 
      </div> 
     </div> 
     <div class="content-sidebar"><!-- Page Footer Stuff --></div> 
    </div> 
</body> 

+3

Ta odpowiedź wykorzystuje wstawek dostarczonych przez Bootstrap co jest dobre. Byłbym nieufny wobec umieszczania '.container' i' .make-row' na tym samym elemencie, chociaż mają różne marginesy (automatyczne marginesy dla kontenera i ujemne marginesy o połowę rozmiaru rynny dla wierszy). Dlatego twoje rzędy powinny być umieszczone w dowolnym pojemniku. – rmarscher