.middle () { position: relative; vertical-align: middle; } .hidden { display: none; } html, body{ padding: 0px; margin: 0px; box-sizing: border-box; } body { display: flex; flex-flow: column; height: 100%; background: url('/customize/bg3.jpg') no-repeat center center; background-size: cover; background-position: center; } // created in the html #canvas-area { flex: 1; display: flex; } // created by fabricjs. styled so defaults don't break anything .canvas-container { margin: auto; background: white; & > canvas { border: 1px solid black; } } // contains user tools #controls { display: flex; align-items: center; justify-content: center; position: relative; border-top: 1px solid black; background: white; padding: 1em; & > * + * { margin: 0; margin-left: 1em; } #width, #opacity { .middle; } #clear, #delete, #toggleDraw { display: inline; vertical-align: middle; } .selected { display: flex; align-items: center; justify-content: center; z-index: 9001; width: 100px; height: 100px; } .range-group { display: flex; flex-direction: column; position: relative; input[type="range"] { background-color: inherit; } & > span { cursor: default; position: absolute; top: 0; right: 0; } } .range-group:first-of-type { margin-left: 2em; } .range-group:last-of-type { margin-right: 1em; } } /* Colors */ #colors { .middle; z-index: 100; background: white; display: flex; justify-content: space-between; padding: 1em; span.palette-color { height: 4vw; width: 4vw; display: block; margin: 5px; border: 1px solid black; vertical-align: top; border-radius: 50%; transition: transform 0.1s; &:hover { transform: scale(1.2); } } } // used in the toolbar if supported #color-picker { display: block; } // input[type=color] must exist in the dom to work correctly // styled so that they don't break layouts #pickers { visibility: hidden; position: absolute; width: 0; height: 0; z-index: -5; }