Blame view

WebRoot/static/ace/css/less/bootstrap/mixins/grid-framework.less 2.99 KB
ad5081d3   孙向锦   初始化项目
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:  (@grid-gutter-width / 2);
        padding-right: (@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: ~`(""+((@{index} / @{grid-columns}) * 100)).substring(0, (@{index} / @{grid-columns} < 0.1 ? 5 : 6))+"%"`;
    }
  }
  .calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {
    .col-@{class}-push-@{index} {
      left: ~`(""+((@{index} / @{grid-columns}) * 100)).substring(0, (@{index} / @{grid-columns} < 0.1 ? 5 : 6))+"%"`;
    }
  }
  .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: ~`(""+((@{index} / @{grid-columns}) * 100)).substring(0, (@{index} / @{grid-columns} < 0.1 ? 5 : 6))+"%"`;
    }
  }
  .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: ~`(""+((@{index} / @{grid-columns}) * 100)).substring(0, (@{index} / @{grid-columns} < 0.1 ? 5 : 6))+"%"`;
    }
  }
  
  // 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);
  }