Skip to content

Instantly share code, notes, and snippets.

@mevius6
mevius6 / index.html
Created August 2, 2020 22:41
Scroll Spinning SVG
<svg width="100" height="100" viewBox="0 0 24 24">
<path d="M21,9H15V22H13V16H11V22H9V9H3V7H21M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6C10.89,6 10,5.1 10,4C10,2.89 10.89,2 12,2Z" />
</svg>
@mevius6
mevius6 / bind-css-keyframe-animation-to-scroll.markdown
Created August 2, 2020 22:41
Bind CSS keyframe animation to scroll
const doc = document;
const select = (expr, con) => (con || doc).querySelector(expr);
const selectAll = (expr, con) => {
return Array.prototype.slice.call((con || doc).querySelectorAll(expr));
}
const selectFromData = (expr, con) => selectAll(`[data-${con}]`)
.find(item => item.dataset[con] === expr);
@mevius6
mevius6 / lock.js
Created January 25, 2021 12:36
wake-lock-api.js
let lock
try {
lock = await navigator.wakeLock.request('screen');
} catch (err) {
// Error or rejection
console.log('Wake Lock error: ', err);
}
await lock.release()
const parsedUrl = new URL(window.location.href);
const modules = {
feed: import('./feed.js'),
form: import('./form.js'),
map: import('./map.js'),
};
/**
* Асинхронная загрузка модулей
// https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/CSSModules/v1Explainer.md
import styles from './html5Element.css';
class HTML5Element extends HTMLElement {
constructor() {
super();
let shadowRoot = this.attachShadow({ mode: "closed" });
this.shadowRoot.adoptedStyleSheets = [styles];
const UA = navigator.userAgent;
const root = document.documentElement;
const body = document.body;
const MathUtils = {
map: (x, a, b, c, d) => ((x - a) * (d - c)) / (b - a) + c,
// линейная интерполяция
lerp: (min, max, val) => min * (1 - val) + max * val,
// расстояние между двумя точками
distance: (x1, y1, x2, y2) => Math.hypot(x2 - x1, y2 - y1),
{
/* ------------------------------------------------------------------------
[Navigation by Tokens]
├── window
├── workbench
├── explorer
├── [editor]
│ ├── minimap
│ └── suggest
├── files