Bootstrap 3: pociągnij w prawo tylko dla col-lg

127

Nowy w bootstrapie 3 ... W moim układzie mam:

<div class="row">
    <div class="col-lg-6 col-md-6">elements 1</div>
    <div class="col-lg-6 col-md-6">
         <div class="pull-right">
            elements 2
         </div>
    </div>
</div>

Chciałbym, aby „elementy 2” NIE były wyrównane dokładnie na ekranach mniejszych niż col-lg. Tak efektywnie mając klasę pull-right tylko dla col-lg-6 ...

Jak mogłem to osiągnąć?

Oto skrzypce: http://jsfiddle.net/thibs/Y6WPz/

Dziękuję Ci

Thibs
źródło
3
Wygląda na to, że może
eggy
Więc to jest teraz rzecz w Bootstrap 4 . Po prostu użyj order-lg-1, order-lg-2itp. Na swoich kolumnach.
limfinity

Odpowiedzi:

156

Możesz umieścić „element 2” w mniejszej kolumnie (np .:), col-2a następnie używać tylko pushna większych ekranach:

<div class="row">
    <div class="col-lg-6 col-xs-6">elements 1</div>
    <div class="col-lg-6 col-xs-6">
      <div class="row">
       <div class="col-lg-2 col-lg-push-10 col-md-2 col-md-push-0 col-sm-2 col-sm-push-0 col-xs-2 col-xs-push-0">
         <div class="pull-right">elements 2</div>
       </div>
      </div>
    </div>
</div>

Demo: http://bootply.com/88095

Inną opcją jest nadpisanie wartości zmiennoprzecinkowej .pull-rightprzy użyciu zapytania @media.

@media (max-width: 1200px) {
    .row .col-lg-6 > .pull-right {
        float: none !important;
    }
}

Wreszcie inną opcją jest utworzenie własnej .pull-right-lgklasy CSS.

@media (min-width: 1200px) {
    .pull-right-lg {
        float: right;
    }
}

AKTUALIZACJA

Bootstrap 4 zawiera responsywne pływaki , więc w tym przypadku po prostu użyjesz float-lg-right.
Nie jest potrzebny żaden dodatkowy kod CSS .

Demo Bootstrap 4

Zim
źródło
dzięki za to, ale zawartość musi używać pełnych 6 kolumn, inaczej się zawija, czego nie chcemy.
Czw,
miał nadzieję, że nie otrzyma zapytania o media, ale wystarczy. Dziękuję
Thibs
28

Wypróbuj ten MNIEJSZY fragment kodu (został utworzony na podstawie powyższych przykładów i mieszanych zapytań o media w grid.less).

@media (min-width: @screen-sm-min) {
.pull-right-sm {
  float: right;
}
}
@media (min-width: @screen-md-min) {
.pull-right-md {
  float: right;
}
}
@media (min-width: @screen-lg-min) {
.pull-right-lg {
  float: right;
}
}
Mark P.
źródło
Wykop to rozwiązanie!
Pez
3
Należy to dodać do bootstrapa.
Lorem Ipsum Dolor
20
.pull-right-not-xs, .pull-right-not-sm, .pull-right-not-md, .pull-right-not-lg{
    float: right;
}

.pull-left-not-xs, .pull-left-not-sm, .pull-left-not-md, .pull-left-not-lg{
    float: left;
}
@media (max-width: 767px) {    
    .pull-right-not-xs, .pull-left-not-xs{
        float: none;
    }
    .pull-right-xs {
        float: right;
    }
    .pull-left-xs {
        float: left;
    }
}
@media (min-width: 768px) and (max-width: 991px) {
    .pull-right-not-sm, .pull-left-not-sm{
        float: none;
    }
    .pull-right-sm {
        float: right;
    }
    .pull-left-sm {
        float: left;
    }
}
@media (min-width: 992px) and (max-width: 1199px) {
    .pull-right-not-md, .pull-left-not-md{
        float: none;
    }
    .pull-right-md {
        float: right;
    }
    .pull-left-md {
        float: left;
    }
}
@media (min-width: 1200px) {
    .pull-right-not-lg, .pull-left-not-lg{
        float: none;
    }
    .pull-right-lg {
        float: right;
    }
    .pull-left-lg {
        float: left;
    }
}
Koks
źródło
Świetnie, to powinno być częścią domyślnego Bootstrapa!
Owen
12

Nie ma potrzeby tworzenia własnej klasy z zapytaniami o media. Bootstrap 3 ma już porządek zmiennoprzecinkowy dla punktów przerwania multimediów w ramach kolejności kolumn: http://getbootstrap.com/css/#grid-column-ordering

Składnia klasy to col-<#grid-size>-(push|pull)-<#cols>gdzie <#grid-size>jest xs, sm, md lub lg i <#cols>określa, jak daleko kolumna ma się przesunąć dla tego rozmiaru siatki. Pchanie lub ciągnięcie jest oczywiście w lewo lub w prawo.

Używam go cały czas, więc wiem, że działa dobrze.

Quinn
źródło
3

Działa również dobrze:

/* small screen portrait */

@media (max-width: 321px) {

  .pull-right { 
    float: none!important; 
  }

}


/* small screen lanscape */

@media (max-width: 480px) {

  .pull-right {
    float: none!important; 
  }

}
Greg
źródło
3

Dodanie CSS pokazanego poniżej do aplikacji Bootstrap 3 umożliwia obsługę

pull-{ε|sm-|md-|lg-}left
pull-{ε|sm-|md-|lg-}right

zajęcia, które działają dokładnie tak, jak nowe

float-{ε|sm-|md-|lg-|xl-}left
float-{ε|sm-|md-|lg-|xl-}right

klasy, które zostały wprowadzone w Bootstrap 4:

@media (min-width: 768px) {
    .pull-sm-left {
        float: left !important;
    }
    .pull-sm-right {
        float: right !important;
    }
    .pull-sm-none {
        float: none !important;
    }
}
@media (min-width: 992px) {
    .pull-md-left {
        float: left !important;
    }
    .pull-md-right {
        float: right !important;
    }
    .pull-md-none {
        float: none !important;
    }
}
@media (min-width: 1200px) {
    .pull-lg-left {
        float: left !important;
    }
    .pull-lg-right {
        float: right !important;
    }
    .pull-lg-none {
        float: none !important;
    }
}
.pull-none {
    float: none !important;
}

Poza tym dodaje

pull-{ε|sm-|md-|lg-}none

dla kompletności, będąc kompatybilnym z

float-{ε|sm-|md-|lg-|xl-}none

z Bootstrap 4.

krakanie
źródło
2

Dla zainteresowanych wyrównaniem tekstu prostym rozwiązaniem jest utworzenie nowej klasy:

.text-right-large {
    text-align: right;
}
@media (max-width: 991px) {
    .text-right-large {
        text-align: left;
    }
}

Następnie dodaj tę klasę:

<div class="row">
    <div class="col-lg-6 col-md-6">elements 1</div>
    <div class="col-lg-6 col-md-6 text-right-large">
        elements 2
    </div>
</div>
jchavannes
źródło
2

Korzystanie z Sass jest bardzo proste, wystarczy użyć @extend:

.pull-right-xs { 
    @extend .pull-right;
 }
Rogerio Orioli
źródło
1

To jest to, czego używam. zmień @ screen-md-max na inne rozmiary

/* Pull left in lg resolutions */
@media (min-width: @screen-md-max) {
    .pull-xs-right {
        float: right !important;
    }
    .pull-xs-left {
        float: left !important;
    }

    .radio-inline.pull-xs-left  + .radio-inline.pull-xs-left ,
    .checkbox-inline.pull-xs-left  + .checkbox-inline.pull-xs-left  {
        margin-left: 0;
    }
    .radio-inline.pull-xs-left, .checkbox-inline.pull-xs-left{
        margin-right: 10px;
    }
}
aWebDeveloper
źródło
1

Po prostu użyj responsywnych klas narzędzi bootstrap!

Najlepszym rozwiązaniem do tego zadania jest użycie następującego kodu:

<div class="row">
    <div class="col-lg-6 col-md-6">elements 1</div>
    <div class="col-lg-6 col-md-6 text-right">
        <div class="visible-lg-inline-block visible-md-block visible-sm-block visible-xs-block">
            elements 2
        </div>
    </div>
</div>

Element zostanie wyrównany do prawej strony tylko na lgekranach - na pozostałych displayatrybut zostanie ustawiony blocktak, jak domyślnie dla divelementu. To podejście polega na użyciu text-rightklasy w elemencie nadrzędnym zamiast pull-right.

Alternatywne rozwiązanie:

Największą wadą jest to, że kod HTML wewnątrz musi zostać powtórzony dwukrotnie.

<div class="row">
    <div class="col-lg-6 col-md-6">elements 1</div>
    <div class="col-lg-6 col-md-6">
         <div class="pull-right visible-lg">
            elements 2
         </div>
         <div class="hidden-lg">
            elements 2
         </div>
    </div>
</div>
Łukasz
źródło
1

Możesz użyć poleceń push i pull, aby zmienić kolejność kolumn. Ciągniesz jedną kolumnę, a drugą popychasz na dużych urządzeniach:

<div class="row">
    <div class="col-lg-6 col-md-6 col-lg-pull-6">elements 1</div>
    <div class="col-lg-6 col-md-6 col-lg-push-6">
         <div>
            elements 2
         </div>
    </div>
</div>
Carlos Ucha
źródło
0

teraz zawiera bootstrap 4:

@import url('https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.3/css/bootstrap.min.css');

a kod powinien wyglądać następująco:

<div class="row">
    <div class="col-lg-6 col-md-6" style="border:solid 1px red">elements 1</div>
    <div class="col-lg-6 col-md-6" style="border:solid 1px red">
         <div class="pull-lg-right pull-xl-right">
            elements 2
         </div>
    </div>
</div>
Vasile
źródło