1.0.7 β’ Published 5 months ago
croak-popup v1.0.7
Croak Popup(JavaScript popup)π»
Features:
- keyboard control (left/right) π‘
- custom buttons control (left/right) π‘
- slide click control π‘
- swipe control (mobile only) π‘
Let's get started
- Install croak:
npm i croak-popup
- Add CSS and JS:
<link rel="stylesheet" href="node_modules/croak-popup/css/croak.min.css">
<script type="module" src="/node_modules/croak-popup/js/croak.min.js"></script>
- Add croak container:
<div data-croak-container>
</div>
- Add control buttons(optional):
<div data-croak-container>
<button class="stories-prev"></button>
<button class="stories-next"></button>
</div>
- Add
data-el
attribute to specifyimg
elements:
<img src="yourpath/yourimage.jpg" data-el>
- Add
data-video-el
,data-src
attributes to specifyvideo
elements:
<div
data-video-el
data-src-webm="yourpath/yourvideo.webm"
data-src-mp4="yourpath/yourvideo.mp4"
data-src-mob-mp4="yourpath/yourvideo.mp4"
data-src-mob-webm="yourpath/yourvideo.webm"
>
<img src="yourpath/yourimage.jpg">
</div>
- Add
data-video-el
,data-src
attributes to yourimg
to specify video elements:
<img
src="yourpath/yourimage.jpg"
data-video-el
data-src-webm="yourpath/yourvideo.webm"
data-src-mp4="yourpath/yourvideo.mp4"
data-src-mob-mp4="yourpath/yourvideo.mp4"
data-src-mob-webm="yourpath/yourvideo.webm"
>
- Add the "marker" to your HTML:
<hr class="marker">
- Your basic HTML for images only:
<hr class="marker">
<div data-croak-container>
<button class="stories-prev"></button>
<button class="stories-next"></button>
<img src="yourpath/yourimage1.png" data-el>
<img src="yourpath/yourimage2.png" data-el>
<img src="yourpath/yourimage3.png" data-el>
</div>
- Your basic HTML for images + video:
<hr class="marker">
<div data-croak-container>
<button class="stories-prev"></button>
<button class="stories-next"></button>
<img src="yourpath/yourimage1.png" data-el>
<div
data-video-el
data-src-webm="yourpath/yourvideo1.webm"
data-src-mp4="yourpath/yourvideo1.mp4"
data-src-mob-mp4="yourpath/yourvideo1.mp4"
data-src-mob-webm="yourpath/yourvideo1.webm"
>
<img src="yourpath/yourimage1.jpg">
</div>
<img src="yourpath/yourimage2.png" data-el>
<div
data-video-el
data-src-webm="yourpath/yourvideo2.webm"
data-src-mp4="yourpath/yourvideo2.mp4"
data-src-mob-mp4="yourpath/yourvideo2.mp4"
data-src-mob-webm="yourpath/yourvideo2.webm"
>
<img src="yourpath/yourimage2.jpg">
</div>
</div>
- Create basic popup essence:
import { croakSlider } from "../node_modules/croak-popup/js/croak.min.js"
let frog = new croakSlider({
stories: {
DOMElement: "div[data-croak-container]",
gap: 50,
scale: .75,
opacity: 0.95,
mobileVideo: true
},
});
- use
- gap
- scale
- opacity
in order to set
gap
between slides,scale
of slides andopacity
of the background respectively
You have done itπ₯°
How does it work?
- the main logic hides behind getDistanceStories function, it takes 2 parametres: current element aka as
el
and galleri wrapper, aka asstoriesGallery
simply put, the function counts the distance between the marker and the element's distance from the right screen corner
whole function's code:
function getDistanceStories(el, galleriEssence) {
let elRight = el.getBoundingClientRect().right
let markerRight = document.querySelector('.marker').getBoundingClientRect().left
let distanceCheck = markerRight - elRight
galleriEssence.style.transform = `translateX(${distanceCheck + galleriEssence.getBoundingClientRect().left + (el.getBoundingClientRect().width / 2)}px) translateY(-50%)`
}