1.0.7 β’ Published 9 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-elattribute to specifyimgelements:
<img src="yourpath/yourimage.jpg" data-el>- Add
data-video-el,data-srcattributes to specifyvideoelements:
<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-srcattributes to yourimgto 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
gapbetween slides,scaleof slides andopacityof 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
eland 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%)`
}