|
20 | 20 | a(href="#features" v-scroll-to="'#features'") Features |
21 | 21 | a(id="features" name="features") |
22 | 22 | div.max-widthed.mb5.features |
23 | | - w-icon.pr2(color="secondary") check |
| 23 | + w-icon.pr2(color="secondary") material-icons check |
24 | 24 | strong SUPPORTS VUE 3. |
25 | 25 | br |
26 | | - w-icon.pr2(color="secondary") check |
| 26 | + w-icon.pr2(color="secondary") material-icons check |
27 | 27 | strong Supports Videos with customizable attributes. |
28 | 28 | br |
29 | | - w-icon.pr2(color="secondary") check |
| 29 | + w-icon.pr2(color="secondary") material-icons check |
30 | 30 | | #[strong Fully responsive] and scales with its container.#[br] |
31 | | - w-icon.pr2(color="secondary") check |
| 31 | + w-icon.pr2(color="secondary") material-icons check |
32 | 32 | | #[strong Touch ready] & mouse dragging for desktop.#[br] |
33 | | - w-icon.pr2(color="secondary") check |
| 33 | + w-icon.pr2(color="secondary") material-icons check |
34 | 34 | | #[strong Accessibility friendly] & keyboard navigation.#[br] |
35 | | - w-icon.pr2(color="secondary") check |
| 35 | + w-icon.pr2(color="secondary") material-icons check |
36 | 36 | | #[strong Highly customizable].#[br] |
37 | | - w-icon.pr2(color="secondary") check |
| 37 | + w-icon.pr2(color="secondary") material-icons check |
38 | 38 | | #[strong Lazy loading].#[br] |
39 | | - w-icon.pr2(color="secondary") check |
| 39 | + w-icon.pr2(color="secondary") material-icons check |
40 | 40 | | Show multiple items per slides.#[br] |
41 | | - w-icon.pr2(color="secondary") check |
| 41 | + w-icon.pr2(color="secondary") material-icons check |
42 | 42 | | #[strong Infinite looping], customizable arrows or disable arrow on a slideshow end, autoplay.#[br] |
43 | | - w-icon.pr2(color="secondary") check |
| 43 | + w-icon.pr2(color="secondary") material-icons check |
44 | 44 | | Built-in #[strong parallax] effect & #[strong 3D rotation].#[br] |
45 | | - w-icon.pr2(color="secondary") check |
| 45 | + w-icon.pr2(color="secondary") material-icons check |
46 | 46 | | #[strong Breakpoints] with different configuration.#[br] |
47 | | - w-icon.pr2(color="secondary") check |
| 47 | + w-icon.pr2(color="secondary") material-icons check |
48 | 48 | | Slide content supports #[strong title & description, inside OR outside] the current slide.#[br] |
49 | | - w-icon.pr2(color="secondary") check |
| 49 | + w-icon.pr2(color="secondary") material-icons check |
50 | 50 | | #[strong Add or remove slides] on the fly, #[strong disable or enable the slideshow].#[br] |
51 | | - w-icon.pr2(color="secondary") check |
| 51 | + w-icon.pr2(color="secondary") material-icons check |
52 | 52 | | Uses #[strong CSS animations] & comes with a minimum of styles (using the #[i BEM] convention).#[br] |
53 | | - w-icon.pr2(color="secondary") check |
| 53 | + w-icon.pr2(color="secondary") material-icons check |
54 | 54 | | #[strong Emitted events] for callbacks, etc...#[br] |
55 | | - w-icon.pr2(color="secondary") check |
| 55 | + w-icon.pr2(color="secondary") material-icons check |
56 | 56 | | #[strong Supports RTL] direction |
57 | 57 |
|
58 | 58 | .max-widthed.mt8.mb3.title Github project |
59 | 59 | w-flex.max-widthed.mb5(align-center shrink) |
60 | 60 | w-icon.pr5.lightgrey--text(size="46") fab fa-github |
61 | | - a(href="https://github.com/antoniandre/vueper-slides" target="_blank") //github.com/antoniandre/vueper-slides #[w-icon(color="primary") open_in_new] |
| 61 | + a(href="https://github.com/antoniandre/vueper-slides" target="_blank") //github.com/antoniandre/vueper-slides #[w-icon(color="primary") material-icons open_in_new] |
62 | 62 |
|
63 | 63 | w-flex.max-widthed.my8(align-center) |
64 | | - w-icon.mr4(size="50" color="pink lighten-3") favorite |
| 64 | + w-icon.mr4(size="50" color="pink lighten-3") material-icons favorite |
65 | 65 | w-alert.ma0.pl5(border="left" text color="pink" style="width: 100%;max-width: 620px") |
66 | 66 | | If you like Vueper Slides, you can |
67 | 67 | a.pink--text.mx2( |
|
81 | 81 | path(fill="#497ca2" d="M449 0c-78 5-152 39-217 82-19 13-37 26-54 40-39 1-77 15-110 34-34 21-53 60-61 99-11 52-8 108 6 159 7 23 16 46 33 63 4-4 13-4 13-11-1-5-7-8-9-14-27-48-32-108-11-159 13-32 36-63 68-77 19-9 42-7 58 6 6 7 18 4 24-2 6-4 11-10 19-10-24 25-39 60-38 95 1 15 3 31 8 45 16 36 41 69 76 89 5 2 10 6 16 7 5-2 14-5 14-12-4-9-14-12-21-18-27-23-56-48-67-82-9-29-1-60 8-88 7-15 21-32 39-29 15 1 28 13 43 8 11-5 13-17 16-27 5-17 3-38-10-51-16-18-40-23-62-25l-11-2c23-19 53-26 81-31 21-3 43-5 64-2 18 3 28 21 42 31-33 47-57 102-56 159a170 170 0 0086 149c6-1 13-7 10-14-5-11-17-16-25-25-33-30-52-75-50-121 1-29 11-58 24-84 12-25 25-52 47-71 9-8 22-13 33-7 20 8 42 14 63 13-35 27-55 70-64 113-9 44-7 91 12 133 15 37 45 68 81 85 32 16 67 24 101 27 18 1 36 2 53-4 4-1 6-7 2-9-13-6-28-4-42-6-45-5-92-16-127-45-34-28-54-71-60-114-5-47 7-97 34-137 11-15 26-31 45-34 14-1 25 12 31 23 6 12 16 24 29 28 20-10 40-26 43-50 2-17-6-34-14-49-15-25-40-43-69-48-20-5-41-2-61-6-22-21-54-24-83-24zm6 21c22 0 48 5 62 25 4 7 8 16 8 24-1 10-10 22-21 19-9-7-18-14-30-16-14-4-31-1-43 8-6 6-17 8-24 2-9-6-17-15-28-17-27-7-54 1-81 6a364 364 0 01157-51zm117 29c33 0 66 25 72 58 3 12 3 28-8 35-3 2-6 4-8 1-8-12-12-27-23-37-3-7-12-8-19-9-13-2-26 0-39-4 7-7 6-17 4-25l-3-16 24-3zm-372 92l46 2c18 2 33 16 34 34 1 7 1 17-6 21-6 0-12-4-18-6-21-8-46-14-67-3-6 2-11 9-17 5-10-4-18-14-30-12-30 1-56 21-77 42-16 17-30 37-43 56 0-39 17-80 49-104 26-22 61-30 94-34l35-1z") |
82 | 82 | w-alert.ma0.pl5(border="left" text color="#1471b8" style="width: 100%;max-width: 620px") |
83 | 83 | strong |
84 | | - | Check out my new UI framework for Vue & Vue 3! |
| 84 | + | material-icons Check out my new UI framework for Vue & Vue 3! |
85 | 85 | a.headline.ml4( |
86 | 86 | href="https://antoniandre.github.io/wave-ui" |
87 | 87 | target="_blank" |
|
148 | 148 | h2 |
149 | 149 | a(href="#examples" v-scroll-to="'#examples'") Examples of Use |
150 | 150 | a(id="examples" name="examples") |
151 | | - p Here is a list of useful examples, but you can also try it yourself on #[a(href="https://codepen.io/antoniandre/pen/jevjoQ" target="_blank") codepen.io #[w-icon(color="primary") open_in_new]]. |
| 151 | + p Here is a list of useful examples, but you can also try it yourself on #[a(href="https://codepen.io/antoniandre/pen/jevjoQ" target="_blank") codepen.io #[w-icon(color="primary") material-icons open_in_new]]. |
152 | 152 |
|
153 | 153 | h3 |
154 | 154 | a(href="#ex--simplest-ever" v-scroll-to="'#ex--simplest-ever'") Simplest Ever |
|
170 | 170 | small |
171 | 171 | color="primary" |
172 | 172 | @click="$refs.exBasic[`${autoPlaying ? 'pause' : 'resume'}Autoplay`]();autoPlaying = !autoPlaying;pauseOnHover = false") |
173 | | - w-icon.mr1 {{ autoPlaying ? 'pause_circle_outline' : 'play_circle_outline' }} |
| 173 | + w-icon.mr1 material-icons {{ autoPlaying ? 'pause_circle_outline' : 'play_circle_outline' }} |
174 | 174 | | {{ autoPlaying ? 'Pause' : 'Resume' }} |
175 | 175 | w-button.ml2(small color="primary" :outlined="!pauseOnHover" @click="pauseOnHover = !pauseOnHover") |
176 | | - w-icon.mr1(v-if="pauseOnHover") check |
| 176 | + w-icon.mr1(v-if="pauseOnHover") material-icons check |
177 | 177 | | Pause on mouseover |
178 | 178 | code.ml2 Currently {{ internalAutoPlaying ? 'playing' : 'paused' }} |
179 | 179 | vueper-slides.ex2( |
|
183 | 183 | @autoplay-pause="internalAutoPlaying = false" |
184 | 184 | @autoplay-resume="internalAutoPlaying = true") |
185 | 185 | template(v-slot:pause) |
186 | | - w-icon(lg color="white") pause_circle_outline |
| 186 | + w-icon(lg color="white") material-icons pause_circle_outline |
187 | 187 | vueper-slide(v-for="(slide, i) in slides1" :key="slide.id" :title="slide.title" :content="slide.content" :style="'background-color: ' + colors[i % 4]") |
188 | 188 |
|
189 | 189 | p.subtitle-1.mt6 Basic autoplay (with pause on mouseover) source code: |
|
266 | 266 |
|
267 | 267 | vueper-slides.ex--arrows-and-bullets-2.no-shadow(:infinite="false" :slide-ratio="0.22" :bullets="false") |
268 | 268 | template(v-slot:arrow-left) |
269 | | - w-icon(color="white" xl) undo |
| 269 | + w-icon(color="white" xl) material-icons undo |
270 | 270 | template(v-slot:arrow-right) |
271 | | - w-icon(color="white" xl) redo |
| 271 | + w-icon(color="white" xl) material-icons redo |
272 | 272 | vueper-slide( |
273 | 273 | v-for="i in 5" |
274 | 274 | :key="i" |
|
340 | 340 | :title="i.toString()" |
341 | 341 | :style="'background-color: ' + colors[(i + 1) % 4]") |
342 | 342 | template(v-slot:bullet="{ active, slideIndex, index }") |
343 | | - w-icon.mr1(:color="colors[(index + 1) % 4]") {{ active ? 'check_circle' : 'radio_button_unchecked' }} |
| 343 | + w-icon.mr1(:color="colors[(index + 1) % 4]") material-icons {{ active ? 'check_circle' : 'radio_button_unchecked' }} |
344 | 344 | strong(:style="`color: ${colors[(index + 1) % 4]}`") Slide \#{{ index }} |
345 | 345 |
|
346 | 346 | p.mb0 When using the #[span.code bullet] slot, 3 variables are accessible: |
|
383 | 383 | @keyup.left="previous()" |
384 | 384 | @keyup.right="next()") |
385 | 385 | w-icon(:color="colors[(i + 2) % 4]") |
386 | | - | {{ currentSlide === slideIndex ? 'check_circle' : 'radio_button_unchecked' }} |
| 386 | + | material-icons {{ currentSlide === slideIndex ? 'check_circle' : 'radio_button_unchecked' }} |
387 | 387 |
|
388 | 388 | p.mb0 When using the #[span.code bullets] slot, 5 variables are accessible: |
389 | 389 | ul.max-widthed.mt1 |
|
597 | 597 | template(v-slot:content) |
598 | 598 | .vueperslide__content-wrapper |
599 | 599 | .subtitle-1 |
600 | | - w-icon.mr2(color="white") check |
| 600 | + w-icon.mr2(color="white") material-icons check |
601 | 601 | | Complex content {{ i.toString() }} with Vue.js |
602 | 602 | | {{ 1 === 1 ? 'interpreted' : 'non-interpreted' }} compilable content like |
603 | 603 | | components & #[span(v-pre) {{ mustaches }}]. |
|
626 | 626 |
|
627 | 627 | The content can be placed inside the slides (default) or outside above or bellow the slideshow.#[br] |
628 | 628 | In this example the content is set in a slot (refer to #[a(href="#ex--complex-slide-title-and-content" v-scroll-to="'#ex--complex-slide-title-and-content'") Complex Slide Title & Content] |
629 | | - for more details) and uses interpreted mustaches #[span.code(v-pre) {{ }} and Vuetify components like #[span.code w-flex] & #[span.code w-icon]]. |
| 629 | + for more details) and uses interpreted mustaches #[span.code(v-pre) {{ }} and Vuetify components like #[span.code v-layout] & #[span.code v-icon]]. |
630 | 630 |
|
631 | 631 | highlight(type="tips") |
632 | 632 | strong.red--text WARNING: The following tip does not apply to Vue 3. Vue 3 resolves this internally. |
|
638 | 638 | w-flex.max-widthed.mb4(align-center wrap) |
639 | 639 | w-flex.shrink.mr4(align-center wrap) |
640 | 640 | w-button.mt2.mr2(color="primary" @click="toggleSlidesTime" small) |
641 | | - w-icon.pr2 {{ slidesTimeTimerId ? 'highlight_off' : 'access_time' }} |
| 641 | + w-icon.pr2 material-icons {{ slidesTimeTimerId ? 'highlight_off' : 'access_time' }} |
642 | 642 | | {{ slidesTimeTimerId ? 'Stop' : 'Keep' }} updating time |
643 | 643 | w-transition-expand(x) |
644 | 644 | w-tag.mt2(v-if="slidesTimeTimerId === 0" small outlined) CPU says THANK YOU! |
645 | 645 | w-flex(align-center wrap) |
646 | 646 | w-button.mt2.mx2(color="primary" @click="contentPositionChange" small) |
647 | | - w-icon swap_vert |
| 647 | + w-icon material-icons swap_vert |
648 | 648 | | Move content position |
649 | 649 | strong.mt2.code {{ contentPosition === 'false' ? ':' : '' }}slide-content-outside="#[span.primary--text {{ contentPosition }}]" |
650 | 650 | vueper-slides.ex--updating-content( |
|
656 | 656 | vueper-slide(v-for="(slide, i) in slides4" :key="i" :style="'background-color: ' + ['#42b983', '#ff5252'][i % 2]") |
657 | 657 | template(v-slot:content) |
658 | 658 | .vueperslide__content-wrapper(style="flex-direction: row") |
659 | | - w-icon.pr3(color="white" size="5em") access_time |
| 659 | + w-icon.pr3(color="white" size="5em") material-icons access_time |
660 | 660 | span(style="font-size: 3.7em") {{ slide.title }} |
661 | 661 |
|
662 | 662 | ssh-pre(language="html-vue" label="HTML Vue Template"). |
|
712 | 712 | | This example illustrates how to add or remove slides on the fly from a running Vueper Slides instance.#[br] |
713 | 713 | | You can also completely freeze the slideshow and unfreeze when you want to.#[br] |
714 | 714 | w-button.ma1(color="primary" @click="appendSlide" small) |
715 | | - w-icon add |
| 715 | + w-icon material-icons add |
716 | 716 | | Add Slide |
717 | 717 | w-button.ma1(color="primary" @click="removeSlide" small) |
718 | | - w-icon remove |
| 718 | + w-icon material-icons remove |
719 | 719 | | Remove Slide |
720 | 720 | w-button.ma1(color="secondary" @click="toggleSlideshow" small) |
721 | | - w-icon {{ slideshowDisabled ? 'check_circle' : 'highlight_off'}} |
| 721 | + w-icon material-icons {{ slideshowDisabled ? 'check_circle' : 'highlight_off'}} |
722 | 722 | | {{ slideshowDisabled ? 'Enable' : 'Disable' }} Slideshow |
723 | 723 | highlight Note that the slideshow disables controls if you have only 1 slide or none. |
724 | 724 | p The arrows are also disabled on edges in this example. |
|
737 | 737 | :style="'background-color: ' + ['#ff5252', '#42b983'][i % 2]") |
738 | 738 | ssh-pre(language="html-vue" label="HTML Vue Template"). |
739 | 739 | <button @click="appendSlide" small> |
740 | | - <w-icon>add</w-icon> Add Slide |
| 740 | + <i class="icon material-icons">add</i> Add Slide |
741 | 741 | </button> |
742 | 742 | <button @click="removeSlide" small> |
743 | | - <w-icon>remove</w-icon> Remove Slide |
| 743 | + <i class="icon material-icons">remove</i> Remove Slide |
744 | 744 | </button> |
745 | 745 | <button @click="toggleSlideshow" small> |
746 | | - <w-icon> {{ "\{\{ slideshowDisabled ? 'check_circle' : 'highlight_off'\}\}" }}</w-icon> {{ "\{\{ slideshowDisabled ? 'Enable' : 'Disable' \}\}" }} Slideshow |
| 746 | + <i class="icon material-icons"> {{ "\{\{ slideshowDisabled ? 'check_circle' : 'highlight_off'\}\}" }}</i> {{ "\{\{ slideshowDisabled ? 'Enable' : 'Disable' \}\}" }} Slideshow |
747 | 747 | </button> |
748 | 748 |
|
749 | 749 | <vueper-slides |
|
841 | 841 | strong // event-name: |
842 | 842 | span.ml2 params |
843 | 843 | w-button(color="primary" sm outlined @click="logs = []") |
844 | | - w-icon.mr1(small) close |
| 844 | + w-icon.mr1(small) material-icons close |
845 | 845 | | Clear logs |
846 | 846 | div(v-for="(log, i) in logs") |
847 | 847 | strong.mr2 {{ log.eventName }}: |
|
967 | 967 | the #[span.code parallax-fixed-content] option. |
968 | 968 | w-flex.max-widthed.mb4(align-center wrap) |
969 | 969 | w-button.my1.mr2(small color="primary" @click="parallax *= -1;$refs.exParallax.refreshParallax()") |
970 | | - w-icon sync |
| 970 | + w-icon material-icons sync |
971 | 971 | | Reverse parallax effect |
972 | 972 | strong.code.mr4 :parallax="#[span.primary--text {{ parallax.toString() }}]" |
973 | 973 |
|
974 | 974 | w-button.my1.mr2(small color="primary" @click="parallaxFixedContent = !parallaxFixedContent") |
975 | | - w-icon {{ parallaxFixedContent ? 'close' : 'remove_from_queue' }} |
| 975 | + w-icon material-icons {{ parallaxFixedContent ? 'close' : 'remove_from_queue' }} |
976 | 976 | | Add a fix content |
977 | 977 | strong.code :parallax-fixed-content="#[span.primary--text {{ parallaxFixedContent.toString() }}]" |
978 | 978 | vueper-slides.ex--parallax(ref="exParallax" :parallax="parallax" :parallax-fixed-content="parallaxFixedContent") |
|
1205 | 1205 | p. |
1206 | 1206 | This example demonstrates how to control Vueper Slides from wherever you want. |
1207 | 1207 | ...In your code, not wherever on Earth.#[br] |
1208 | | - By using a #[a(href="https://vuejs.org/v2/api/#ref" target="_blank") Vue JS reference #[w-icon(color="primary") open_in_new]] on your slideshow, you can access any method it |
| 1208 | + By using a #[a(href="https://vuejs.org/v2/api/#ref" target="_blank") Vue JS reference #[w-icon(color="primary") material-icons open_in_new]] on your slideshow, you can access any method it |
1209 | 1209 | contains from outside.#[br] |
1210 | 1210 | Now that you have the power, here is a list of methods you may find useful: |
1211 | 1211 | ul.max-widthed.mb3 |
|
1226 | 1226 |
|
1227 | 1227 | div.text-center.mb3 |
1228 | 1228 | w-button.ma1(color="primary" small @click="$refs.myVueperSlides.previous()") |
1229 | | - w-icon arrow_back |
| 1229 | + w-icon material-icons arrow_back |
1230 | 1230 | | Previous |
1231 | 1231 | w-button.ma1(color="primary" small @click="$refs.myVueperSlides.goToSlide(5)") |
1232 | | - w-icon call_made |
| 1232 | + w-icon material-icons call_made |
1233 | 1233 | | Go to slide 6 |
1234 | 1234 | w-button.ma1(color="primary" small @click="$refs.myVueperSlides.next()") |
1235 | | - w-icon arrow_forward |
| 1235 | + w-icon material-icons arrow_forward |
1236 | 1236 | | Next |
1237 | 1237 | vueper-slides(:slide-ratio="1/5" ref="myVueperSlides") |
1238 | 1238 | vueper-slide(v-for="i in 10" :key="i" :title="i.toString()" :style="'background-color: ' + ['#ff5252', '#42b983'][i % 2]") |
|
1319 | 1319 | p |
1320 | 1320 | a(href="https://codepen.io/antoniandre/pen/ZEGEydP" target="_blank") |
1321 | 1321 | | Edit this example in Codepen |
1322 | | - w-icon.ml1(small color="primary") open_in_new |
| 1322 | + w-icon.ml1(small color="primary") material-icons open_in_new |
1323 | 1323 | vueper-slides( |
1324 | 1324 | ref="vueperslides3" |
1325 | 1325 | :touchable="false" |
|
1902 | 1902 | Sets the slideshow ratio so it will naturally stay ratio-ed on different browser width.#[br] |
1903 | 1903 | See the #[a(href="#ex--events" v-scroll-to="'#ex--events'") Events] example or #[a(href="#ex--breakpoints" v-scroll-to="'#ex--breakpoints'") Using Breakpoints] example. |
1904 | 1904 | #[br]More examples are available in a |
1905 | | - #[a(href="https://codepen.io/antoniandre/pen/KBXWPP" target="_blank") Codepen demo #[w-icon(color="primary") open_in_new]]. |
| 1905 | + #[a(href="https://codepen.io/antoniandre/pen/KBXWPP" target="_blank") Codepen demo #[w-icon(color="primary") material-icons open_in_new]]. |
1906 | 1906 | highlight. |
1907 | 1907 | Setting the ratio avoids heavier javascript width and height calculations on resize.#[br] |
1908 | 1908 | But thanks to the default value, Vueper Slides' got your back if you don't set any. |
|
2119 | 2119 | a(href="#available-css-classes" v-scroll-to="'#available-css-classes'") Available CSS Classes |
2120 | 2120 | a(id="available-css-classes" name="available-css-classes") |
2121 | 2121 | p. |
2122 | | - Vueper Slides uses the #[a(href="http://getbem.com/naming/" target="_blank") BEM #[w-icon(color="primary") open_in_new]] |
| 2122 | + Vueper Slides uses the #[a(href="http://getbem.com/naming/" target="_blank") BEM #[w-icon(color="primary") material-icons open_in_new]] |
2123 | 2123 | naming convention. Styling any element should be quite simple and straightforward.#[br] |
2124 | 2124 |
|
2125 | 2125 | ul.max-widthed |
|
0 commit comments