balsamine.2017-2018
clone your own copy | download snapshot

Snapshots | iceberg

Inside this repository

grid.less
text/plain

Download raw (5.0 KB)

@main-width: @page-width - @page-margin-inside - @page-margin-outside;
@main-height: @page-height - @page-margin-top - @page-margin-bottom;

@col-width: (@main-width - ((@col-number - 1) * @col-gutter)) / @col-number;
@row-height: (@main-height - ((@row-number - 1) * @row-gutter)) / @row-number;

@col-gutter-width: @col-width + @col-gutter;
@row-gutter-height: @row-height + @row-gutter;


/* x classes */
.create-x-classes(@i:0) when(@i < @col-number) {
    .x@{i}{
       left: (@i * @col-width) + (@i * @col-gutter);
    }
    .create-x-classes(@i + 1);
}
.create-x-classes();

/* y classes */
.create-y-classes(@i:0) when(@i < @row-number) {
    .y@{i}{
       top: (@i * @row-height) + (@i * @row-gutter);
    }
    .create-y-classes(@i + 1);
}
.create-y-classes();

/* width classes */
.create-w-classes(@i:1) when(@i <= @col-number) {
    .w@{i}{
       width: (@col-width * @i) + (@col-gutter * (@i - 1));
    }
    .create-w-classes(@i + 1);
}
.create-w-classes();

/* height classes */
.create-h-classes(@i:1) when(@i <= @row-number) {
    .h@{i}{
       height: (@row-height * @i) + (@row-gutter * (@i - 1));
    }
    .create-h-classes(@i + 1);
}
.create-h-classes();


.create-grid-classes(@prop: left, @class-name: x, @max-size: 100, @i: 0, @offset: 0, @odd: true) when (@offset <= @max-size) {
    .@{class-name}@{i} {
       @{prop}: @offset;
    };

    & when (@odd) {
        .create-grid-classes(@prop, @class-name, @max-size, @i + 1, @offset + @col-width, false) 
    };

    & when not (@odd) {
        .create-grid-classes(@prop, @class-name, @max-size, @i + 1, @offset + @col-gutter, true)
    };
}

html:not(.facing) .sheet:nth-child(odd) .l-1,
html.facing .sheet:nth-child(even) .l-1 { left: -( @page-margin-inside + 14pt); }

html:not(.facing) .sheet:nth-child(even) .l-1,
html.facing .sheet:nth-child(odd) .l-1 { left: -( @page-margin-outside + 14pt); }

.create-grid-classes(left, l, @main-width);

html:not(.facing) .sheet:nth-child(odd) .r-1,
html.facing .sheet:nth-child(even) .r-1 { right: -( @page-margin-outside + 14pt); }

html:not(.facing) .sheet:nth-child(even) .r-1,
html.facing .sheet:nth-child(odd) .r-1 { right: -( @page-margin-inside + 14pt); }

.create-grid-classes(right, r, @main-width);

.t-1 { top: -( @page-margin-top + 14pt); }
.create-grid-classes(top, t, @main-height);
.b-1 { bottom: -( @page-margin-bottom + 14pt); }
.create-grid-classes(bottom, b, @main-height);


.grid .main {
    outline: 1px solid @grid-color;
    background-attachment: local;
    background-size: 100% @row-gutter-height, 
                     @col-gutter-width 100%, 
                     100% @row-gutter-height, 
                     @col-gutter-width 100%,
                     100% 12pt;
    background-position: -1px -1px, 
                         -1px -1px, 
                         -(@col-gutter + 0) -(@row-gutter + 0), 
                         -(@col-gutter + 0) -(@row-gutter + 0),
                         0 -1px;
    background-image: -webkit-linear-gradient(top, @grid-color 1px, transparent 1px),
                      -webkit-linear-gradient(left, @grid-color 1px, transparent 1px),
                      -webkit-linear-gradient(top, @grid-color 1px, transparent 1px),
                      -webkit-linear-gradient(left, @grid-color 1px, transparent 1px),
                      -webkit-linear-gradient(top, @baseline-grid-color 1px, transparent 1px);
    background-image:    -moz-linear-gradient(top, @grid-color 1px, transparent 1px),
                         -moz-linear-gradient(left, @grid-color 1px, transparent 1px),
                         -moz-linear-gradient(top, @grid-color 1px, transparent 1px),
                         -moz-linear-gradient(left, @grid-color 1px, transparent 1px),
                         -moz-linear-gradient(top, @baseline-grid-color 1px, transparent 1px);
    background-image:     -ms-linear-gradient(top, @grid-color 1px, transparent 1px),
                          -ms-linear-gradient(left, @grid-color 1px, transparent 1px),
                          -ms-linear-gradient(top, @grid-color 1px, transparent 1px),
                          -ms-linear-gradient(left, @grid-color 1px, transparent 1px),
                          -ms-linear-gradient(top, @baseline-grid-color 1px, transparent 1px);
    background-image:      -o-linear-gradient(top, @grid-color 1px, transparent 1px),
                           -o-linear-gradient(left, @grid-color 1px, transparent 1px),
                           -o-linear-gradient(top, @grid-color 1px, transparent 1px),
                           -o-linear-gradient(left, @grid-color 1px, transparent 1px),
                           -o-linear-gradient(top, @baseline-grid-color 1px, transparent 1px);
    background-image: linear-gradient(to bottom, @grid-color 1px, transparent 1px),
                      linear-gradient(to right, @grid-color 1px, transparent 1px),
                      linear-gradient(to bottom, @grid-color 1px, transparent 1px),
                      linear-gradient(to right, @grid-color 1px, transparent 1px),
                      linear-gradient(to bottom, @baseline-grid-color 1px, transparent 1px);
}