Showing
29 changed files
with
846 additions
and
0 deletions
bower.json
0 → 100644
| 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 | +} |
build/_footer.html
0 → 100644
| 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 |
build/_header.html
0 → 100644
| 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 |
build/css/main.css
0 → 100644
This diff could not be displayed because it is too large.
build/img/logo.png
0 → 100644
26.6 KB
build/img/sprite.png
0 → 100644
4.12 KB
build/img/sprites/btn-modal.png
0 → 100644
2.64 KB
build/img/sprites/logo-modal.png
0 → 100644
2.93 KB
build/index.html
0 → 100644
| 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 |
build/js/main.js
0 → 100644
This diff could not be displayed because it is too large.
gulpfile.js
0 → 100644
| 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']); |
package.json
0 → 100644
| 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 | +} |
savelovsky.iml
0 → 100644
| 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 |
src/_footer.html
0 → 100644
| 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 |
src/_header.html
0 → 100644
| 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 |
src/img/logo.png
0 → 100644
26.6 KB
src/index.html
0 → 100644
src/scripts/main.js
0 → 100644
File mode changed
src/styles/button.less
0 → 100644
src/styles/content.less
0 → 100644
src/styles/default__style.less
0 → 100644
src/styles/fonts.less
0 → 100644
File mode changed
src/styles/footer.less
0 → 100644
| 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 |
src/styles/header.less
0 → 100644
| 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 |
src/styles/images.less
0 → 100644
src/styles/main.less
0 → 100644
| 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 |
src/styles/modal.less
0 → 100644
File mode changed
src/styles/sprite.less
0 → 100644
| 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 | +} |
src/styles/variables.less
0 → 100644
| 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; |
-
Please register or login to post a comment