Pavel Popeskul

index page

1 +{
2 + "name": "home2you",
3 + "authors": [
4 + "Pasha Popeskul <peterjj91@gmail.com>"
5 + ],
6 + "description": "",
7 + "main": "",
8 + "moduleType": [],
9 + "license": "MIT",
10 + "homepage": "",
11 + "private": true,
12 + "ignore": [
13 + "**/.*",
14 + "node_modules",
15 + "bower_components",
16 + "test",
17 + "tests"
18 + ],
19 + "dependencies": {
20 + "bootstrap": "^3.3.6",
21 + "jquery": "^2.2.1",
22 + "bootstrap-select": "1.12.2"
23 + }
24 +}
1 +<div class="footer">
2 + <div class="footer__container">
3 + <div class="footer__left">
4 + <p>Следите за кампанией</p>
5 +
6 + <ul class="social">
7 + <li><a href="#">Вконтакте</a></li>
8 + <li><a href="#">Фейсбук</a></li>
9 + <li><a href="#">Твиттер</a></li>
10 + <li><a href="#">Одноклассники</a></li>
11 + </ul>
12 +
13 + <p>Оставьте нам свой мобильный телефон. Мы отправим вам сообщение перед выборами</p>
14 +
15 +
16 + <form class="form-inline" role="form">
17 + <div class="form-group">
18 + <input type="email" class="form-control" placeholder="">
19 + </div>
20 + <button type="submit" class="btn btn-default">Напомнить о выборах</button>
21 + </form>
22 + </div>
23 +
24 + <div class="footer__right">
25 + <p>Пообщаться с кандидатами</p>
26 +
27 + <ul class="social">
28 + <li><a href="#">Телеграм</a></li>
29 + <li><a href="#">Электронная почта</a></li>
30 + <li><a href="#">Телефон</a></li>
31 + </ul>
32 + </div>
33 +
34 + <div class="col-xs-24 text-center">
35 + <br>
36 +
37 + <h4 class="">Приходите на выборы 10 сентября 2017 года <br> и голосуйте за независимую команду</h4>
38 +
39 + <br>
40 +
41 + <button type="button" class="btn btn-default">Как проголосовать</button>
42 + </div>
43 + </div>
44 +</div>
45 +</body>
46 +</html>
...\ No newline at end of file ...\ No newline at end of file
1 +<!doctype html>
2 +<html lang="ru">
3 +<head>
4 + <meta charset="utf-8">
5 + <meta http-equiv="x-ua-compatible" content="ie=edge">
6 + <title>Выборы в Совет депутатов Савёловского района</title>
7 + <meta name="description" content="">
8 + <meta name="viewport" content="width=device-width, initial-scale=1">
9 + <link rel="apple-touch-icon" href="/img/apple-touch-icon.png">
10 + <link rel="stylesheet" href="css/main.css">
11 + <script src="js/main.js"></script>
12 +</head>
13 +<body>
14 +<div class="header">
15 + <div class="header__container">
16 + <a href="#" class="header__logo">
17 + <div class="icon icon__logo"></div>
18 + </a>
19 +
20 + <div class="head-h1 header__title">Выборы в Совет <br> депутатов Савёловского района</div>
21 +
22 + <br>
23 +
24 + <p>10 сентября вы выбираете между теми, кому небезразличен район, чья жизнь с ним связана, <br> и теми, кто бездумно исполняет любые указания Управы района.</p>
25 +
26 + <br>
27 +
28 + <button type="button" class="btn btn-default">Познакомится с кандидатами</button>
29 +
30 + <div class="header__nav">
31 + <ul class="nav">
32 + <li><a href="#">О совете депутатов</a></li>
33 + <li><a href="#">Кандидаты</a></li>
34 + <li><a href="#">Как помочь</a></li>
35 + <li><a href="#">Стать волонтёром</a></li>
36 + <li><a href="#">Как проголосовать</a></li>
37 + </ul>
38 + </div>
39 + </div>
40 +</div>
...\ No newline at end of file ...\ No newline at end of file
This diff could not be displayed because it is too large.
1 +
2 +<!doctype html>
3 +<html lang="ru">
4 +<head>
5 + <meta charset="utf-8">
6 + <meta http-equiv="x-ua-compatible" content="ie=edge">
7 + <title>Выборы в Совет депутатов Савёловского района</title>
8 + <meta name="description" content="">
9 + <meta name="viewport" content="width=device-width, initial-scale=1">
10 + <link rel="apple-touch-icon" href="/img/apple-touch-icon.png">
11 + <link rel="stylesheet" href="css/main.css">
12 + <script src="js/main.js"></script>
13 +</head>
14 +<body>
15 +<div class="header">
16 + <div class="header__container">
17 + <a href="#" class="header__logo">
18 + <div class="icon icon__logo"></div>
19 + </a>
20 +
21 + <div class="head-h1 header__title">Выборы в Совет <br> депутатов Савёловского района</div>
22 +
23 + <br>
24 +
25 + <p>10 сентября вы выбираете между теми, кому небезразличен район, чья жизнь с ним связана, <br> и теми, кто бездумно исполняет любые указания Управы района.</p>
26 +
27 + <br>
28 +
29 + <button type="button" class="btn btn-default">Познакомится с кандидатами</button>
30 +
31 + <div class="header__nav">
32 + <ul class="nav">
33 + <li><a href="#">О совете депутатов</a></li>
34 + <li><a href="#">Кандидаты</a></li>
35 + <li><a href="#">Как помочь</a></li>
36 + <li><a href="#">Стать волонтёром</a></li>
37 + <li><a href="#">Как проголосовать</a></li>
38 + </ul>
39 + </div>
40 + </div>
41 +</div>
42 +
43 +<div class="content">
44 + <div class="content__container">
45 +
46 + </div>
47 +</div>
48 +
49 +<div class="footer">
50 + <div class="footer__container">
51 + <div class="footer__left">
52 + <p>Следите за кампанией</p>
53 +
54 + <ul class="social">
55 + <li><a href="#">Вконтакте</a></li>
56 + <li><a href="#">Фейсбук</a></li>
57 + <li><a href="#">Твиттер</a></li>
58 + <li><a href="#">Одноклассники</a></li>
59 + </ul>
60 +
61 + <p>Оставьте нам свой мобильный телефон. Мы отправим вам сообщение перед выборами</p>
62 +
63 +
64 + <form class="form-inline" role="form">
65 + <div class="form-group">
66 + <input type="email" class="form-control" placeholder="">
67 + </div>
68 + <button type="submit" class="btn btn-default">Напомнить о выборах</button>
69 + </form>
70 + </div>
71 +
72 + <div class="footer__right">
73 + <p>Пообщаться с кандидатами</p>
74 +
75 + <ul class="social">
76 + <li><a href="#">Телеграм</a></li>
77 + <li><a href="#">Электронная почта</a></li>
78 + <li><a href="#">Телефон</a></li>
79 + </ul>
80 + </div>
81 +
82 + <div class="col-xs-24 text-center">
83 + <br>
84 +
85 + <h4 class="">Приходите на выборы 10 сентября 2017 года <br> и голосуйте за независимую команду</h4>
86 +
87 + <br>
88 +
89 + <button type="button" class="btn btn-default">Как проголосовать</button>
90 + </div>
91 + </div>
92 +</div>
93 +</body>
94 +</html>
...\ No newline at end of file ...\ No newline at end of file
This diff could not be displayed because it is too large.
1 +var gulp = require('gulp'),
2 + browserSync = require('browser-sync'),
3 + mainBowerFiles = require('main-bower-files'),
4 + less = require('gulp-less'),
5 + filter = require('gulp-filter'),
6 + concat = require('gulp-concat'),
7 + spritesmith = require('gulp.spritesmith'),
8 + del = require('del'),
9 + autoprefixer = require('gulp-autoprefixer'),
10 + cssmin = require('gulp-minify-css'),
11 + rigger = require('gulp-rigger'),
12 + pump = require('pump'),
13 + uglify = require('gulp-uglify'),
14 + print = require('gulp-print');
15 +
16 +var svgstore = require('gulp-svgstore');
17 +var svgmin = require('gulp-svgmin');
18 +var path = require('path');
19 +
20 +var Promise = require('es6-promise').Promise;
21 +
22 +var paths = {
23 + bower: mainBowerFiles(),
24 + src:{
25 + html: 'src/*.html',
26 + js: ['src/scripts/*.js'],
27 + css: 'src/styles/main.less',
28 + img: 'src/img/**/*',
29 + fonts: 'src/fonts/**/*.*',
30 + sprites: 'src/img/sprites/*.png',
31 + svg: 'src/icons/*.svg'
32 + },
33 + build:{
34 + html: 'build/',
35 + js: 'build/js/',
36 + css: 'build/css/',
37 + img: 'build/img/',
38 + fonts: 'build/fonts',
39 + spritesImg: 'build/img/',
40 + spritesCss: 'src/styles/',
41 + svg: 'build/icons/'
42 + },
43 + watch:{
44 + html: 'src/*.html',
45 + js: 'src/scripts/*.js',
46 + css: 'src/styles/*.less',
47 + img: 'src/img/*.*',
48 + fonts: 'src/fonts/*.*',
49 + sprites: 'src/img/sprites/*.png'
50 + }
51 +};
52 +
53 +
54 +gulp.task('build:svg', function () {
55 + return gulp
56 + .src(paths.src.svg)
57 + .pipe(svgmin(function getOptions (file) {
58 + var prefix = path.basename(file.relative, path.extname(file.relative));
59 + return {
60 + plugins: [{
61 + cleanupIDs: {
62 + prefix: prefix + '-',
63 + minify: true
64 + }
65 + }]
66 + }
67 + }))
68 + .pipe(svgstore())
69 + .pipe(gulp.dest(paths.build.svg));
70 +});
71 +
72 +gulp.task('build:svgtopng', function () {
73 + return gulp
74 + .src(paths.src.svg, {base: 'src/icons'})
75 + .pipe(gulp.dest(paths.build.svg));
76 +});
77 +
78 +
79 +gulp.task('build:html', function(){
80 + gulp.src(paths.src.html)
81 + .pipe(rigger())
82 + .pipe(gulp.dest(paths.build.html))
83 + .pipe(browserSync.reload({stream:true}));
84 +});
85 +
86 +gulp.task('build:js', function(){
87 +
88 + var a = paths.bower.concat(paths.src.js);
89 +
90 + gulp.src(a)
91 + .pipe(filter(['**/*.js']))
92 + .pipe(concat('main.js'))
93 + // .pipe(uglify())
94 + .pipe(gulp.dest(paths.build.js))
95 + .pipe(browserSync.reload({stream:true}));
96 +});
97 +
98 +gulp.task('build:css', function(){
99 + gulp.src(paths.src.css)
100 + .pipe(less())
101 + .pipe(concat('main.css'))
102 + .pipe(autoprefixer({
103 + browsers: ['last 2 versions'],
104 + cascade: false
105 + }))
106 + // .pipe(cssmin())
107 + .pipe(gulp.dest(paths.build.css))
108 + .pipe(browserSync.reload({stream:true}));
109 +
110 +});
111 +
112 +gulp.task('build:img', function(){
113 + gulp.src(paths.src.img)
114 + .pipe(gulp.dest(paths.build.img))
115 + .pipe(browserSync.reload({stream:true}));
116 +});
117 +
118 +gulp.task('build:sprites', function () {
119 + var spriteData = gulp.src(paths.src.sprites).pipe(spritesmith({
120 + imgName: 'sprite.png',
121 + cssName: 'sprite.less',
122 + imgPath: '../img/sprite.png',
123 + padding: 5
124 + }));
125 + // Pipe image stream through image optimizer and onto disk
126 + spriteData.img
127 + .pipe(gulp.dest(paths.build.spritesImg));
128 +
129 + // Pipe CSS stream through CSS optimizer and onto disk
130 + spriteData.css
131 + .pipe(gulp.dest(paths.build.spritesCss));
132 +});
133 +
134 +gulp.task('build:fonts', function(){
135 + gulp.src(paths.bower.concat([paths.src.fonts]))
136 + .pipe(filter(['**/*.eot', '**/*.otf', '**/*.woff', '**/*.ttf', '**/*.svg']))
137 + .pipe(gulp.dest(paths.build.fonts))
138 + .pipe(browserSync.reload({stream:true}));
139 +});
140 +
141 +gulp.task('build', ['build:svg', 'build:svgtopng', 'build:html', 'build:js','build:sprites', 'build:css', 'build:img', 'build:fonts']);
142 +
143 +gulp.task('reload', browserSync.reload);
144 +
145 +gulp.task('clean', function(cb){
146 + del('build/', cb);
147 +});
148 +
149 +gulp.task('serve', function(){
150 + browserSync({
151 + server: 'build/'
152 + });
153 +
154 + gulp.watch(paths.watch.html, ['build:html']);
155 + gulp.watch(paths.watch.js, ['build:js']);
156 + gulp.watch(paths.watch.css, ['build:css']);
157 + gulp.watch(paths.watch.img, ['build:img']);
158 + gulp.watch(paths.watch.sprites, ['build:sprites']);
159 + gulp.watch(paths.src.svg, ['build:svg', 'build:svgtopng', 'build:html']);
160 +});
161 +
162 +gulp.task('default', ['build', 'serve']);
1 +{
2 + "name": "web-dev.org",
3 + "version": "1.0.0",
4 + "description": "",
5 + "main": "index.js",
6 + "scripts": {
7 + "test": "echo \"Error: no test specified\" && exit 1"
8 + },
9 + "author": "web-dev.org",
10 + "license": "none",
11 + "devDependencies": {
12 + "bower": "^1.7.9",
13 + "browser-sync": "^2.13.0",
14 + "del": "^2.2.1",
15 + "es6-promise": "^3.2.1",
16 + "gulp": "^3.9.1",
17 + "gulp-autoprefixer": "^3.1.0",
18 + "gulp-concat": "^2.6.0",
19 + "gulp-filter": "^4.0.0",
20 + "gulp-less": "^3.1.0",
21 + "gulp-minify-css": "1.2.4",
22 + "gulp-print": "^2.0.1",
23 + "gulp-rigger": "^0.5.8",
24 + "gulp-svgmin": "^1.2.2",
25 + "gulp-svgstore": "^6.0.0",
26 + "gulp-uglify": "2.0.0",
27 + "gulp.spritesmith": "^6.2.1",
28 + "main-bower-files": "^2.13.1",
29 + "path": "^0.12.7",
30 + "pump": "1.0.2"
31 + },
32 + "dependencies": {
33 + "del": "^2.2.0",
34 + "path": "^0.12.7"
35 + }
36 +}
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<module type="WEB_MODULE" version="4">
3 + <component name="NewModuleRootManager" inherit-compiler-output="true">
4 + <exclude-output />
5 + <content url="file://$MODULE_DIR$" />
6 + <orderEntry type="inheritedJdk" />
7 + <orderEntry type="sourceFolder" forTests="false" />
8 + <orderEntry type="module-library">
9 + <library name="PHP Runtime" type="php">
10 + <CLASSES>
11 + <root url="jar://$APPLICATION_PLUGINS_DIR$/php/lib/php.jar!/stubs/standard" />
12 + </CLASSES>
13 + <JAVADOC />
14 + <SOURCES>
15 + <root url="jar://$APPLICATION_PLUGINS_DIR$/php/lib/php.jar!/stubs/standard" />
16 + </SOURCES>
17 + </library>
18 + </orderEntry>
19 + </component>
20 +</module>
...\ No newline at end of file ...\ No newline at end of file
1 +<div class="footer">
2 + <div class="footer__container">
3 + <div class="footer__left">
4 + <p>Следите за кампанией</p>
5 +
6 + <ul class="social">
7 + <li><a href="#">Вконтакте</a></li>
8 + <li><a href="#">Фейсбук</a></li>
9 + <li><a href="#">Твиттер</a></li>
10 + <li><a href="#">Одноклассники</a></li>
11 + </ul>
12 +
13 + <p>Оставьте нам свой мобильный телефон. Мы отправим вам сообщение перед выборами</p>
14 +
15 +
16 + <form class="form-inline" role="form">
17 + <div class="form-group">
18 + <input type="email" class="form-control" placeholder="">
19 + </div>
20 + <button type="submit" class="btn btn-default">Напомнить о выборах</button>
21 + </form>
22 + </div>
23 +
24 + <div class="footer__right">
25 + <p>Пообщаться с кандидатами</p>
26 +
27 + <ul class="social">
28 + <li><a href="#">Телеграм</a></li>
29 + <li><a href="#">Электронная почта</a></li>
30 + <li><a href="#">Телефон</a></li>
31 + </ul>
32 + </div>
33 +
34 + <div class="col-xs-24 text-center">
35 + <br>
36 +
37 + <h4 class="">Приходите на выборы 10 сентября 2017 года <br> и голосуйте за независимую команду</h4>
38 +
39 + <br>
40 +
41 + <button type="button" class="btn btn-default">Как проголосовать</button>
42 + </div>
43 + </div>
44 +</div>
45 +</body>
46 +</html>
...\ No newline at end of file ...\ No newline at end of file
1 +<!doctype html>
2 +<html lang="ru">
3 +<head>
4 + <meta charset="utf-8">
5 + <meta http-equiv="x-ua-compatible" content="ie=edge">
6 + <title>Выборы в Совет депутатов Савёловского района</title>
7 + <meta name="description" content="">
8 + <meta name="viewport" content="width=device-width, initial-scale=1">
9 + <link rel="apple-touch-icon" href="/img/apple-touch-icon.png">
10 + <link rel="stylesheet" href="css/main.css">
11 + <script src="js/main.js"></script>
12 +</head>
13 +<body>
14 +<div class="header">
15 + <div class="header__container">
16 + <a href="#" class="header__logo">
17 + <div class="icon icon__logo"></div>
18 + </a>
19 +
20 + <div class="head-h1 header__title">Выборы в Совет <br> депутатов Савёловского района</div>
21 +
22 + <br>
23 +
24 + <p>10 сентября вы выбираете между теми, кому небезразличен район, чья жизнь с ним связана, <br> и теми, кто бездумно исполняет любые указания Управы района.</p>
25 +
26 + <br>
27 +
28 + <button type="button" class="btn btn-default">Познакомится с кандидатами</button>
29 +
30 + <div class="header__nav">
31 + <ul class="nav">
32 + <li><a href="#">О совете депутатов</a></li>
33 + <li><a href="#">Кандидаты</a></li>
34 + <li><a href="#">Как помочь</a></li>
35 + <li><a href="#">Стать волонтёром</a></li>
36 + <li><a href="#">Как проголосовать</a></li>
37 + </ul>
38 + </div>
39 + </div>
40 +</div>
...\ No newline at end of file ...\ No newline at end of file
1 +
2 +//= _header.html
3 +
4 +<div class="content">
5 + <div class="content__container">
6 +
7 + </div>
8 +</div>
9 +
10 +//= _footer.html
File mode changed
1 +
2 +.btn {
3 + outline: none;
4 +
5 + &:active, &:focus {
6 + outline: none;
7 + }
8 +
9 + &:active {
10 + &:focus {
11 + outline: none;
12 + }
13 + }
14 +}
...\ No newline at end of file ...\ No newline at end of file
1 +
2 +.content {
3 + min-height: 300px;
4 +
5 + &__container {
6 + .container();
7 + }
8 +}
...\ No newline at end of file ...\ No newline at end of file
1 +
2 +.head-h1 {
3 + font-size: 28px;
4 +}
5 +
6 +p {
7 +
8 +}
...\ No newline at end of file ...\ No newline at end of file
File mode changed
1 +
2 +.footer {
3 + //position: absolute;
4 + //bottom: 0;
5 + //width: 100%;
6 + //height: 60px;
7 + padding: 30px 0px;
8 + background-color: #D7D7D7;
9 +
10 + &__container {
11 + .container();
12 + }
13 +
14 + &__left {
15 + float: left;
16 + }
17 +
18 + &__right {
19 + float: right;
20 + }
21 +}
22 +
23 +.social {
24 + padding: 0;
25 + list-style: none;
26 +
27 + li {
28 + display: inline-block;
29 + margin-right: 10px;
30 +
31 + &:last-child {
32 + margin-right: 0;
33 + }
34 + }
35 +
36 + a {
37 + color: #000;
38 + text-decoration: underline;
39 + }
40 +}
...\ No newline at end of file ...\ No newline at end of file
1 +
2 +.header {
3 + text-align: center;
4 + padding: 30px 0px;
5 +
6 + &__container {
7 + .container();
8 + }
9 +
10 + &__logo {
11 + margin-bottom: 30px;
12 + display: inline-block;
13 + }
14 +
15 + &__title {
16 + //margin-bottom: 20px;
17 + }
18 +
19 + &__nav {
20 + margin-top: 30px;
21 + }
22 +}
23 +
24 +.nav {
25 + width: 100%;
26 + text-align: center;
27 +
28 + li {
29 + display: inline-block;
30 +
31 + a {
32 + text-decoration: underline;
33 + color: #000;
34 +
35 + &:focus, &:hover {
36 + color: #000;
37 + text-decoration: underline;
38 + }
39 + }
40 + }
41 +}
...\ No newline at end of file ...\ No newline at end of file
1 +.icon {
2 + display: inline-block;
3 +
4 + &__logo {
5 + background: url(../img/logo.png);
6 + width: 60px;
7 + height: 68px;
8 + background-size: cover;
9 + }
10 +}
...\ No newline at end of file ...\ No newline at end of file
1 +@import "../../bower_components/bootstrap/less/bootstrap";
2 +@import "../../bower_components/bootstrap-select/less/bootstrap-select";
3 +
4 +@import "fonts";
5 +@import "variables";
6 +@import "sprite";
7 +@import "images";
8 +
9 +@import "default__style";
10 +@import "button";
11 +
12 +@import "header";
13 +@import "footer";
14 +
15 +@import "content";
16 +@import "modal";
...\ No newline at end of file ...\ No newline at end of file
File mode changed
1 +/*
2 +LESS variables are information about icon's compiled state, stored under its original file name
3 +
4 +.icon-home {
5 + width: @icon-home-width;
6 +}
7 +
8 +The large array-like variables contain all information about a single icon
9 +@icon-home: x y offset_x offset_y width height total_width total_height image_path name;
10 +
11 +At the bottom of this section, we provide information about the spritesheet itself
12 +@spritesheet: width height image @spritesheet-sprites;
13 +*/
14 +@btn-modal-name: 'btn-modal';
15 +@btn-modal-x: 0px;
16 +@btn-modal-y: 0px;
17 +@btn-modal-offset-x: 0px;
18 +@btn-modal-offset-y: 0px;
19 +@btn-modal-width: 61px;
20 +@btn-modal-height: 26px;
21 +@btn-modal-total-width: 61px;
22 +@btn-modal-total-height: 71px;
23 +@btn-modal-image: '../img/sprite.png';
24 +@btn-modal: 0px 0px 0px 0px 61px 26px 61px 71px '../img/sprite.png' 'btn-modal';
25 +@logo-modal-name: 'logo-modal';
26 +@logo-modal-x: 0px;
27 +@logo-modal-y: 31px;
28 +@logo-modal-offset-x: 0px;
29 +@logo-modal-offset-y: -31px;
30 +@logo-modal-width: 40px;
31 +@logo-modal-height: 40px;
32 +@logo-modal-total-width: 61px;
33 +@logo-modal-total-height: 71px;
34 +@logo-modal-image: '../img/sprite.png';
35 +@logo-modal: 0px 31px 0px -31px 40px 40px 61px 71px '../img/sprite.png' 'logo-modal';
36 +@spritesheet-width: 61px;
37 +@spritesheet-height: 71px;
38 +@spritesheet-image: '../img/sprite.png';
39 +@spritesheet-sprites: @btn-modal @logo-modal;
40 +@spritesheet: 61px 71px '../img/sprite.png' @spritesheet-sprites;
41 +
42 +/*
43 +The provided classes are intended to be used with the array-like variables
44 +
45 +.icon-home {
46 + .sprite-width(@icon-home);
47 +}
48 +.icon-email {
49 + .sprite(@icon-email);
50 +}
51 +
52 +Example usage in HTML:
53 +
54 +`display: block` sprite:
55 +<div class="icon-home"></div>
56 +
57 +To change `display` (e.g. `display: inline-block;`), we suggest using a common CSS class:
58 +
59 +// CSS
60 +.icon {
61 + display: inline-block;
62 +}
63 +
64 +// HTML
65 +<i class="icon icon-home"></i>
66 +*/
67 +.sprite-width(@sprite) {
68 + width: extract(@sprite, 5);
69 +}
70 +
71 +.sprite-height(@sprite) {
72 + height: extract(@sprite, 6);
73 +}
74 +
75 +.sprite-position(@sprite) {
76 + @sprite-offset-x: extract(@sprite, 3);
77 + @sprite-offset-y: extract(@sprite, 4);
78 + background-position: @sprite-offset-x @sprite-offset-y;
79 +}
80 +
81 +.sprite-image(@sprite) {
82 + @sprite-image: extract(@sprite, 9);
83 + @sprite-image-bare: ~`"@{sprite-image}".slice(1, -1)`;
84 + background-image: url(@sprite-image-bare);
85 +}
86 +
87 +.sprite(@sprite) {
88 + .sprite-image(@sprite);
89 + .sprite-position(@sprite);
90 + .sprite-width(@sprite);
91 + .sprite-height(@sprite);
92 +}
93 +
94 +/*
95 +The `.sprites` mixin generates identical output to the CSS template
96 + but can be overridden inside of LESS
97 +
98 +This must be run when you have at least 2 sprites.
99 + If run with a single sprite, then there will be reference errors.
100 +
101 +.sprites(@spritesheet-sprites);
102 +*/
103 +.sprites(@sprites, @i: 1) when (@i <= length(@sprites)) {
104 + @sprite: extract(@sprites, @i);
105 + @sprite-name: e(extract(@sprite, 10));
106 + .@{sprite-name} {
107 + .sprite(@sprite);
108 + }
109 + .sprites(@sprites, @i + 1);
110 +}
1 +
2 +//== Media queries breakpoints
3 +//
4 +//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
5 +
6 +// Extra small screen / phone
7 +//** Deprecated `@screen-xs` as of v3.0.1
8 +@screen-xs: 320px;
9 +//** Deprecated `@screen-xs-min` as of v3.2.0
10 +@screen-xs-min: @screen-xs;
11 +//** Deprecated `@screen-phone` as of v3.0.1
12 +@screen-phone: @screen-xs-min;
13 +
14 +// Small screen / tablet
15 +//** Deprecated `@screen-sm` as of v3.0.1
16 +@screen-sm: 550px;
17 +@screen-sm-min: @screen-sm;
18 +//** Deprecated `@screen-tablet` as of v3.0.1
19 +@screen-tablet: @screen-sm-min;
20 +
21 +// Medium screen / desktop
22 +//** Deprecated `@screen-md` as of v3.0.1
23 +@screen-md: 797px;
24 +@screen-md-min: @screen-md;
25 +//** Deprecated `@screen-desktop` as of v3.0.1
26 +@screen-desktop: @screen-md-min;
27 +
28 +// Large screen / wide desktop
29 +//** Deprecated `@screen-lg` as of v3.0.1
30 +@screen-lg: 970px;
31 +@screen-lg-min: @screen-lg;
32 +//** Deprecated `@screen-lg-desktop` as of v3.0.1
33 +@screen-lg-desktop: @screen-lg-min;
34 +
35 +// So media queries don't overlap when required, provide a maximum
36 +@screen-xs-max: (@screen-sm-min - 1);
37 +@screen-sm-max: (@screen-md-min - 1);
38 +@screen-md-max: (@screen-lg-min - 1);
39 +
40 +
41 +//== Grid system
42 +//
43 +//## Define your custom responsive grid.
44 +
45 +//** Number of columns in the grid.
46 +@grid-columns: 24;
47 +//** Padding between columns. Gets divided in half for the left and right.
48 +@grid-gutter-width: 20px;
49 +// Navbar collapse
50 +//** Point at which the navbar becomes uncollapsed.
51 +@grid-float-breakpoint: @screen-sm-min;
52 +//** Point at which the navbar begins collapsing.
53 +@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
54 +
55 +
56 +//== Container sizes
57 +//
58 +//## Define the maximum width of `.container` for different screen sizes.
59 +
60 +// Small screen / tablet
61 +@container-tablet: (100% + @grid-gutter-width);
62 +//** For `@screen-sm-min` and up.
63 +@container-sm: @container-tablet;
64 +
65 +// Medium screen / desktop
66 +@container-desktop: (100% + @grid-gutter-width);
67 +//** For `@screen-md-min` and up.
68 +@container-md: @container-desktop;
69 +
70 +// Large screen / wide desktop
71 +@container-large-desktop: (950px + @grid-gutter-width);
72 +//** For `@screen-lg-min` and up.
73 +@container-lg: @container-large-desktop;
74 +
75 +@xs: ~'max-width: @{screen-xs-max}';
76 +@sm: ~'max-width: @{screen-sm-max}';
77 +@md: ~'max-width: @{screen-md-max}';
78 +@lg: ~'min-width: @{screen-lg}';
79 +
80 +// fonts
81 +@default-font: 'Roboto', sans-serif;