if (e.deltaY > 0) dropdown.next()
else dropdown.previous();
if (e.deltaY > 0) dropdown.open(Math.min(dropdown.cussrentIndex + 1, dropdown.count))
else dropdown.open(Math.max(dropdown.cussrentIndex - 1, 0);
.slick-slide {
transform: scale(0.8);
transition: transform 0.8s ease;
}
.slick-active {
transform: scale(1);
}
.slick-active + .slick-slide {
transform: scale(0.9);
}
.slick-active + .slick-slide ~ .slick-slide {
transform: scale(0.7);
}
@foreach($reviews as $review)
<li>
<h6 class="comment-name">{{ $review->user->name }}</h6>
<div class="content">
<p>{{ $review->content }}</p>
<div class="comment-content-right">
<a href="#" onclick="openReplyModal({{ $review->id }})">Ответить</a>
</div>
</div>
</li>
@endforeach
<div id="modal-reply">
<form>
<input type="hidden" name="review_id" id="review-id-field">
<div class="modal-body">
<textarea name="content"></textarea>
</div>
</form>
</div>
function openReplyModal(reviewId) {
document.getElementById('review-id-field').value = reviewId;
// Bootstrap 4
$('#modal-reply').modal('show');
// Bootstrap 5
const modal = new bootstrap.Modal(document.getElementById('modal-reply'), {});
modal.show();
}
Возвращаемое значение
Целое число, полученное парсингом (разбором и интерпретацией) переданной строки. Если первый символ не получилось сконвертировать в число, то возвращается NaN.
// Вот так работает
const decoratedDouble = decorator(double);
console.log(decoratedDouble(5)); // 10
// decoratedDouble это уже другая функция. та, что возвращается из декоратора.
// Просто вы ее перезаписываете в уже существующую переменную.
// А вот так нет
console.log(decorator(double(5))); // [Function (anonymous)]
console.log(
decorator(double)(5) // декоратор возвращает функцию, которую надо вызвать
); // 10
<audio id="music-player" src="/storage/files/music-1.mp3" loop></audio>
<script>
(function () {
const player = document.getElementById('music-player');
if (!player) return;
const toggle = document.getElementById('toggle-music');
if (screen.width < 1220) return;
if (!toggle) return;
let playing = false;
let firstPlay = true;
let iPos;
const KEY_MP_PAUSED = 'music-player-paused';
const KEY_MP_POSITION = 'music-player-position' + player.src;
const startPosition = parseFloat(localStorage.getItem(KEY_MP_POSITION));
const mpPaused = +localStorage.getItem(KEY_MP_PAUSED);
function enablePlay() {
if (firstPlay) {
firstPlay = false;
if (startPosition) player.currentTime = startPosition;
}
player.play();
toggle.classList.add('music-on');
}
function userClick() {
document.removeEventListener('click', userClick);
enablePlay();
}
if (!mpPaused) document.addEventListener('click', userClick);
function updateCurrentPosition() {
localStorage.setItem(KEY_MP_POSITION, player.currentTime.toString());
}
player.addEventListener('play', e => {
playing = true;
localStorage.setItem(KEY_MP_PAUSED, '0');
iPos = setInterval(updateCurrentPosition, 1000);
});
player.addEventListener('pause', e => {
playing = false;
localStorage.setItem(KEY_MP_PAUSED, '1');
clearInterval(iPos);
});
toggle.addEventListener('click', e => {
e.preventDefault();
e.stopPropagation();
document.removeEventListener('click', userClick);
if (playing) {
player.pause();
toggle.classList.remove('music-on');
} else {
enablePlay();
}
});
})();
</script>
gulp.watch('./dist/scss/*.scss'
/dist
/scss
main.scss - отслеживается
/blocks
header.scss - не отслеживается
gulp.watch('./dist/scss/**/*.scss', gulp.series('sass'));