

index.html
<div class="aperture">
<header class="aperture-bar">
<a class="aperture-brand" href="#">Nocturne</a>
<button class="aperture-toggle" type="button" aria-label="Menu">
<svg class="aperture-iris" viewBox="0 0 64 64" aria-hidden="true" focusable="false">
<defs>
<linearGradient id="aperture-rim-g" gradientUnits="userSpaceOnUse" x1="8" y1="6" x2="56" y2="60">
<stop offset="0" class="aperture-rim-a"/><stop offset=".42" class="aperture-rim-b"/><stop offset=".6" class="aperture-rim-c"/><stop offset="1" class="aperture-rim-d"/>
</linearGradient>
<linearGradient id="aperture-steel-g" gradientUnits="userSpaceOnUse" x1="6" y1="4" x2="58" y2="62">
<stop offset="0" class="aperture-steel-a"/><stop offset=".34" class="aperture-steel-b"/><stop offset=".52" class="aperture-steel-c"/><stop offset="1" class="aperture-steel-d"/>aperture.css
.aperture-bar::before {
content: "";
position: absolute;
inset: 0;
z-index: -1;
background: var(--aperture-plate);
box-shadow: inset 0 1px 0 var(--aperture-plate-hi), 0 1px 0 var(--aperture-plate-edge), var(--aperture-plate-shadow);
transition: opacity 240ms var(--aperture-ease-out);
}
.aperture.is-open .aperture-bar::before { opacity: 0; }
.aperture-brand {aperture.js
export function init(root, { onOpen, onClose, onSelect, onPreview, push, drag = true } = {}) {
const toggle = root.querySelector('.aperture-toggle');
const iris = toggle.querySelector('.aperture-iris');
const menu = root.querySelector('.aperture-menu');
const list = menu.querySelector('.aperture-list');
const readout = root.querySelector('.aperture-readout-n');
const glass = iris.querySelector('.aperture-glass');
const flare = iris.querySelector('.aperture-flare');
const links = [...menu.querySelectorAll('.aperture-link')];
const blades = [...iris.querySelectorAll('.aperture-blade')];
Aperture
$5A menu button whose iris blades open into a full-screen menu and snap shut like a shutter
11.9 KB0 depsNavigation







