Skip to content

Commit d9615ef

Browse files
authored
Update index.html
1 parent d02fc4a commit d9615ef

File tree

1 file changed

+43
-2
lines changed

1 file changed

+43
-2
lines changed

index.html

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,10 @@
5252
.screen{position:relative;outline:1px solid var(--line);background:#111;box-shadow:0 20px 60px rgba(13,18,28,.15);}
5353
.screen .blind{position:absolute;background:rgba(214,69,69,.16);border:1px dashed rgba(214,69,69,.6)}
5454
.screen .safe{position:absolute;background:rgba(20,164,77,.08);border:1px solid rgba(20,164,77,.6);outline:2px solid rgba(20,164,77,.25);}
55-
.screen .inner{position:absolute;background:rgba(34,102,238,.06);border:1px solid rgba(34,102,238,.55);outline:2px solid rgba(34,102,238,.22)}
55+
.screen .inner{position:absolute;background:rgba(34,102,238,.06);border:1px solid rgba(34,102,238,.55);outline:2px solid rgba(34,102,238,.22);display:flex;align-items:center;justify-content:center;text-align:center}
56+
.screen .inner-label{pointer-events:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:8px 12px;border-radius:10px;background:rgba(255,255,255,.92);box-shadow:0 4px 18px rgba(20,36,66,.14);color:rgba(34,102,238,.95);font-weight:600;line-height:1.2}
57+
.screen .inner-label__px{letter-spacing:.01em}
58+
.screen .inner-label__percent{font-size:.85em;font-weight:500;color:rgba(34,102,238,.9)}
5659

5760
.rotate-btn{position:absolute;top:16px;right:16px;width:42px;height:42px;border-radius:50%;border:0;background:rgba(14,17,22,.78);color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;cursor:pointer;box-shadow:0 8px 20px rgba(13,18,28,.16);transition:background .2s ease,transform .2s ease}
5861
.rotate-btn:hover{background:rgba(34,102,238,.88)}
@@ -470,12 +473,50 @@ <h2>Популярні пресети (таблиця)</h2>
470473
height:Math.round((safe.B - safe.T) * scale) + 'px'
471474
});
472475

473-
createLayer('inner', {
476+
const innerLayer = createLayer('inner', {
474477
left:Math.round(inner.L * scale) + 'px',
475478
top:Math.round(inner.T * scale) + 'px',
476479
width:Math.round((inner.R - inner.L) * scale) + 'px',
477480
height:Math.round((inner.B - inner.T) * scale) + 'px'
478481
});
482+
483+
this.renderInnerLabel(innerLayer, ctx, scale);
484+
}
485+
486+
renderInnerLabel(layer, ctx, scale){
487+
if(!layer){
488+
return;
489+
}
490+
491+
const innerWidthPx = Math.max(0, Math.round(ctx.inner.R - ctx.inner.L));
492+
const innerHeightPx = Math.max(0, Math.round(ctx.inner.B - ctx.inner.T));
493+
if(innerWidthPx === 0 || innerHeightPx === 0){
494+
return;
495+
}
496+
497+
const label = document.createElement('div');
498+
label.className = 'inner-label';
499+
label.style.fontSize = Math.max(10, Math.min(20, Math.round(14 * scale))) + 'px';
500+
501+
const pxLine = document.createElement('div');
502+
pxLine.className = 'inner-label__px';
503+
pxLine.textContent = `${innerWidthPx} × ${innerHeightPx} px`;
504+
505+
const percentLine = document.createElement('div');
506+
percentLine.className = 'inner-label__percent';
507+
const widthPercent = this.formatPercent(ctx.W ? (innerWidthPx / ctx.W) * 100 : 0);
508+
const heightPercent = this.formatPercent(ctx.H ? (innerHeightPx / ctx.H) * 100 : 0);
509+
percentLine.textContent = `${widthPercent} × ${heightPercent}`;
510+
511+
label.append(pxLine, percentLine);
512+
layer.appendChild(label);
513+
}
514+
515+
formatPercent(value){
516+
if(!Number.isFinite(value)){
517+
return '0.0%';
518+
}
519+
return `${value.toFixed(1)}%`;
479520
}
480521
}
481522

0 commit comments

Comments
 (0)