diff --git a/package.json b/package.json index a5e334e..f6aaab6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "material-editor", "private": true, - "version": "1.0.23", + "version": "1.0.24", "type": "module", "scripts": { "dev": "vite", diff --git a/src/components/MaterialAdjuster.vue b/src/components/MaterialAdjuster.vue index e8c89da..66c5eea 100644 --- a/src/components/MaterialAdjuster.vue +++ b/src/components/MaterialAdjuster.vue @@ -16,7 +16,8 @@ - + @@ -38,27 +39,31 @@

材质调节

- + - {{ Material.matalness }} + - + - {{ Material.roughness }} + - + - {{ Material.bumpScale }} + - + - {{ Material.specular }} + @@ -280,6 +285,17 @@ async function HandleGenerateLogo() { DownloadFile("logo.png", blob); } +function ClampNumericValue(e: InputEvent) { + const elm = e.target as HTMLInputElement; + const min = +elm.min; + const max = +elm.max; + + if (isNaN(min) || isNaN(max)) return; + + if (elm.valueAsNumber < min) elm.valueAsNumber = min; + if (elm.valueAsNumber > max) elm.valueAsNumber = max; +} + defineExpose({ Upload: HandleUpload, Cancel: HandleCancel @@ -322,26 +338,6 @@ select margin: 0.5rem 0; } -input[type="range"] -{ - width: 220px; - margin: 0.5rem 0; -} - -input[type="text"] -{ - width: 220px; - padding: 4px; - margin: 0.5rem 0; -} - -input[type="number"] -{ - width: 220px; - padding: 4px; - margin: 0.5rem 0; -} - .btn-success { background-color: #4caf50; @@ -386,4 +382,40 @@ input[type="number"] { background-color: #0a7ed2; } + +.input-range +{ + max-width: 300px; + + input[type="range"] + { + flex: 14; + margin: 0.5rem 0; + } + + input[type="text"] + { + flex: 2; + padding: 4px; + margin: 0.5rem 0; + } + + input[type="number"] + { + flex: 2; + min-width: 0; + padding: 4px; + margin: 0.5rem 0; + appearance: textfield; + -moz-appearance: textfield; + margin: 0; + } + + input::-webkit-outer-spin-button, + input::-webkit-inner-spin-button + { + -webkit-appearance: none; + margin: 0; + } +} \ No newline at end of file