handsfree
Version:
A Face Pointer and Pose Estimator for interacting with pages, desktops, robots, and more via gestures
501 lines (473 loc) • 15.1 kB
CSS
/* Debugger */
.handsfree-debugger,
.handsfree-video,
.handsfree-canvas {
display: none;
}
.handsfree-started.handsfree-show-debug .handsfree-debugger,
.handsfree-started.handsfree-show-debug .handsfree-canvas {
display: block;
}
.handsfree-started.handsfree-show-debug .handsfree-show-when-debugging {display: block}
.handsfree-started.handsfree-show-debug .handsfree-hide-when-debugging {display: none}
body.handsfree-started.handsfree-hide-debug .handsfree-show-when-not-debugging {display: block}
body.handsfree-started.handsfree-hide-debug .handsfree-hide-when-not-debugging {display: none}
/* Debug */
.handsfree-debugger {
position: relative;
}
.handsfree-canvas,
.handsfree-video {
width: auto;
height: auto;
transform: scale(-1, 1);
}
.handsfree-video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: auto;
}
.handsfree-canvas {
position: absolute;
left: 0;
top: 0;
width: 100% ;
height: auto ;
}
.handsfree-canvas:last-child {
position: relative;
}
.handsfree-canvas-webgl {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: auto;
margin-left: 50%;
transform: translate(-50%) scale(-1, 1);
}
/* Loading States */
.handsfree-show-when-loading {
display: none;
}
.handsfree-loading .handsfree-hide-when-loading {
display: none ;
}
.handsfree-loading .handsfree-show-when-loading {
display: block;
}
.handsfree-loading a.handsfree-show-when-loading,
.handsfree-loading button.handsfree-show-when-loading,
.handsfree-loading span.handsfree-show-when-loading {
display: inline-block;
}
/* Started/stop states */
.handsfree-stop {
display: none;
}
.handsfree-started .handsfree-start {
display: none;
}
.handsfree-started .handsfree-stop {
display: block;
}
.handsfree-started a.handsfree-stop,
.handsfree-started button.handsfree-stop,
.handsfree-started span.handsfree-stop {
display: inline-block;
}
.handsfree-started .handsfree-show-when-stopped {
display: none;
}
.handsfree-show-when-started {
display: none;
}
.handsfree-started .handsfree-show-when-started {
display: initial;
}
.handsfree-loading .handsfree-show-when-loading {
display: initial;
}
/* Pointer */
.handsfree-pointer {
width: 15px;
height: 15px;
border-radius: 15px;
background: #f00;
border: 3px solid #f00;
position: fixed;
top: 0;
left: 0;
z-index: 999999;
opacity: 1;
transition: opacity 0.35s ease;
display: none;
}
.handsfree-pointer-hidden {
opacity: 0;
}
.handsfree-calibrating .handsfree-pointer.handsfree-pointer-hidden {
opacity: 1;
}
.handsfree-scroll-focus {
outline: 3px solid #f00;
}
.handsfree-started.handsfree-model-weboji .handsfree-pointer-face {
display: block;
}
.handsfree-hidden {
display: none ;
}
/* Weboji */
.handsfree-started .handsfree-hide-when-started-without-weboji {
display: none;
}
.handsfree-started.handsfree-model-weboji .handsfree-hide-when-started-without-weboji {
display: inline-block;
}
.handsfree-started .handsfree-show-when-started-without-weboji {
display: inline-block;
}
.handsfree-show-when-started-without-weboji,
.handsfree-started.handsfree-model-weboji .handsfree-show-when-started-without-weboji {
display: none;
}
.handsfree-hide-when-started-without-weboji + .handsfree-show-when-loading,
.handsfree-loading .handsfree-show-when-started-without-weboji + .handsfree-hide-when-loading {
display: none ;
}
.handsfree-started.handsfree-loading .handsfree-hide-when-started-without-weboji + .handsfree-show-when-started-without-weboji {
display: inline-block ;
}
/* Holistic */
.handsfree-started .handsfree-hide-when-started-without-holistic {
display: none;
}
.handsfree-started.handsfree-model-holistic .handsfree-hide-when-started-without-holistic {
display: inline-block;
}
.handsfree-started .handsfree-show-when-started-without-holistic {
display: inline-block;
}
.handsfree-show-when-started-without-holistic,
.handsfree-started.handsfree-model-holistic .handsfree-show-when-started-without-holistic {
display: none;
}
.handsfree-hide-when-started-without-holistic + .handsfree-show-when-loading,
.handsfree-loading .handsfree-show-when-started-without-holistic + .handsfree-hide-when-loading {
display: none ;
}
.handsfree-started.handsfree-loading .handsfree-hide-when-started-without-holistic + .handsfree-show-when-started-without-holistic {
display: inline-block ;
}
/* Hands */
.handsfree-started .handsfree-hide-when-started-without-hands {
display: none;
}
.handsfree-started.handsfree-model-hands .handsfree-hide-when-started-without-hands {
display: inline-block;
}
.handsfree-started .handsfree-show-when-started-without-hands {
display: inline-block;
}
.handsfree-show-when-started-without-hands,
.handsfree-started.handsfree-model-hands .handsfree-show-when-started-without-hands {
display: none;
}
.handsfree-hide-when-started-without-hands + .handsfree-show-when-loading,
.handsfree-loading .handsfree-show-when-started-without-hands + .handsfree-hide-when-loading {
display: none ;
}
.handsfree-started.handsfree-loading .handsfree-hide-when-started-without-hands + .handsfree-show-when-started-without-hands {
display: inline-block ;
}
/* Handpose */
.handsfree-started .handsfree-hide-when-started-without-handpose {
display: none;
}
.handsfree-started.handsfree-model-handpose .handsfree-hide-when-started-without-handpose {
display: inline-block;
}
.handsfree-started .handsfree-show-when-started-without-handpose {
display: inline-block;
}
.handsfree-show-when-started-without-handpose,
.handsfree-started.handsfree-model-handpose .handsfree-show-when-started-without-handpose {
display: none;
}
.handsfree-hide-when-started-without-handpose + .handsfree-show-when-loading,
.handsfree-loading .handsfree-show-when-started-without-handpose + .handsfree-hide-when-loading {
display: none ;
}
.handsfree-started.handsfree-loading .handsfree-hide-when-started-without-handpose + .handsfree-show-when-started-without-handpose {
display: inline-block ;
}
/* Facemesh */
.handsfree-started .handsfree-hide-when-started-without-facemesh {
display: none;
}
.handsfree-started.handsfree-model-facemesh .handsfree-hide-when-started-without-facemesh {
display: inline-block;
}
.handsfree-started .handsfree-show-when-started-without-facemesh {
display: inline-block;
}
.handsfree-show-when-started-without-facemesh,
.handsfree-started.handsfree-model-facemesh .handsfree-show-when-started-without-facemesh {
display: none;
}
.handsfree-hide-when-started-without-facemesh + .handsfree-show-when-loading,
.handsfree-loading .handsfree-show-when-started-without-facemesh + .handsfree-hide-when-loading {
display: none ;
}
.handsfree-started.handsfree-loading .handsfree-hide-when-started-without-facemesh + .handsfree-show-when-started-without-facemesh {
display: inline-block ;
}
/* Pose */
.handsfree-started .handsfree-hide-when-started-without-pose {
display: none;
}
.handsfree-started.handsfree-model-pose .handsfree-hide-when-started-without-pose {
display: inline-block;
}
.handsfree-started .handsfree-show-when-started-without-pose {
display: inline-block;
}
.handsfree-show-when-started-without-pose,
.handsfree-started.handsfree-model-pose .handsfree-show-when-started-without-pose {
display: none;
}
.handsfree-hide-when-started-without-pose + .handsfree-show-when-loading,
.handsfree-loading .handsfree-show-when-started-without-pose + .handsfree-hide-when-loading {
display: none ;
}
.handsfree-started.handsfree-loading .handsfree-hide-when-started-without-pose + .handsfree-show-when-started-without-pose {
display: inline-block ;
}
/* Click animation */
body.handsfree-clicked .handsfree-pointer {
background: #ff0;
animation: shadow-pulse 0.15s 1;
}
@keyframes shadow-pulse {
0% {
box-shadow: 0 0 0 15px rgba(255, 0, 0, 0.45);
}
100% {
box-shadow: 0 0 0 75px rgba(255, 0, 0, 0);
}
}
/* ## SPECIFIC HAND */
/* Finger Pinchers */
/* Index Left */
body:not(.handsfree-finger-pinched-0-0) .handsfree-hide-when-finger-pinched-0-0 {
display: block;
}
body.handsfree-finger-pinched-0-0 .handsfree-hide-when-finger-pinched-0-0 {
display: none;
}
body:not(.handsfree-finger-pinched-0-0) .handsfree-show-when-finger-pinched-0-0 {
display: none;
}
body.handsfree-finger-pinched-0-0 .handsfree-show-when-finger-pinched-0-0 {
display: block;
}
/* Index Right */
body:not(.handsfree-finger-pinched-1-0) .handsfree-hide-when-finger-pinched-1-0 {
display: block;
}
body.handsfree-finger-pinched-1-0 .handsfree-hide-when-finger-pinched-1-0 {
display: none;
}
body:not(.handsfree-finger-pinched-1-0) .handsfree-show-when-finger-pinched-1-0 {
display: none;
}
body.handsfree-finger-pinched-1-0 .handsfree-show-when-finger-pinched-1-0 {
display: block;
}
/* Middle Left */
body:not(.handsfree-finger-pinched-0-1) .handsfree-hide-when-finger-pinched-0-1 {
display: block;
}
body.handsfree-finger-pinched-0-1 .handsfree-hide-when-finger-pinched-0-1 {
display: none;
}
body:not(.handsfree-finger-pinched-0-1) .handsfree-show-when-finger-pinched-0-1 {
display: none;
}
body.handsfree-finger-pinched-0-1 .handsfree-show-when-finger-pinched-0-1 {
display: block;
}
/* Middle Right */
body:not(.handsfree-finger-pinched-1-1) .handsfree-hide-when-finger-pinched-1-1 {
display: block;
}
body.handsfree-finger-pinched-1-1 .handsfree-hide-when-finger-pinched-1-1 {
display: none;
}
body:not(.handsfree-finger-pinched-1-1) .handsfree-show-when-finger-pinched-1-1 {
display: none;
}
body.handsfree-finger-pinched-1-1 .handsfree-show-when-finger-pinched-1-1 {
display: block;
}
/* Ring Left */
body:not(.handsfree-finger-pinched-0-2) .handsfree-hide-when-finger-pinched-0-2 {
display: block;
}
body.handsfree-finger-pinched-0-2 .handsfree-hide-when-finger-pinched-0-2 {
display: none;
}
body:not(.handsfree-finger-pinched-0-2) .handsfree-show-when-finger-pinched-0-2 {
display: none;
}
body.handsfree-finger-pinched-0-2 .handsfree-show-when-finger-pinched-0-2 {
display: block;
}
/* Ring Right */
body:not(.handsfree-finger-pinched-1-2) .handsfree-hide-when-finger-pinched-1-2 {
display: block;
}
body.handsfree-finger-pinched-1-2 .handsfree-hide-when-finger-pinched-1-2 {
display: none;
}
body:not(.handsfree-finger-pinched-1-2) .handsfree-show-when-finger-pinched-1-2 {
display: none;
}
body.handsfree-finger-pinched-1-2 .handsfree-show-when-finger-pinched-1-2 {
display: block;
}
/* Pinky Left */
body:not(.handsfree-finger-pinched-0-3) .handsfree-hide-when-finger-pinched-0-3 {
display: block;
}
body.handsfree-finger-pinched-0-3 .handsfree-hide-when-finger-pinched-0-3 {
display: none;
}
body:not(.handsfree-finger-pinched-0-3) .handsfree-show-when-finger-pinched-0-3 {
display: none;
}
body.handsfree-finger-pinched-0-3 .handsfree-show-when-finger-pinched-0-3 {
display: block;
}
/* Pinky Right */
body:not(.handsfree-finger-pinched-1-3) .handsfree-hide-when-finger-pinched-1-3 {
display: block;
}
body.handsfree-finger-pinched-1-3 .handsfree-hide-when-finger-pinched-1-3 {
display: none;
}
body:not(.handsfree-finger-pinched-1-3) .handsfree-show-when-finger-pinched-1-3 {
display: none;
}
body.handsfree-finger-pinched-1-3 .handsfree-show-when-finger-pinched-1-3 {
display: block;
}
/* ## ANY HAND */
/* Finger Pinchers */
/* Index Left */
body:not(.handsfree-finger-pinched-0) .handsfree-hide-when-finger-pinched-0 {
display: block;
}
body.handsfree-finger-pinched-0 .handsfree-hide-when-finger-pinched-0 {
display: none;
}
body:not(.handsfree-finger-pinched-0) .handsfree-show-when-finger-pinched-0 {
display: none;
}
body.handsfree-finger-pinched-0 .handsfree-show-when-finger-pinched-0 {
display: block;
}
/* Index Right */
body:not(.handsfree-finger-pinched-0) .handsfree-hide-when-finger-pinched-0 {
display: block;
}
body.handsfree-finger-pinched-0 .handsfree-hide-when-finger-pinched-0 {
display: none;
}
body:not(.handsfree-finger-pinched-0) .handsfree-show-when-finger-pinched-0 {
display: none;
}
body.handsfree-finger-pinched-0 .handsfree-show-when-finger-pinched-0 {
display: block;
}
/* Middle Left */
body:not(.handsfree-finger-pinched-1) .handsfree-hide-when-finger-pinched-1 {
display: block;
}
body.handsfree-finger-pinched-1 .handsfree-hide-when-finger-pinched-1 {
display: none;
}
body:not(.handsfree-finger-pinched-1) .handsfree-show-when-finger-pinched-1 {
display: none;
}
body.handsfree-finger-pinched-1 .handsfree-show-when-finger-pinched-1 {
display: block;
}
/* Middle Right */
body:not(.handsfree-finger-pinched-1) .handsfree-hide-when-finger-pinched-1 {
display: block;
}
body.handsfree-finger-pinched-1 .handsfree-hide-when-finger-pinched-1 {
display: none;
}
body:not(.handsfree-finger-pinched-1) .handsfree-show-when-finger-pinched-1 {
display: none;
}
body.handsfree-finger-pinched-1 .handsfree-show-when-finger-pinched-1 {
display: block;
}
/* Ring Left */
body:not(.handsfree-finger-pinched-2) .handsfree-hide-when-finger-pinched-2 {
display: block;
}
body.handsfree-finger-pinched-2 .handsfree-hide-when-finger-pinched-2 {
display: none;
}
body:not(.handsfree-finger-pinched-2) .handsfree-show-when-finger-pinched-2 {
display: none;
}
body.handsfree-finger-pinched-2 .handsfree-show-when-finger-pinched-2 {
display: block;
}
/* Ring Right */
body:not(.handsfree-finger-pinched-2) .handsfree-hide-when-finger-pinched-2 {
display: block;
}
body.handsfree-finger-pinched-2 .handsfree-hide-when-finger-pinched-2 {
display: none;
}
body:not(.handsfree-finger-pinched-2) .handsfree-show-when-finger-pinched-2 {
display: none;
}
body.handsfree-finger-pinched-2 .handsfree-show-when-finger-pinched-2 {
display: block;
}
/* Pinky Left */
body:not(.handsfree-finger-pinched-3) .handsfree-hide-when-finger-pinched-3 {
display: block;
}
body.handsfree-finger-pinched-3 .handsfree-hide-when-finger-pinched-3 {
display: none;
}
body:not(.handsfree-finger-pinched-3) .handsfree-show-when-finger-pinched-3 {
display: none;
}
body.handsfree-finger-pinched-3 .handsfree-show-when-finger-pinched-3 {
display: block;
}
/* Pinky Right */
body:not(.handsfree-finger-pinched-3) .handsfree-hide-when-finger-pinched-3 {
display: block;
}
body.handsfree-finger-pinched-3 .handsfree-hide-when-finger-pinched-3 {
display: none;
}
body:not(.handsfree-finger-pinched-3) .handsfree-show-when-finger-pinched-3 {
display: none;
}
body.handsfree-finger-pinched-3 .handsfree-show-when-finger-pinched-3 {
display: block;
}