修复取色框点击位置错乱问题

This commit is contained in:
KeiferJu 2020-06-11 11:29:19 +08:00
parent 6bbebb0160
commit cdefea265c
2 changed files with 17 additions and 9 deletions

View File

@ -2,7 +2,7 @@
"name": "svelma-pro", "name": "svelma-pro",
"svelte": "src/index.js", "svelte": "src/index.js",
"description": "Based on svelma project extension and modification", "description": "Based on svelma project extension and modification",
"version": "1.2.1", "version": "1.2.2",
"author": "KeiferJu", "author": "KeiferJu",
"license": "MIT", "license": "MIT",
"keywords": [ "keywords": [

View File

@ -19,13 +19,14 @@
let focusStatus = false let focusStatus = false
function openChrome(event) { function openChrome(event) {
focusStatus = true focusStatus = true
panelX = event.clientX - event.offsetX
panelY = event.clientY
transformX = event.target.offsetWidth + 5
console.log(event)
if (!active) { if (!active) {
panelX = event.clientX - event.offsetX setTimeout(() => {
panelY = event.clientY
transformX = event.target.offsetWidth + 5
setTimeout(()=>{
active = true active = true
},100) }, 100)
} }
} }
@ -65,16 +66,23 @@
<svelte:window on:click={closeChrome} /> <svelte:window on:click={closeChrome} />
{#if mode === 1} {#if mode === 1}
<div class="smx-color-picker" style="width: {width}"> <div class="smx-color-picker" style="width: {width}">
<input type="text" class="input" on:focus={openChrome} on:blur={()=>focusStatus = false} value={color} style="background: {color};" readonly /> <input
type="text"
class="input"
on:click={openChrome}
on:blur={() => (focusStatus = false)}
value={color}
style="background: {color};"
readonly />
{#if active} {#if active}
<div <div
class="smx-color-panel" class="smx-color-panel"
on:click|stopPropagation on:click|stopPropagation
style="top: {panelY}px;left:{panelX}px;transform: translate({transformX}px, -50%)"> style="top: {panelY}px;left:{panelX}px;transform: translate({transformX}px, -50%)">
<Chrome startColor={color} on:input={handleInput} {fieldsIndex} on:mouseupEvent={mouseupEvent}/> <Chrome startColor={color} on:input={handleInput} {fieldsIndex} on:mouseupEvent={mouseupEvent} />
</div> </div>
{/if} {/if}
</div> </div>
{:else} {:else}
<Chrome startColor={color} on:input={handleInput} {fieldsIndex} on:mouseupEvent={mouseupEvent}/> <Chrome startColor={color} on:input={handleInput} {fieldsIndex} on:mouseupEvent={mouseupEvent} />
{/if} {/if}