j1-template 2024.3.15 → 2024.3.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/assets/data/amplitude.html +139 -68
- data/assets/data/banner.html +1 -1
- data/assets/data/cookieconsent.html +1 -1
- data/assets/data/docsearch.html +1 -1
- data/assets/data/fab.html +1 -1
- data/assets/data/footer.html +1 -1
- data/assets/data/galeries.html +1 -1
- data/assets/data/gallery_customizer.html +1 -1
- data/assets/data/gemini-ui.html +1 -1
- data/assets/data/iframes.html +1 -1
- data/assets/data/masonry.html +1 -1
- data/assets/data/masterslider.html +1 -1
- data/assets/data/menu.html +1 -1
- data/assets/data/mmenu.html +1 -1
- data/assets/data/mmenu_sidebar.html +1 -1
- data/assets/data/mmenu_toc.html +1 -1
- data/assets/data/panel.html +5 -4
- data/assets/data/quicklinks.html +1 -1
- data/assets/data/rtext_resizer.html +1 -1
- data/assets/data/slick.html +1 -1
- data/assets/data/speak2me.html +1 -1
- data/assets/data/swiper.html +313 -0
- data/assets/theme/j1/adapter/js/amplitude.30.js +1177 -0
- data/assets/theme/j1/adapter/js/amplitude.js +241 -191
- data/assets/theme/j1/adapter/js/j1.js +3 -3
- data/assets/theme/j1/adapter/js/masonry.js +2 -2
- data/assets/theme/j1/adapter/js/masterslider.js +2 -1
- data/assets/theme/j1/adapter/js/swiper.js +231 -0
- data/assets/theme/j1/adapter/js/videojs.js +212 -0
- data/assets/theme/j1/core/css/themes/unolight/bootstrap.css +7 -4
- data/assets/theme/j1/core/css/themes/unolight/bootstrap.css.map +1 -1
- data/assets/theme/j1/core/css/themes/unolight/bootstrap.min.css +1 -1
- data/assets/theme/j1/core/css/themes/unolight/bootstrap.min.css.map +1 -1
- data/assets/theme/j1/core/js/template.js +4 -0
- data/assets/theme/j1/core/js/template.min.js +2 -2
- data/assets/theme/j1/core/js/template.min.js.map +1 -1
- data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/amplitude.css +94 -4
- data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/amplitude.min.css +1 -1
- data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/compact.css +3 -2
- data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/compact.min.css +1 -1
- data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/large.css +72 -10
- data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/large.min.css +2 -1
- data/assets/theme/j1/modules/amplitudejs/icons/player/dark/artist.svg +78 -0
- data/assets/theme/j1/modules/amplitudejs/icons/player/dark/mute.svg +52 -20
- data/assets/theme/j1/modules/amplitudejs/icons/player/dark/next.svg +20 -39
- data/assets/theme/j1/modules/amplitudejs/icons/player/dark/now-playing.svg +24 -38
- data/assets/theme/j1/modules/amplitudejs/icons/player/dark/playlist-hide.svg +85 -0
- data/assets/theme/j1/modules/amplitudejs/icons/player/dark/playlist-music.svg +85 -0
- data/assets/theme/j1/modules/amplitudejs/icons/player/dark/playlist-show.svg +85 -0
- data/assets/theme/j1/modules/amplitudejs/icons/player/dark/playlist.svg +85 -0
- data/assets/theme/j1/modules/amplitudejs/icons/player/dark/previous.svg +18 -37
- data/assets/theme/j1/modules/amplitudejs/icons/player/dark/skip-backward.svg +33 -30
- data/assets/theme/j1/modules/amplitudejs/icons/player/dark/skip-forward.svg +33 -29
- data/assets/theme/j1/modules/amplitudejs/icons/player/dark/small/next.svg +55 -14
- data/assets/theme/j1/modules/amplitudejs/icons/player/dark/small/previous.svg +56 -14
- data/assets/theme/j1/modules/amplitudejs/icons/player/dark/volume.svg +38 -21
- data/assets/theme/j1/modules/amplitudejs/js/amplitude.map +20 -20
- data/assets/theme/j1/modules/amplitudejs/js/tech/ytp.15.js +1594 -0
- data/assets/theme/j1/modules/amplitudejs/js/tech/ytp.js +1617 -89
- data/assets/theme/j1/modules/amplitudejs/js/visualizations/bar.js +1 -1
- data/assets/theme/j1/modules/amplitudejs/js/visualizations/circular-equalizer.js +31 -1
- data/assets/theme/j1/modules/amplitudejs/js/visualizations/frequency-analyzer.js +1 -1
- data/assets/theme/j1/modules/amplitudejs/js/visualizations/michael-bromley.js +1 -1
- data/assets/theme/j1/modules/amplitudejs/js/visualizations/template.js +1 -1
- data/assets/theme/j1/modules/lightGallery/js/plugins/lg-video.js +206 -122
- data/assets/theme/j1/modules/photoswipe/.version_5.4.4 +6 -0
- data/assets/theme/j1/modules/photoswipe/LICENSE +21 -0
- data/assets/theme/j1/modules/photoswipe/README.md +32 -0
- data/assets/theme/j1/modules/photoswipe/css/org/photoswipe-dynamic-caption-plugin.umd.min.js +5 -0
- data/assets/theme/j1/modules/photoswipe/css/org/photoswipe.css +420 -0
- data/assets/theme/j1/modules/photoswipe/css/photoswipe-caption-plugin.css +67 -0
- data/assets/theme/j1/modules/photoswipe/css/photoswipe-caption-plugin.min.css +16 -0
- data/assets/theme/j1/modules/photoswipe/css/photoswipe.css +376 -0
- data/assets/theme/j1/modules/photoswipe/css/photoswipe.min.css +17 -0
- data/assets/theme/j1/modules/photoswipe/css/scss/photoswipe.scss +427 -0
- data/assets/theme/j1/modules/photoswipe/example/photoswipe-caption-plugin.html +237 -0
- data/assets/theme/j1/modules/photoswipe/example/test-gallery.html +36 -0
- data/assets/theme/j1/modules/photoswipe/js/README.md +43 -0
- data/assets/theme/j1/modules/photoswipe/js/photoswipe-caption-plugin.min.js +5 -0
- data/assets/theme/j1/modules/photoswipe/js/photoswipe-core.min.js +18 -0
- data/assets/theme/j1/modules/photoswipe/js/photoswipe-lightbox.min.js +18 -0
- data/assets/theme/j1/modules/swiper/.version_1.2.0 +15 -0
- data/assets/theme/j1/modules/swiper/LICENSE +20 -0
- data/assets/theme/j1/modules/swiper/README.md +95 -0
- data/assets/theme/j1/modules/swiper/css/swiper-bundle.css +740 -0
- data/assets/theme/j1/modules/swiper/css/swiper-bundle.min..css +17 -0
- data/assets/theme/j1/modules/swiper/css/theme/uno.css +249 -0
- data/assets/theme/j1/modules/swiper/css/theme/uno.min.css +154 -0
- data/assets/theme/j1/modules/swiper/js/swiper-bundle.js +9785 -0
- data/assets/theme/j1/modules/swiper/js/swiper-bundle.min.js +17 -0
- data/assets/theme/j1/modules/swiper/swiperjs.com-demos.url +2 -0
- data/assets/theme/j1/modules/videojs/assets/icons/custom-icons/next.svg +82 -0
- data/assets/theme/j1/modules/videojs/css/font/README.md +151 -0
- data/assets/theme/j1/modules/videojs/css/font/VideoJS.svg +150 -0
- data/assets/theme/j1/modules/videojs/css/font/video-js-cdn.css +2012 -0
- data/assets/theme/j1/modules/videojs/css/plugins/controls/skipbuttons.0.css +32 -0
- data/assets/theme/j1/modules/videojs/css/plugins/controls/skipbuttons.1.css +31 -0
- data/assets/theme/j1/modules/videojs/css/plugins/controls/skipbuttons.css +31 -0
- data/assets/theme/j1/modules/videojs/css/plugins/controls/skipbuttons.min.css +21 -0
- data/assets/theme/j1/modules/videojs/css/themes/uno.css +14 -3
- data/assets/theme/j1/modules/videojs/css/themes/uno.min.css +1 -1
- data/assets/theme/j1/modules/videojs/css/videojs.css +1 -0
- data/assets/theme/j1/modules/videojs/js/plugins/controls/autocaption/LICENSE +13 -0
- data/assets/theme/j1/modules/videojs/js/plugins/controls/autocaption/README.md +75 -0
- data/assets/theme/j1/modules/videojs/js/plugins/controls/autocaption/autocaption.js +149 -0
- data/assets/theme/j1/modules/videojs/js/plugins/controls/autocaption/autocaption.min.js +21 -0
- data/assets/theme/j1/modules/videojs/js/plugins/controls/hotkeys/README.md +76 -30
- data/assets/theme/j1/modules/videojs/js/plugins/controls/hotkeys/hotkeys.js +64 -53
- data/assets/theme/j1/modules/videojs/js/plugins/controls/hotkeys/hotkeys.min.js +1 -1
- data/assets/theme/j1/modules/videojs/js/plugins/controls/skipbuttons/README.md +133 -0
- data/assets/theme/j1/modules/videojs/js/plugins/controls/skipbuttons/skipbuttons.js +137 -0
- data/assets/theme/j1/modules/videojs/js/plugins/controls/skipbuttons/skipbuttons.min.js +21 -0
- data/assets/theme/j1/modules/videojs/js/plugins/controls/zoom/zoom.js +15 -12
- data/assets/theme/j1/modules/videojs/js/plugins/players/yt/youtube.js +43 -16
- data/lib/j1/patches/rubygems/eventmachine-1.2.7-x64-mingw32/lib/3.3/fastfilereaderext.so +0 -0
- data/lib/j1/patches/rubygems/eventmachine-1.2.7-x64-mingw32/lib/3.3/rubyeventmachine.so +0 -0
- data/lib/j1/patches/rubygems/eventmachine-1.2.7-x64-mingw32/lib/3.4/fastfilereaderext.so +0 -0
- data/lib/j1/patches/rubygems/eventmachine-1.2.7-x64-mingw32/lib/3.4/rubyeventmachine.so +0 -0
- data/lib/j1/version.rb +1 -1
- data/lib/j1_app/j1_auth_manager/config.rb +0 -4
- data/lib/starter_web/Gemfile +45 -22
- data/lib/starter_web/README.md +5 -5
- data/lib/starter_web/_config.yml +4 -6
- data/lib/starter_web/_data/modules/amplitude.yml +308 -363
- data/lib/starter_web/_data/modules/defaults/amplitude.yml +60 -35
- data/lib/starter_web/_data/modules/defaults/gallery.yml +42 -0
- data/lib/starter_web/_data/modules/defaults/slick.yml +1 -1
- data/lib/starter_web/_data/modules/defaults/swiper.yml +515 -0
- data/lib/starter_web/_data/modules/defaults/videojs.yml +107 -0
- data/lib/starter_web/_data/modules/gallery.yml +30 -14
- data/lib/starter_web/_data/modules/masonry.yml +15 -0
- data/lib/starter_web/_data/modules/swiper.yml +227 -0
- data/lib/starter_web/_data/modules/videojs.yml +57 -0
- data/lib/starter_web/_data/resources.yml +50 -16
- data/lib/starter_web/_data/templates/feed.xml +1 -1
- data/lib/starter_web/_includes/tables/jekyll_variables.asciidoc +1 -0
- data/lib/starter_web/_plugins/asciidoctor/amplitude-block.rb +1 -0
- data/lib/starter_web/_plugins/asciidoctor/dailymotion-block.rb +4 -1
- data/lib/starter_web/_plugins/asciidoctor/videojs-block.rb +141 -24
- data/lib/starter_web/_plugins/asciidoctor/vimeo-block.rb +4 -1
- data/lib/starter_web/_plugins/asciidoctor/wistia-block.rb +313 -0
- data/lib/starter_web/_plugins/asciidoctor/youtube-block.rb +192 -17
- data/lib/starter_web/_plugins/index/lunr.rb +1 -1
- data/lib/starter_web/assets/video/poster/youtube/faelle_des_bnd/der_unverzichtbare_feind.jpg +0 -0
- data/lib/starter_web/assets/video/poster/youtube/faelle_des_bnd/ein_diener_vieler_herren.jpg +0 -0
- data/lib/starter_web/assets/video/poster/youtube/the_piano/the-piano.jpg +0 -0
- data/lib/starter_web/package.json +1 -1
- data/lib/starter_web/pages/public/_includes/attributes.asciidoc +45 -0
- data/lib/starter_web/pages/public/_includes/documents/photoswipe/200_photoswipe_parameters.asciidoc +510 -0
- data/lib/starter_web/pages/public/_includes/documents/photoswipe/210_photoswipe_lightbox_parameters.asciidoc +98 -0
- data/lib/starter_web/pages/public/_includes/documents/photoswipe/300_caption_plugin_for_photoSwipe.asciidoc +327 -0
- data/lib/starter_web/pages/public/_includes/documents/swiper/100_swiper_features.asciidoc +50 -0
- data/lib/starter_web/pages/public/_includes/documents/swiper/100_swiper_html_layout.asciidoc +122 -0
- data/lib/starter_web/pages/public/_includes/documents/swiper/100_swiper_initialization.asciidoc +53 -0
- data/lib/starter_web/pages/public/_includes/documents/swiper/110_swiper_common_options.asciidoc +43 -0
- data/lib/starter_web/pages/public/_includes/documents/swiper/200_swiper_parameters_a_k.asciidoc +994 -0
- data/lib/starter_web/pages/public/_includes/documents/swiper/200_swiper_parameters_l_o.asciidoc +473 -0
- data/lib/starter_web/pages/public/_includes/documents/swiper/200_swiper_parameters_p_s.asciidoc +700 -0
- data/lib/starter_web/pages/public/_includes/documents/swiper/200_swiper_parameters_t_z.asciidoc +413 -0
- data/lib/starter_web/pages/public/_includes/documents/swiper/300_swiper_instance_properties.asciidoc +873 -0
- data/lib/starter_web/pages/public/_includes/documents/swiper/400_swiper_modules.asciidoc +2514 -0
- data/lib/starter_web/pages/public/_includes/documents/swiper/500_swiper_methods.asciidoc +989 -0
- data/lib/starter_web/pages/public/_includes/documents/swiper/600_swiper_events.asciidoc +1534 -0
- data/lib/starter_web/pages/public/amplitude_yt_tester.adoc +89 -62
- data/lib/starter_web/pages/public/manuals/integrations/amplitudejs/amplitudejs-api.adoc +1 -1
- data/lib/starter_web/pages/public/manuals/integrations/videojs/youtube-api.adoc +1638 -0
- data/lib/starter_web/pages/public/photoswipe_api.adoc +150 -0
- data/lib/starter_web/pages/public/swiper_api.adoc +128 -0
- data/lib/starter_web/pages/public/swiper_tester.adoc +973 -0
- data/lib/starter_web/pages/public/tools/previewer/preview_bootstrap_theme.adoc +5 -6
- data/lib/starter_web/pages/public/tools/previewer/preview_videojs.adoc +203 -0
- data/lib/starter_web/pages/{tour → public/tour}/modal_extentions.adoc +12 -5
- data/lib/starter_web/pages/{tour → public/tour}/play_audio.adoc +63 -15
- data/lib/starter_web/pages/{tour → public/tour}/play_video.adoc +79 -40
- data/lib/starter_web/pages/{tour → public/tour}/present_images.adoc +5 -5
- metadata +114 -41
- data/assets/theme/j1/modules/amplitudejs/icons/player/dark/_pause.svg +0 -19
- data/assets/theme/j1/modules/amplitudejs/icons/player/dark/_play.svg +0 -18
- data/assets/theme/j1/modules/amplitudejs/icons/player/dark/show-playlist.svg +0 -15
- data/assets/theme/j1/modules/jqueryScrollbar/LICENSE +0 -20
- data/assets/theme/j1/modules/jqueryScrollbar/README.md +0 -28
- data/assets/theme/j1/modules/jqueryScrollbar/css/scrollbar.css +0 -939
- data/assets/theme/j1/modules/jqueryScrollbar/css/scrollbar.min.css +0 -20
- data/assets/theme/j1/modules/jqueryScrollbar/js/scrollbar.js +0 -851
- data/assets/theme/j1/modules/jqueryScrollbar/js/scrollbar.min.js +0 -36
- data/assets/theme/j1/modules/jqueryScrollbar/sass/scrollbar.scss +0 -806
- data/assets/theme/j1/modules/lightGallery/js/plugins/lg-video.0.js +0 -794
- /data/lib/starter_web/pages/{tour → public/tour}/_includes/attributes.asciidoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/_includes/documents/100_gistblock.asciidoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/_includes/documents/410_bottom_info.asciidoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/_includes/documents/410_bottom_left_warning.asciidoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/_includes/documents/410_bottom_right_danger.asciidoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/_includes/documents/410_central_success.asciidoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/_includes/documents/410_full_height_left_info.asciidoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/_includes/documents/410_full_height_right_success.asciidoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/_includes/documents/410_table_bs_modal_examples.asciidoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/_includes/documents/410_top_info.asciidoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/_includes/documents/410_top_left_info.asciidoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/_includes/documents/410_top_right_success.asciidoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/_includes/documents/419_advanced_modals_demo.asciidoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/_includes/documents/tables/bs_modal_examples.asciidoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/_includes/documents/themes_bootstrap.asciidoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/_includes/documents/themes_rouge.asciidoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/asciidoc_extensions.adoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/bootstrap_themes.adoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/highlghter_rouge.adoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/icon_fonts.adoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/quicksearch.adoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/responsive_tables.adoc +0 -0
- /data/lib/starter_web/pages/{tour → public/tour}/typography.adoc +0 -0
@@ -0,0 +1,973 @@
|
|
1
|
+
---
|
2
|
+
title: Swiper Tester
|
3
|
+
title_extention: Swiper Integration
|
4
|
+
tagline: Swiper Integration
|
5
|
+
|
6
|
+
date: 2025-01-07
|
7
|
+
#last_modified: 2025-01-01
|
8
|
+
|
9
|
+
description: >
|
10
|
+
|
11
|
+
keywords: >
|
12
|
+
open source, free, template, jekyll, jekyllone, web,
|
13
|
+
sites, static, jamstack, bootstrap,
|
14
|
+
html, html5, video, support, flash player,
|
15
|
+
quicktime, silverlight
|
16
|
+
|
17
|
+
categories: [ Roundtrip ]
|
18
|
+
tags: [ Module, Swiper ]
|
19
|
+
|
20
|
+
image:
|
21
|
+
path: /assets/image/modules/attics/markus-spiske-1920x1280.jpg
|
22
|
+
width: 1920
|
23
|
+
height: 1280
|
24
|
+
|
25
|
+
attic: false
|
26
|
+
regenerate: false
|
27
|
+
personalization: true
|
28
|
+
permalink: /pages/public/swiper_tester/
|
29
|
+
|
30
|
+
resources: [ swiper, slick-slider, photoswipe, videojs ]
|
31
|
+
resource_options:
|
32
|
+
- toccer:
|
33
|
+
collapseDepth: 3
|
34
|
+
- attic:
|
35
|
+
slides:
|
36
|
+
- url: /assets/image/modules/attics/markus-spiske-1920x1280.jpg
|
37
|
+
alt: Swiper Tester
|
38
|
+
---
|
39
|
+
|
40
|
+
// Page Initializer
|
41
|
+
// =============================================================================
|
42
|
+
// Enable the Liquid Preprocessor
|
43
|
+
:page-liquid:
|
44
|
+
|
45
|
+
// Attribute settings for section control
|
46
|
+
//
|
47
|
+
:swiper--features: false
|
48
|
+
|
49
|
+
// Set (local) page attributes here
|
50
|
+
// -----------------------------------------------------------------------------
|
51
|
+
// :page--attr: <attr-value>
|
52
|
+
|
53
|
+
// Load Liquid procedures
|
54
|
+
// -----------------------------------------------------------------------------
|
55
|
+
{% capture load_attributes %}themes/{{site.template.name}}/procedures/global/attributes_loader.proc{%endcapture%}
|
56
|
+
|
57
|
+
// Load page attributes
|
58
|
+
// -----------------------------------------------------------------------------
|
59
|
+
{% include {{load_attributes}} scope="global" %}
|
60
|
+
|
61
|
+
|
62
|
+
// Page content
|
63
|
+
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
64
|
+
[role="dropcap"]
|
65
|
+
Swiper, the free and most modern mobile touch slider with hardware accelerated
|
66
|
+
transitions and amazing native behavior. It is intended to be used in mobile
|
67
|
+
websites, mobile web apps, and mobile native/hybrid apps.
|
68
|
+
|
69
|
+
// Include sub-documents (if any)
|
70
|
+
// -----------------------------------------------------------------------------
|
71
|
+
lorem:sentences[5]
|
72
|
+
|
73
|
+
[NOTE]
|
74
|
+
====
|
75
|
+
Swiper is not compatible with all platforms, it is a modern touch slider
|
76
|
+
which is focused only on modern apps/platforms to bring the best experience
|
77
|
+
and simplicity.
|
78
|
+
====
|
79
|
+
|
80
|
+
[role="mt-5"]
|
81
|
+
== Examples
|
82
|
+
// See: https://swiperjs.com/demos
|
83
|
+
|
84
|
+
lorem:sentences[5]
|
85
|
+
|
86
|
+
[role="mt-4"]
|
87
|
+
=== Text Slider
|
88
|
+
|
89
|
+
A slider is typically used for displaying images. Still, the implementation
|
90
|
+
for the J1 Template supports a lot more sources to be displayed as a slide
|
91
|
+
show — simple text for example.
|
92
|
+
|
93
|
+
==== Base Text Carousel
|
94
|
+
|
95
|
+
Important statements or topics can be placed on top of an article or a
|
96
|
+
paragraph to give them better visibility. You can present facts to know
|
97
|
+
animated for the readers attention.
|
98
|
+
|
99
|
+
++++
|
100
|
+
<div id="textSwiper" class="swiper swiper--text">
|
101
|
+
<div class="swiper-wrapper">
|
102
|
+
<div class="swiper-slide">
|
103
|
+
<p>
|
104
|
+
<big>J1 is Open Source</big>
|
105
|
+
<br>
|
106
|
+
<i>No pain for private or professional use</i>
|
107
|
+
</p>
|
108
|
+
</div>
|
109
|
+
<div class="swiper-slide">
|
110
|
+
<p>
|
111
|
+
<big>Explore this site</big>
|
112
|
+
<br>
|
113
|
+
<i>Learn what's possible if you go the Jekyll Way</i>
|
114
|
+
</p>
|
115
|
+
</div>
|
116
|
+
<div class="swiper-slide">
|
117
|
+
<p>
|
118
|
+
<big>Create modern static sites</big>
|
119
|
+
<br>
|
120
|
+
<i>Secure, powerful and fast!</i>
|
121
|
+
</p>
|
122
|
+
</div>
|
123
|
+
</div>
|
124
|
+
|
125
|
+
<div class="autoplay-progress">
|
126
|
+
<svg viewBox="0 0 48 48">
|
127
|
+
<circle cx="24" cy="24" r="20"></circle>
|
128
|
+
</svg>
|
129
|
+
<span></span>
|
130
|
+
</div>
|
131
|
+
</div>
|
132
|
+
|
133
|
+
<!-- Initialize Text Swiper -->
|
134
|
+
<script>
|
135
|
+
$(function() {
|
136
|
+
// ---------------------------------------------------------------------------
|
137
|
+
// slider initializer
|
138
|
+
// ---------------------------------------------------------------------------
|
139
|
+
var dependencies_met_page_ready = setInterval (() => {
|
140
|
+
var atticFinished = (j1.adapter.attic.getState() == 'finished') ? true : false;
|
141
|
+
|
142
|
+
if (atticFinished) {
|
143
|
+
const progressCircle = document.querySelector(".autoplay-progress svg");
|
144
|
+
const progressContent = document.querySelector(".autoplay-progress span");
|
145
|
+
|
146
|
+
const textSwiper = new Swiper('#textSwiper', {
|
147
|
+
// Optional parameters
|
148
|
+
direction: 'horizontal',
|
149
|
+
loop: true,
|
150
|
+
autoplay: {
|
151
|
+
delay: 3000,
|
152
|
+
pauseOnMouseEnter: true,
|
153
|
+
disableOnInteraction: false
|
154
|
+
},
|
155
|
+
// scrollbar: {
|
156
|
+
// el: '.swiper-scrollbar',
|
157
|
+
// },
|
158
|
+
// on: {
|
159
|
+
// // afterInit: function (swiper) {
|
160
|
+
// // // do something
|
161
|
+
// // },
|
162
|
+
// // autoplayTimeLeft(s, time, progress) {
|
163
|
+
// // progressCircle.style.setProperty("--progress", 1 - progress);
|
164
|
+
// // progressContent.textContent = `${Math.ceil(time / 1000)}s`;
|
165
|
+
// // }
|
166
|
+
// }
|
167
|
+
});
|
168
|
+
|
169
|
+
clearInterval(dependencies_met_page_ready);
|
170
|
+
} // END pageVisible
|
171
|
+
}, 10); // END dependencies_met_page_ready
|
172
|
+
});
|
173
|
+
</script>
|
174
|
+
++++
|
175
|
+
|
176
|
+
[role="mt-4"]
|
177
|
+
=== Image Slider
|
178
|
+
|
179
|
+
Sliders (or Carousel)s are mostly used for pictures data to animate the
|
180
|
+
images as a series. Find with the following some examples of how to use
|
181
|
+
a slider for your image data.
|
182
|
+
|
183
|
+
[role="mt-4"]
|
184
|
+
==== Base Silder + Captions
|
185
|
+
|
186
|
+
A simple image show is useful, for example, as an animated (or not animated)
|
187
|
+
banner presenting exciting things about your site or the products offered.
|
188
|
+
|
189
|
+
++++
|
190
|
+
<!-- Swiper HTML Base Slider (image)-->
|
191
|
+
<div class="carousel-title"> <i class="mdib mdib-view-carousel mdib-24px mr-2"></i> Base Silder · Captions</div>
|
192
|
+
|
193
|
+
<div id="base_image_slider_1" class="swiper swiper-container">
|
194
|
+
<!-- jadams, 2025-01-15, customize wrapper element for HEIGHT|OUTER bullets -->
|
195
|
+
<!-- Slides container -->
|
196
|
+
<ul class="swiper-wrapper" style="margin-bottom: 3.75rem;">
|
197
|
+
<li class="swiper-slide">
|
198
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-1.jpg">
|
199
|
+
<div class="caption"> Image 1</div>
|
200
|
+
</li>
|
201
|
+
<li class="swiper-slide">
|
202
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-2.jpg">
|
203
|
+
<div class="caption">Image 2</div>
|
204
|
+
</li>
|
205
|
+
<li class="swiper-slide">
|
206
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-3.jpg">
|
207
|
+
<div class="caption">Image 3</div>
|
208
|
+
</li>
|
209
|
+
<li class="swiper-slide">
|
210
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-4.jpg">
|
211
|
+
<div class="caption">Image 4</div>
|
212
|
+
</li>
|
213
|
+
<li class="swiper-slide">
|
214
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-5.jpg">
|
215
|
+
<div class="caption">Image 5</div>
|
216
|
+
</li>
|
217
|
+
<li class="swiper-slide">
|
218
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-6.jpg">
|
219
|
+
<div class="caption">Image 6</div>
|
220
|
+
</li>
|
221
|
+
</ul> <!-- END swiper-wrapper (slides) -->
|
222
|
+
|
223
|
+
<!-- Navigation -->
|
224
|
+
<!-- div class="swiper-button-prev"></div>
|
225
|
+
<div class="swiper-button-next"></div -->
|
226
|
+
|
227
|
+
<!-- Pagination -->
|
228
|
+
<!-- jadams, 2025-01-15, customize pagination element for OUTER bullets -->
|
229
|
+
<div class="swiper-pagination" style="bottom: 16px;"></div>
|
230
|
+
|
231
|
+
</div> <!-- END swiper-container -->
|
232
|
+
|
233
|
+
<script>
|
234
|
+
$(function() {
|
235
|
+
// -------------------------------------------------------------------------
|
236
|
+
// slider initializer
|
237
|
+
// -------------------------------------------------------------------------
|
238
|
+
var dependencies_met_page_ready = setInterval (() => {
|
239
|
+
var atticFinished = (j1.adapter.attic.getState() == 'finished') ? true : false;
|
240
|
+
|
241
|
+
if (atticFinished) {
|
242
|
+
|
243
|
+
const baseImageSlider1 = new Swiper("#base_image_slider_1", {
|
244
|
+
slidesPerView: 2,
|
245
|
+
slidesPerGroup: 2,
|
246
|
+
spaceBetween: 5,
|
247
|
+
// navigation: {
|
248
|
+
// nextEl: ".swiper-button-next",
|
249
|
+
// prevEl: ".swiper-button-prev",
|
250
|
+
// },
|
251
|
+
pagination: {
|
252
|
+
el: ".swiper-pagination",
|
253
|
+
type: 'bullets',
|
254
|
+
clickable: true,
|
255
|
+
renderBullet: function (index, className) {
|
256
|
+
return '<span class="' + className + '">' + (index + 1) + "</span>";
|
257
|
+
}
|
258
|
+
}
|
259
|
+
});
|
260
|
+
|
261
|
+
clearInterval(dependencies_met_page_ready);
|
262
|
+
} // END pageVisible
|
263
|
+
|
264
|
+
}, 10); // END dependencies_met_page_ready
|
265
|
+
});
|
266
|
+
</script>
|
267
|
+
++++
|
268
|
+
|
269
|
+
|
270
|
+
[role="mt-4"]
|
271
|
+
==== Base Slider + Captions + Lightbox
|
272
|
+
|
273
|
+
Carousels are used for an exceptionally compact form of image galleries.
|
274
|
+
This example shows some pictures having individual caption text and supports
|
275
|
+
a lightbox to enlarge images full size.
|
276
|
+
|
277
|
+
++++
|
278
|
+
<div class="carousel-title"> <i class="mdib mdib-view-carousel mdib-24px mr-2"></i> Base Silder · Captions + Lightbox</div>
|
279
|
+
<div id="my_gallery" class="swiper swiper-container">
|
280
|
+
<!-- Slides container -->
|
281
|
+
<ul class="swiper-wrapper" style="margin-bottom: 3.75rem;">
|
282
|
+
<li class="swiper-slide">
|
283
|
+
<a href="/assets/image/modules/masterslider/slider_4/ms-free-animals-1.jpg"
|
284
|
+
data-pswp-width="1600"
|
285
|
+
data-pswp-height="900">
|
286
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-1.jpg" alt="Image 1">
|
287
|
+
<div class="caption">Image 1</div>
|
288
|
+
<span class="pswp-caption-content">Image 1</span>
|
289
|
+
</a>
|
290
|
+
</li>
|
291
|
+
<li class="swiper-slide">
|
292
|
+
<a href="/assets/image/modules/masterslider/slider_4/ms-free-animals-2.jpg"
|
293
|
+
data-pswp-width="1600"
|
294
|
+
data-pswp-height="900">
|
295
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-2.jpg" alt="Image 2">
|
296
|
+
<div class="caption">Image 2</div>
|
297
|
+
<span class="pswp-caption-content">Image 2</span>
|
298
|
+
</a>
|
299
|
+
</li>
|
300
|
+
<li class="swiper-slide">
|
301
|
+
<a href="/assets/image/modules/masterslider/slider_4/ms-free-animals-3.jpg"
|
302
|
+
data-pswp-width="1600"
|
303
|
+
data-pswp-height="900">
|
304
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-3.jpg" alt="Image 3">
|
305
|
+
<div class="caption">Image 3</div>
|
306
|
+
<span class="pswp-caption-content">Image 3</span>
|
307
|
+
</a>
|
308
|
+
</li>
|
309
|
+
<li class="swiper-slide">
|
310
|
+
<a href="/assets/image/modules/masterslider/slider_4/ms-free-animals-4.jpg"
|
311
|
+
data-pswp-width="1600"
|
312
|
+
data-pswp-height="900">
|
313
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-4.jpg" alt="Image 4">
|
314
|
+
<div class="caption">Image 4</div>
|
315
|
+
<span class="pswp-caption-content">Image 4</span>
|
316
|
+
</a>
|
317
|
+
</li>
|
318
|
+
<li class="swiper-slide">
|
319
|
+
<a href="/assets/image/modules/masterslider/slider_4/ms-free-animals-5.jpg"
|
320
|
+
data-pswp-width="1600"
|
321
|
+
data-pswp-height="900">
|
322
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-5.jpg" alt="Image 5">
|
323
|
+
<div class="caption">Image 5</div>
|
324
|
+
<span class="pswp-caption-content">Image 5</span>
|
325
|
+
</a>
|
326
|
+
</li>
|
327
|
+
<li class="swiper-slide">
|
328
|
+
<a href="/assets/image/modules/masterslider/slider_4/ms-free-animals-6.jpg"
|
329
|
+
data-pswp-width="1600"
|
330
|
+
data-pswp-height="900">
|
331
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-6.jpg" alt="Image 6">
|
332
|
+
<div class="caption">Image 6</div>
|
333
|
+
<span class="pswp-caption-content">Image 6</span>
|
334
|
+
</a>
|
335
|
+
</li>
|
336
|
+
</ul>
|
337
|
+
|
338
|
+
<!-- Pagination -->
|
339
|
+
<div class="swiper-pagination"></div>
|
340
|
+
|
341
|
+
<!-- Navigation -->
|
342
|
+
<!-- div class="swiper-button-prev"></div>
|
343
|
+
<div class="swiper-button-next"></div -->
|
344
|
+
</div>
|
345
|
+
|
346
|
+
<script>
|
347
|
+
$(function() {
|
348
|
+
var dependencies_met_page_ready = setInterval (() => {
|
349
|
+
var atticFinished = (j1.adapter.attic.getState() == 'finished') ? true : false;
|
350
|
+
|
351
|
+
if (atticFinished) {
|
352
|
+
|
353
|
+
// ---------------------------------------------------------------------
|
354
|
+
// slider initializer
|
355
|
+
// ---------------------------------------------------------------------
|
356
|
+
var swiper = new Swiper("#my_gallery", {
|
357
|
+
slidesPerView: 2,
|
358
|
+
slidesPerGroup: 2,
|
359
|
+
spaceBetween: 5,
|
360
|
+
grabCursor: true,
|
361
|
+
loop: true,
|
362
|
+
pagination: {
|
363
|
+
el: '.swiper-pagination',
|
364
|
+
clickable: true,
|
365
|
+
renderBullet: function(index, className) {
|
366
|
+
return '<span class="' + className + '">' + (index + 1) + "</span>";
|
367
|
+
}
|
368
|
+
},
|
369
|
+
// navigation: {
|
370
|
+
// nextEl: '.swiper-button-next',
|
371
|
+
// prevEl: '.swiper-button-prev',
|
372
|
+
// },
|
373
|
+
// autoplay: {
|
374
|
+
// delay: 4000,
|
375
|
+
// disableOnInteraction: true
|
376
|
+
// },
|
377
|
+
keyboard: {
|
378
|
+
enabled: true,
|
379
|
+
},
|
380
|
+
});
|
381
|
+
|
382
|
+
// ---------------------------------------------------------------------
|
383
|
+
// PhotoSwipe initializer
|
384
|
+
// ---------------------------------------------------------------------
|
385
|
+
|
386
|
+
// Setup PhotoSwipe Lightbox
|
387
|
+
// ---------------------------------------------------------------------
|
388
|
+
const myLightbox = new PhotoSwipeLightbox({
|
389
|
+
gallery: '#my_gallery',
|
390
|
+
pswpModule: PhotoSwipe,
|
391
|
+
bgOpacity: 1,
|
392
|
+
showHideOpacity: true,
|
393
|
+
children: 'a',
|
394
|
+
loop: true,
|
395
|
+
showHideAnimationType: 'zoom',
|
396
|
+
imageClickAction: 'next',
|
397
|
+
tapAction: 'next',
|
398
|
+
zoom: false,
|
399
|
+
close: true,
|
400
|
+
counter: true,
|
401
|
+
arrowKeys: true,
|
402
|
+
bgOpacity: "1",
|
403
|
+
wheelToZoom: true,
|
404
|
+
escKey: true
|
405
|
+
});
|
406
|
+
|
407
|
+
// Setup Lightbox Captions
|
408
|
+
// ---------------------------------------------------------------------
|
409
|
+
const captionPlugin = new PhotoSwipeDynamicCaption(myLightbox, {
|
410
|
+
type: 'auto'
|
411
|
+
});
|
412
|
+
|
413
|
+
// Initialize the Lightbox
|
414
|
+
// ---------------------------------------------------------------------
|
415
|
+
myLightbox.init();
|
416
|
+
|
417
|
+
// Create Lightbox Events
|
418
|
+
// ---------------------------------------------------------------------
|
419
|
+
myLightbox.on('change', () => {
|
420
|
+
const { pswp } = myLightbox;
|
421
|
+
swiper.slideTo(pswp.currIndex, 0, false);
|
422
|
+
console.log('Slide index', pswp.currIndex);
|
423
|
+
console.log('Slide object', pswp.currSlide);
|
424
|
+
console.log('Slide object data', pswp.currSlide.data);
|
425
|
+
});
|
426
|
+
|
427
|
+
myLightbox.on('afterInit', () => {
|
428
|
+
const { pswp } = myLightbox;
|
429
|
+
if (swiper.params.autoplay.enabled) {
|
430
|
+
swiper.autoplay.stop();
|
431
|
+
};
|
432
|
+
});
|
433
|
+
|
434
|
+
// if autoplay enabled, run autoplay.start() on (lightbox) close
|
435
|
+
myLightbox.on('closingAnimationStart', () => {
|
436
|
+
const { pswp } = myLightbox;
|
437
|
+
swiper.slideTo(pswp.currIndex, 0, false);
|
438
|
+
if (swiper.params.autoplay.enabled) {
|
439
|
+
swiper.autoplay.start();
|
440
|
+
}
|
441
|
+
});
|
442
|
+
|
443
|
+
clearInterval(dependencies_met_page_ready);
|
444
|
+
} // END pageVisible
|
445
|
+
}, 10); // END dependencies_met_page_ready
|
446
|
+
});
|
447
|
+
</script>
|
448
|
+
++++
|
449
|
+
|
450
|
+
[role="mt-4"]
|
451
|
+
[[image_thumbs_silder_bottom]]
|
452
|
+
==== Thumbs Slider (bottom)
|
453
|
+
|
454
|
+
To give the users a more *visual* control over a slideshow, Swiper sliders can
|
455
|
+
provide UI elements by placing mini-images or short text elements (thumbs)
|
456
|
+
side-by-side (on the left|right), or at bottom|toop of a slideshow. Find below
|
457
|
+
examples how to control such sliders by a thumbs slave silder.
|
458
|
+
|
459
|
+
++++
|
460
|
+
<!-- Master Slider (top) -->
|
461
|
+
<div class="carousel-title"> <i class="mdib mdib-view-carousel mdib-24px mr-2"></i> Thumbs Silder · Bottom</div>
|
462
|
+
<div id="master_slider_1" class="swiper swiper-container">
|
463
|
+
|
464
|
+
<!-- Slides container -->
|
465
|
+
<ul class="swiper-wrapper">
|
466
|
+
<li class="swiper-slide">
|
467
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-1.jpg">
|
468
|
+
</li>
|
469
|
+
<li class="swiper-slide">
|
470
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-2.jpg">
|
471
|
+
</li>
|
472
|
+
<li class="swiper-slide">
|
473
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-3.jpg">
|
474
|
+
</li>
|
475
|
+
<li class="swiper-slide">
|
476
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-4.jpg">
|
477
|
+
</li>
|
478
|
+
<li class="swiper-slide">
|
479
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-5.jpg">
|
480
|
+
</li>
|
481
|
+
<li class="swiper-slide">
|
482
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-6.jpg">
|
483
|
+
</li>
|
484
|
+
</ul> <!-- END swiper-wrapper -->
|
485
|
+
|
486
|
+
</div> <!-- END swiper-container -->
|
487
|
+
|
488
|
+
<!-- Thumbs Slider (bottom) -->
|
489
|
+
<div id="thumbs_slider_1" class="swiper swiper-container thumbs-slider--bottom mt-1 mb-5">
|
490
|
+
|
491
|
+
<!-- Slides container -->
|
492
|
+
<ul class="swiper-wrapper">
|
493
|
+
<li class="swiper-slide">
|
494
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-1.jpg">
|
495
|
+
</li>
|
496
|
+
<li class="swiper-slide">
|
497
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-2.jpg">
|
498
|
+
</li>
|
499
|
+
<li class="swiper-slide">
|
500
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-3.jpg">
|
501
|
+
</li>
|
502
|
+
<li class="swiper-slide">
|
503
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-4.jpg">
|
504
|
+
</li>
|
505
|
+
<li class="swiper-slide">
|
506
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-5.jpg">
|
507
|
+
</li>
|
508
|
+
<li class="swiper-slide">
|
509
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-6.jpg">
|
510
|
+
</li>
|
511
|
+
</ul> <!-- END swiper-wrapper -->
|
512
|
+
|
513
|
+
</div> <!-- END swiper-container -->
|
514
|
+
|
515
|
+
<!-- Initialize Image Thumbs Slider (bottom) -->
|
516
|
+
<script>
|
517
|
+
$(function() {
|
518
|
+
// ---------------------------------------------------------------------------
|
519
|
+
// slider initializer
|
520
|
+
// ---------------------------------------------------------------------------
|
521
|
+
var dependencies_met_page_ready = setInterval (() => {
|
522
|
+
var atticFinished = (j1.adapter.attic.getState() == 'finished') ? true : false;
|
523
|
+
|
524
|
+
if (atticFinished) {
|
525
|
+
|
526
|
+
const thumbsSlider1 = new Swiper("#thumbs_slider_1", {
|
527
|
+
autoHeight: true,
|
528
|
+
direction: 'horizontal',
|
529
|
+
spaceBetween: 5,
|
530
|
+
slidesPerView: 3,
|
531
|
+
grabCursor: true,
|
532
|
+
freeMode: false,
|
533
|
+
watchSlidesProgress: true,
|
534
|
+
on: {
|
535
|
+
transitionStart: (swiper) => {
|
536
|
+
masterSlider1.slideTo(swiper.activeIndex);
|
537
|
+
}
|
538
|
+
},
|
539
|
+
});
|
540
|
+
|
541
|
+
const masterSlider1 = new Swiper("#master_slider_1", {
|
542
|
+
direction: 'horizontal',
|
543
|
+
thumbs: {
|
544
|
+
swiper: thumbsSlider1,
|
545
|
+
},
|
546
|
+
on: {
|
547
|
+
slideChangeTransitionStart: (swiper) => {
|
548
|
+
thumbsSlider1.slideTo(swiper.activeIndex);
|
549
|
+
}
|
550
|
+
},
|
551
|
+
});
|
552
|
+
|
553
|
+
clearInterval(dependencies_met_page_ready);
|
554
|
+
} // END pageVisible
|
555
|
+
}, 10); // END dependencies_met_page_ready
|
556
|
+
});
|
557
|
+
</script>
|
558
|
+
++++
|
559
|
+
|
560
|
+
[role="mt-4"]
|
561
|
+
[[image_thumbs_silder_right]]
|
562
|
+
==== Thumbs Slider (right) + Captions
|
563
|
+
|
564
|
+
A more *compact* version using image thumbs can defined by placing the thumb
|
565
|
+
images (slave slider) on the right of the master slider side-by-side. The will
|
566
|
+
reduce the size of the (master) slider, but all elements of the combined sliders
|
567
|
+
are in a *single row*.
|
568
|
+
|
569
|
+
++++
|
570
|
+
<div class="carousel-title"> <i class="mdib mdib-view-carousel mdib-24px mr-2"></i> Thumbs Silder · Right + Captions</div>
|
571
|
+
<div class="container g-0 mb-5">
|
572
|
+
<div class="row gx-1">
|
573
|
+
|
574
|
+
<!-- BS Multi Slider (left) -->
|
575
|
+
<div class="col-md-9">
|
576
|
+
<div id="master_slider_2" class="swiper swiper-container swiper--multi gallery-slider">
|
577
|
+
<!-- Slides container -->
|
578
|
+
<ul class="swiper-wrapper">
|
579
|
+
<li class="swiper-slide">
|
580
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-1.jpg">
|
581
|
+
<div class="caption">Image 1</div>
|
582
|
+
</li>
|
583
|
+
<li class="swiper-slide">
|
584
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-2.jpg">
|
585
|
+
<div class="caption">Image 2</div>
|
586
|
+
</li>
|
587
|
+
<li class="swiper-slide">
|
588
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-3.jpg">
|
589
|
+
<div class="caption">Image 3</div>
|
590
|
+
</li>
|
591
|
+
<li class="swiper-slide">
|
592
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-4.jpg">
|
593
|
+
<div class="caption">Image 4</div>
|
594
|
+
</li>
|
595
|
+
<li class="swiper-slide">
|
596
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-5.jpg">
|
597
|
+
<div class="caption">Image 5</div>
|
598
|
+
</li>
|
599
|
+
<li class="swiper-slide">
|
600
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-6.jpg">
|
601
|
+
<div class="caption">Image 6</div>
|
602
|
+
</li>
|
603
|
+
</ul> <!-- END swiper-wrapper -->
|
604
|
+
</div> <!-- END swiper-container -->
|
605
|
+
</div> <!-- END col-md-9" -->
|
606
|
+
|
607
|
+
<!-- Thumbs Slider (right) -->
|
608
|
+
<div class="col-md-3">
|
609
|
+
<div id="thumbs_slider_2" class="swiper swiper-container swiper--multi thumbs-slider--right">
|
610
|
+
<!-- Slides container -->
|
611
|
+
<ul class="swiper-wrapper">
|
612
|
+
<li class="swiper-slide">
|
613
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-1.jpg">
|
614
|
+
<div class="caption">Image 1</div>
|
615
|
+
</li>
|
616
|
+
<li class="swiper-slide">
|
617
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-2.jpg">
|
618
|
+
<div class="caption">Image 2</div>
|
619
|
+
</li>
|
620
|
+
<li class="swiper-slide">
|
621
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-3.jpg">
|
622
|
+
<div class="caption">Image 3</div>
|
623
|
+
</li>
|
624
|
+
<li class="swiper-slide">
|
625
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-4.jpg">
|
626
|
+
<div class="caption">Image 4</div>
|
627
|
+
</li>
|
628
|
+
<li class="swiper-slide">
|
629
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-5.jpg">
|
630
|
+
<div class="caption">Image 5</div>
|
631
|
+
</li>
|
632
|
+
<li class="swiper-slide">
|
633
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-6.jpg">
|
634
|
+
<div class="caption">Image 6</div>
|
635
|
+
</li>
|
636
|
+
</ul> <!-- END swiper-wrapper -->
|
637
|
+
</div> <!-- END swiper-container -->
|
638
|
+
</div> <!-- END col-md-3" -->
|
639
|
+
|
640
|
+
</div> <!-- END BS row -->
|
641
|
+
</div> <!-- END BS container -->
|
642
|
+
|
643
|
+
<!-- Initialize BS Multi Swiper -->
|
644
|
+
<script>
|
645
|
+
$(function() {
|
646
|
+
// ---------------------------------------------------------------------------
|
647
|
+
// slider initializer
|
648
|
+
// ---------------------------------------------------------------------------
|
649
|
+
var dependencies_met_page_ready = setInterval (() => {
|
650
|
+
var atticFinished = (j1.adapter.attic.getState() == 'finished') ? true : false;
|
651
|
+
|
652
|
+
if (atticFinished) {
|
653
|
+
|
654
|
+
// Initialize Thumb Swiper instance (right)
|
655
|
+
var thumbsSwiper2 = new Swiper('#thumbs_slider_2', {
|
656
|
+
direction: 'vertical',
|
657
|
+
spaceBetween: 5,
|
658
|
+
slidesPerView: 3,
|
659
|
+
grabCursor: true,
|
660
|
+
// centeredSlides: true,
|
661
|
+
// centeredSlidesBounds: true,
|
662
|
+
// watchOverflow: true,
|
663
|
+
// watchSlidesVisibility: true,
|
664
|
+
// watchSlidesProgress: true,
|
665
|
+
on: {
|
666
|
+
transitionStart: (swiper) => {
|
667
|
+
masterSwiper2.slideTo(swiper.activeIndex);
|
668
|
+
}
|
669
|
+
}
|
670
|
+
});
|
671
|
+
|
672
|
+
// Initialize Master Swiper instance (left)
|
673
|
+
var masterSwiper2 = new Swiper('#master_slider_2', {
|
674
|
+
direction: 'horizontal',
|
675
|
+
grabCursor: true,
|
676
|
+
// watchOverflow: true,
|
677
|
+
// watchSlidesVisibility: true,
|
678
|
+
// watchSlidesProgress: true,
|
679
|
+
// preventInteractionOnTransition: true,
|
680
|
+
effect: 'fade',
|
681
|
+
fadeEffect: {
|
682
|
+
crossFade: true
|
683
|
+
},
|
684
|
+
thumbs: {
|
685
|
+
swiper: thumbsSwiper2
|
686
|
+
},
|
687
|
+
on: {
|
688
|
+
slideChangeTransitionStart: (swiper) => {
|
689
|
+
thumbsSwiper2.slideTo(swiper.activeIndex);
|
690
|
+
},
|
691
|
+
click: (swiper, event) => {
|
692
|
+
console.log('Clicked on the slider, index: ', swiper.activeIndex);
|
693
|
+
}
|
694
|
+
}
|
695
|
+
});
|
696
|
+
|
697
|
+
clearInterval(dependencies_met_page_ready);
|
698
|
+
} // END pageVisible
|
699
|
+
}, 10); // END dependencies_met_page_ready
|
700
|
+
});
|
701
|
+
</script>
|
702
|
+
++++
|
703
|
+
|
704
|
+
|
705
|
+
[role="mt-4"]
|
706
|
+
[[slider-videojs]]
|
707
|
+
=== Video Slider
|
708
|
+
|
709
|
+
If only a *small* number of video sources should presented, the concept of
|
710
|
+
controller based slders using Thumb Elements provide a quite *space-saving*
|
711
|
+
way to do so.
|
712
|
+
|
713
|
+
The J1 template system uses VideoJS to enable *mixed* video sliders. VideoJS
|
714
|
+
for J1 supports VJS plugins for local Video like MP4 files or platforms like
|
715
|
+
YouTube, Vimeo, or Dailymotion to play video *sources* from *different*
|
716
|
+
providers.
|
717
|
+
|
718
|
+
++++
|
719
|
+
<div class="carousel-title"> <i class="mdib mdib-view-carousel mdib-24px mr-2"></i> Video Slider · Mixed Sources + Captions</div>
|
720
|
+
<!-- Master Slider (top) -->
|
721
|
+
<div id="master_slider_3" class="swiper swiper-container master-slider">
|
722
|
+
<div class="swiper-wrapper">
|
723
|
+
<div class="swiper-slide swiper-no-swiping" data-slide-type="image">
|
724
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-1.jpg" aria-label="Animals-1">
|
725
|
+
<div class="caption">Image 1</div>
|
726
|
+
</div>
|
727
|
+
|
728
|
+
<!-- div class="swiper-slide swiper-no-swiping" data-slide-type="video">
|
729
|
+
<video
|
730
|
+
id="peck_pocketed_video"
|
731
|
+
class="video-js vjs-theme-uno"
|
732
|
+
controls
|
733
|
+
width="640" height="360"
|
734
|
+
poster="/assets/video/poster/html5/peck_pocketed.jpg"
|
735
|
+
alt="title"
|
736
|
+
aria-label="title"
|
737
|
+
data-setup='{
|
738
|
+
"fluid" : true,
|
739
|
+
"sources": [{
|
740
|
+
"type": "video/mp4",
|
741
|
+
"src": "/assets/video//html5/peck_pocketed.mp4"
|
742
|
+
}],
|
743
|
+
"controlBar": {
|
744
|
+
"pictureInPictureToggle": false,
|
745
|
+
"skipButtons": {
|
746
|
+
"backward": 15,
|
747
|
+
"forward": 15
|
748
|
+
},
|
749
|
+
"volumePanel": {
|
750
|
+
"inline": false
|
751
|
+
}
|
752
|
+
}
|
753
|
+
}'
|
754
|
+
> </video>
|
755
|
+
</div -->
|
756
|
+
|
757
|
+
<div class="swiper-slide swiper-no-swiping" data-slide-type="video">
|
758
|
+
<video
|
759
|
+
id="peck_pocketed_video"
|
760
|
+
class="video-js vjs-theme-uno"
|
761
|
+
controls
|
762
|
+
width="640" height="360"
|
763
|
+
poster="//img.youtube.com/vi/1J2qz6B-PFY/maxresdefault.jpg"
|
764
|
+
data-setup='{
|
765
|
+
"fluid" : true,
|
766
|
+
"rel": 0,
|
767
|
+
"techOrder": [
|
768
|
+
"youtube", "html5"
|
769
|
+
],
|
770
|
+
"sources": [{
|
771
|
+
"type": "video/youtube",
|
772
|
+
"src": "//youtube.com/watch?v=1J2qz6B-PFY"
|
773
|
+
}],
|
774
|
+
"controlBar": {
|
775
|
+
"pictureInPictureToggle": false,
|
776
|
+
"volumePanel": {
|
777
|
+
"inline": false
|
778
|
+
}
|
779
|
+
}
|
780
|
+
}'
|
781
|
+
>
|
782
|
+
</video>
|
783
|
+
<div class="caption">Roni Sagi & Rhythm · AGT 2024 (YouTube)</div>
|
784
|
+
</div>
|
785
|
+
|
786
|
+
<div class="swiper-slide swiper-no-swiping" data-slide-type="image">
|
787
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-2.jpg" aria-label="Animals-2">
|
788
|
+
<div class="caption">Image 2</div>
|
789
|
+
</div>
|
790
|
+
<div class="swiper-slide swiper-no-swiping" data-slide-type="image">
|
791
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-3.jpg" aria-label="Animals-3">
|
792
|
+
<div class="caption">Image 3</div>
|
793
|
+
</div>
|
794
|
+
</div> <!-- END swiper-wrapper -->
|
795
|
+
|
796
|
+
</div> <!-- END swiper-container -->
|
797
|
+
|
798
|
+
<!-- Thumbs Slider (bottom) -->
|
799
|
+
<div id="thumbs_slider_3" class="swiper swiper-container thumbs-slider thumbs-slider--bottom mt-1 mb-8">
|
800
|
+
|
801
|
+
<div class="swiper-wrapper">
|
802
|
+
<div class="swiper-slide">
|
803
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-1.jpg" aria-label="Animals-1">
|
804
|
+
<div class="caption">Image 1</div>
|
805
|
+
</div>
|
806
|
+
<div class="swiper-slide">
|
807
|
+
<!-- img src="/assets/video/poster/html5/peck_pocketed.jpg" aria-label="peck_pocketed" -->
|
808
|
+
<img src="//img.youtube.com/vi/1J2qz6B-PFY/maxresdefault.jpg">
|
809
|
+
<div class="caption">Roni Sagi & Rhythm · AGT 2024 (YouTube)</div>
|
810
|
+
</div>
|
811
|
+
<div class="swiper-slide">
|
812
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-2.jpg" aria-label="Animals-2">
|
813
|
+
<div class="caption">Image 2</div>
|
814
|
+
</div>
|
815
|
+
<div class="swiper-slide">
|
816
|
+
<img src="/assets/image/modules/masterslider/slider_4/ms-free-animals-3.jpg" aria-label="Animals-3">
|
817
|
+
</div>
|
818
|
+
</div> <!-- END swiper-wrapper -->
|
819
|
+
|
820
|
+
</div> <!-- END swiper-container -->
|
821
|
+
|
822
|
+
<script>
|
823
|
+
$(function() {
|
824
|
+
|
825
|
+
// ---------------------------------------------------------------------------
|
826
|
+
// slider initializer
|
827
|
+
// ---------------------------------------------------------------------------
|
828
|
+
var dependencies_met_page_ready = setInterval (() => {
|
829
|
+
var atticFinished = (j1.adapter.attic.getState() == 'finished') ? true : false;
|
830
|
+
|
831
|
+
if (atticFinished) {
|
832
|
+
|
833
|
+
const VIDEO_PLAYING_STATE = {
|
834
|
+
"PLAYING": "PLAYING",
|
835
|
+
"PAUSE": "PAUSE",
|
836
|
+
"ENDED": "ENDED"
|
837
|
+
};
|
838
|
+
|
839
|
+
var vjsPlayer;
|
840
|
+
var vjsOptions;
|
841
|
+
var piSkipButtons;
|
842
|
+
|
843
|
+
var vjsPlayerType = 'native';
|
844
|
+
var videoPlayStatus = VIDEO_PLAYING_STATE.PAUSE;
|
845
|
+
|
846
|
+
piSkipButtons = {
|
847
|
+
enabled: true,
|
848
|
+
backward: 30,
|
849
|
+
forward: 30,
|
850
|
+
backwardIndex: 0,
|
851
|
+
forwardIndex: 0,
|
852
|
+
surroundPlayButton: true
|
853
|
+
};
|
854
|
+
|
855
|
+
// Thumbs Slider (slave|bottom)
|
856
|
+
// -----------------------------------------------------------------------
|
857
|
+
const thumbsSlider3 = new Swiper("#thumbs_slider_3", {
|
858
|
+
direction: 'horizontal',
|
859
|
+
spaceBetween: 5,
|
860
|
+
slidesPerView: 3,
|
861
|
+
grabCursor: true,
|
862
|
+
watchSlidesProgress: true,
|
863
|
+
on: {
|
864
|
+
transitionStart: (swiper) => {
|
865
|
+
masterSlider3.slideTo(swiper.activeIndex);
|
866
|
+
}
|
867
|
+
}
|
868
|
+
});
|
869
|
+
|
870
|
+
// Initialize Master Slider
|
871
|
+
// -----------------------------------------------------------------------
|
872
|
+
// See: https://stackoverflow.com/questions/45468980/how-to-fix-event-conflicts-between-swiper-and-video-js
|
873
|
+
var masterSlider3 = new Swiper('#master_slider_3', {
|
874
|
+
autoHeight: true, // adapt height of the currently active slide.
|
875
|
+
direction: 'horizontal',
|
876
|
+
thumbs: {
|
877
|
+
swiper: thumbsSlider3,
|
878
|
+
},
|
879
|
+
on: {
|
880
|
+
afterInit: (swiper) => {
|
881
|
+
// do something
|
882
|
+
},
|
883
|
+
slideChangeTransitionStart: (swiper) => {
|
884
|
+
thumbsSlider3.slideTo(swiper.activeIndex);
|
885
|
+
},
|
886
|
+
slideChangeTransitionEnd: (swiper) => {
|
887
|
+
var currentSlide = $(swiper.slides[swiper.activeIndex]);
|
888
|
+
var currentSlideType = currentSlide.data('slide-type');
|
889
|
+
// in case user click next before video ended
|
890
|
+
if (videoPlayStatus === VIDEO_PLAYING_STATE.PLAYING) {
|
891
|
+
vjsPlayer.pause();
|
892
|
+
}
|
893
|
+
|
894
|
+
switch (currentSlideType) {
|
895
|
+
case 'image':
|
896
|
+
//runNext();
|
897
|
+
break;
|
898
|
+
case 'video':
|
899
|
+
// vjsPlayer.currentTime(0);
|
900
|
+
// vjsPlayer.play();
|
901
|
+
videoPlayStatus = VIDEO_PLAYING_STATE.PLAYING;
|
902
|
+
break;
|
903
|
+
default:
|
904
|
+
throw new Error('invalid slide type');
|
905
|
+
}
|
906
|
+
}
|
907
|
+
}
|
908
|
+
});
|
909
|
+
|
910
|
+
// vjsPlayer.on('ended', function() {
|
911
|
+
// next();
|
912
|
+
// });
|
913
|
+
|
914
|
+
// global function
|
915
|
+
// function prev() {
|
916
|
+
// swiper.slidePrev();
|
917
|
+
// }
|
918
|
+
|
919
|
+
// function next() {
|
920
|
+
// swiper.slideNext();
|
921
|
+
// }
|
922
|
+
|
923
|
+
// function runNext() {
|
924
|
+
// timeout = setTimeout(function () {
|
925
|
+
// next()
|
926
|
+
// }, waiting)
|
927
|
+
// }
|
928
|
+
|
929
|
+
// Initialize VideoJS player/s
|
930
|
+
// -----------------------------------------------------------------------
|
931
|
+
vjsOptions = {
|
932
|
+
plugins: {
|
933
|
+
skipButtons: {
|
934
|
+
backward: 30,
|
935
|
+
forward: 30,
|
936
|
+
backwardIndex: 0,
|
937
|
+
forwardIndex: 1
|
938
|
+
}
|
939
|
+
}
|
940
|
+
};
|
941
|
+
vjsPlayer = videojs('peck_pocketed_video', {});
|
942
|
+
|
943
|
+
// Add VJS plugins
|
944
|
+
// -----------------------------------------------------------------------
|
945
|
+
if (piSkipButtons.enabled) {
|
946
|
+
var backwardIndex = piSkipButtons.backwardIndex;
|
947
|
+
var forwardIndex = piSkipButtons.forwardIndex;
|
948
|
+
|
949
|
+
// property 'surroundPlayButton' takes precendence
|
950
|
+
//
|
951
|
+
if (piSkipButtons.surroundPlayButton) {
|
952
|
+
var backwardIndex = 0;
|
953
|
+
var forwardIndex = 1;
|
954
|
+
}
|
955
|
+
|
956
|
+
// plugin initialized with custom options
|
957
|
+
// See: https://videojs.com/guides/options/
|
958
|
+
vjsPlayer.skipButtons({
|
959
|
+
backwardIndex: backwardIndex,
|
960
|
+
forwardIndex: forwardIndex,
|
961
|
+
backward: piSkipButtons.backward,
|
962
|
+
forward: piSkipButtons.forward,
|
963
|
+
});
|
964
|
+
}
|
965
|
+
|
966
|
+
clearInterval(dependencies_met_page_ready);
|
967
|
+
} // END pageVisible
|
968
|
+
}, 10); // END dependencies_met_page_ready
|
969
|
+
|
970
|
+
});
|
971
|
+
</script>
|
972
|
+
++++
|
973
|
+
|