Blame view

frontend/web/css/node_modules/bootstrap/less/mixins/grid-framework.less 2.82 KB
3da83322   Administrator   21.03.16 Versrka
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
  // Framework grid generation

  //

  // Used only by Bootstrap to generate the correct number of grid classes given

  // any value of `@grid-columns`.

  

  .make-grid-columns() {

    // Common styles for all sizes of grid columns, widths 1-12

    .col(@index) { // initial

      @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}";

      .col((@index + 1), @item);

    }

    .col(@index, @list) when (@index =< @grid-columns) { // general; "=<" isn't a typo

      @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}";

      .col((@index + 1), ~"@{list}, @{item}");

    }

    .col(@index, @list) when (@index > @grid-columns) { // terminal

      @{list} {

        position: relative;

        // Prevent columns from collapsing when empty

        min-height: 1px;

        // Inner gutter via padding

        padding-left:  ceil((@grid-gutter-width / 2));

        padding-right: floor((@grid-gutter-width / 2));

      }

    }

    .col(1); // kickstart it

  }

  

  .float-grid-columns(@class) {

    .col(@index) { // initial

      @item: ~".col-@{class}-@{index}";

      .col((@index + 1), @item);

    }

    .col(@index, @list) when (@index =< @grid-columns) { // general

      @item: ~".col-@{class}-@{index}";

      .col((@index + 1), ~"@{list}, @{item}");

    }

    .col(@index, @list) when (@index > @grid-columns) { // terminal

      @{list} {

        float: left;

      }

    }

    .col(1); // kickstart it

  }

  

  .calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {

    .col-@{class}-@{index} {

      width: percentage((@index / @grid-columns));

    }

  }

  .calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {

    .col-@{class}-push-@{index} {

      left: percentage((@index / @grid-columns));

    }

  }

  .calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {

    .col-@{class}-push-0 {

      left: auto;

    }

  }

  .calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {

    .col-@{class}-pull-@{index} {

      right: percentage((@index / @grid-columns));

    }

  }

  .calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {

    .col-@{class}-pull-0 {

      right: auto;

    }

  }

  .calc-grid-column(@index, @class, @type) when (@type = offset) {

    .col-@{class}-offset-@{index} {

      margin-left: percentage((@index / @grid-columns));

    }

  }

  

  // Basic looping in LESS

  .loop-grid-columns(@index, @class, @type) when (@index >= 0) {

    .calc-grid-column(@index, @class, @type);

    // next iteration

    .loop-grid-columns((@index - 1), @class, @type);

  }

  

  // Create grid for specific class

  .make-grid(@class) {

    .float-grid-columns(@class);

    .loop-grid-columns(@grid-columns, @class, width);

    .loop-grid-columns(@grid-columns, @class, pull);

    .loop-grid-columns(@grid-columns, @class, push);

    .loop-grid-columns(@grid-columns, @class, offset);

  }