76 lines
2.0 KiB
HTML
76 lines
2.0 KiB
HTML
|
<div class="img-slider">
|
||
|
{{- with (.Get "dir") -}}
|
||
|
{{- $files := readDir (print "/static/" .) }}
|
||
|
{{- range $index, $file := $files -}}
|
||
|
{{- $isimg := lower $file.Name | findRE "\\.(gif|jpg|jpeg|tiff|png|bmp|webp|avif|jxl)" }}
|
||
|
{{- if $isimg }}
|
||
|
{{- $linkURL := print $.Site.BaseURL "/" ($.Get "dir") "/" $file.Name | absURL }}
|
||
|
<div class="is-slide {{if eq $index 0 }}active{{end}}">
|
||
|
<img src="{{ $linkURL }}" alt="">
|
||
|
</div>
|
||
|
{{- end }}
|
||
|
{{- end }}
|
||
|
{{- end }}
|
||
|
<div class="is-navigation">
|
||
|
<div class="is-btn active"></div>
|
||
|
<div class="is-btn"></div>
|
||
|
<div class="is-btn"></div>
|
||
|
<div class="is-btn"></div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<script type="text/javascript">
|
||
|
var slides = document.querySelectorAll('.is-slide');
|
||
|
var btns = document.querySelectorAll('.is-btn');
|
||
|
let currentSlide = 1;
|
||
|
|
||
|
// Javascript for image slider manual navigation
|
||
|
var manualNav = function(manual){
|
||
|
slides.forEach((slide) => {
|
||
|
slide.classList.remove('active');
|
||
|
|
||
|
btns.forEach((btn) => {
|
||
|
btn.classList.remove('active');
|
||
|
});
|
||
|
});
|
||
|
|
||
|
slides[manual].classList.add('active');
|
||
|
btns[manual].classList.add('active');
|
||
|
}
|
||
|
|
||
|
btns.forEach((btn, i) => {
|
||
|
btn.addEventListener("click", () => {
|
||
|
manualNav(i);
|
||
|
currentSlide = i;
|
||
|
});
|
||
|
});
|
||
|
|
||
|
// Javascript for image slider autoplay navigation
|
||
|
var repeat = function(activeClass){
|
||
|
let active = document.getElementsByClassName('active');
|
||
|
let i = 1;
|
||
|
|
||
|
var repeater = () => {
|
||
|
setTimeout(function(){
|
||
|
[...active].forEach((activeSlide) => {
|
||
|
activeSlide.classList.remove('active');
|
||
|
});
|
||
|
|
||
|
slides[i].classList.add('active');
|
||
|
btns[i].classList.add('active');
|
||
|
i++;
|
||
|
|
||
|
if(slides.length == i){
|
||
|
i = 0;
|
||
|
}
|
||
|
if(i >= slides.length){
|
||
|
return;
|
||
|
}
|
||
|
repeater();
|
||
|
/// Time in ms
|
||
|
}, 5000);
|
||
|
}
|
||
|
repeater();
|
||
|
}
|
||
|
repeat();
|
||
|
</script>
|