Files
css-matrix-calc/index.html
T

98 lines
4.0 KiB
HTML

<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>CSS Matrix3D Perspective Calculator</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<header>
<div class="header-left">
<h1>CSS Matrix3D Perspective Calculator</h1>
<p>Задайте 4 точки на поле и размер виджета — получите CSS matrix3d() для перспективного отображения</p>
</div>
<span class="mode-hint" id="modeHint">Перетаскивайте углы на поле</span>
<div class="mode-toggle">
<button class="mode-btn active" id="btnEdit">Edit</button>
<button class="mode-btn" id="btnPreview">Preview</button>
</div>
</header>
<main>
<div class="left-col">
<div class="panel">
<svg id="svg" viewBox="0 0 1920 1080" preserveAspectRatio="xMidYMid meet"></svg>
</div>
<div class="panel">
<div id="fieldContainer">
<div id="field">
<div id="widget">
<span>WIDGET</span>
</div>
</div>
</div>
</div>
</div>
<div class="right-col">
<div class="panel">
<div class="panel-header">
<h2>Основное поле</h2>
<button class="btn btn-edit-field" id="btnEditField">Редактировать</button>
</div>
<div class="field-size-stack">
<div class="chain-link" id="chainLink" title="Keep aspect ratio">
<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path class="chain-locked" d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" />
<path class="chain-locked" d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" />
<path class="chain-unlocked" d="M13.5 10.5l3-3" style="display:none" />
<path class="chain-unlocked" d="M10.5 13.5l-3 3" style="display:none" />
<path class="chain-unlocked" d="M7.5 7.5l9 9" style="display:none" />
</svg>
</div>
<div class="field-stack-inputs">
<label><span>W</span><input id="inpFieldW" type="number" value="1920" min="1" disabled /></label>
<label><span>H</span><input id="inpFieldH" type="number" value="1080" min="1" disabled /></label>
</div>
</div>
<div class="field-edit-options" id="fieldEditOptions">
<label class="checkbox-label">
<input type="checkbox" id="chkRescaleCoords" checked />
<span>Пересчитать координаты</span>
</label>
<div class="field-save-row">
<button class="btn btn-cancel-field" id="btnCancelField">Отменить</button>
<button class="btn btn-save-field" id="btnSaveField">Сохранить</button>
</div>
</div>
</div>
<div class="panel">
<h2>Виджет</h2>
<div class="field-row">
<label><span>W</span><input id="inpWidgetW" type="number" value="400" min="1" /></label>
<label><span>H</span><input id="inpWidgetH" type="number" value="300" min="1" /></label>
</div>
</div>
<div class="panel">
<h2>Углы четырёхугольника</h2>
<div class="corner-inputs" id="cornerInputs"></div>
</div>
<div class="panel">
<h2>CSS Output</h2>
<textarea id="cssOutput" readonly></textarea>
<div class="btn-row">
<button class="btn btn-copy" id="copyBtn">Копировать CSS</button>
<button class="btn btn-reset" id="resetBtn">Сброс</button>
</div>
</div>
</div>
</main>
<script src="script.js"></script>
</body>
</html>