Beminar js
- 26. // клонируем репозиторий
> git clone https://github.com/bem-events/beminar-1.git beminar-js
// установим зависимости
> cd beminar-js && git checkout beminar-2 && npm i
- 27. сборка JavaScript в gulpfile.js
// добавить таску «js» и добавить watcher для js-файлов
gulp.task('js', function() {
getFileNames.then(function(src) {
return src.dirs.map(function(dirName) {
var jsGlob = path.resolve(dirName) + '/*.js';
return jsGlob;
});
})
.then(function(jsGlobs) {
gulp.src(jsGlobs)
.pipe(concat('app.js'))
.pipe(gulp.dest(params.out));
})
.done();
});
14
- 41. Блок «countdown»
Таймер обратного отсчета
Параметры через data-атрибут
БЭМ (JS, CSS)
23
(function($) {
$.fn.bemCountdown = function() {
this.each(function() {
var countdown = $(this);
countdown._days = $('.countdown__days', this);
countdown._hrs = $('.countdown__hrs', this);
countdown._mins = $('.countdown__mins', this);
countdown._secs = $('.countdown__secs', this);
countdown.endDate = new Date(countdown.data('countdown'));
setInterval(function() {
updateCountdown(countdown);
}, 1000);
});
function updateCountdown(countdown) {
var curDays, curHrs, curMins, curSecs,
startDate = new Date(),
dateDelta = countdown.endDate - startDate,
timeInSec = parseInt(dateDelta/1000);
curSecs = parseInt(timeInSec % 60);
timeInSec /= 60;
curMins = parseInt(timeInSec % 60);
timeInSec /= 60;
curHrs = parseInt(timeInSec % 24);
timeInSec /= 24;
curDays = parseInt(timeInSec);
countdown._days.text(curDays);
countdown._hrs.text(curHrs);
countdown._mins.text(curMins);
countdown._secs.text(curSecs);
}
};
$('.countdown').bemCountdown();
})(jQuery);
- 42. Блок «countdown»
// CSS
.countdown {
display: flex;
color: white;
padding: 10px;
margin-bottom: 20px;
border: 1px solid pink;
font-size: 23px;
font-family: Helvetica, sans-serif;
}
.countdown__days:after {
content: ' д.'
}
.countdown__hrs, .countdown__secs {
margin: 0 10px;
}
.countdown__hrs:after {
content: ' ч.'
}
.countdown__mins:after {
content: ' м.'
}
.countdown__secs:after {
content: ' c.'
}
24
//HTML
<div class="countdown" data-countdown="14 july 2015 23:59">
<div class="countdown__days">XX</div>
<div class="countdown__hrs">XX</div>
<div class="countdown__mins">XX</div>
<div class="countdown__secs">XX</div>
</div>