Sélecteur de chemin SVG en HTML utilisant React
P粉566048790
P粉566048790 2023-09-01 23:22:48
0
1
431

我正在创建一个绘画应用程序,用户可以在其中上传 SVG。填充不同的颜色,在 SVG 上绘制,然后将其擦除。 但不幸的是,我无法获取 SVG 的路径。 下面是 SVG 图像,如果我将鼠标悬停,我只想获取该悬停路径的路径并用所选颜色填充它。 我尝试了 Canvas 和 SVG 路径。但没有运气。 Canvas 有 beginPath 方法,我用它来绘制 SVG。

                

P粉566048790
P粉566048790

répondre à tous (1)
P粉276876663

J'ai créé une petite démo en utilisant votre SVG :

  • HTML : permet aux utilisateurs de sélectionner des couleurs à l'aide de.
  • CSS : dansbody中创建一个CSS 自定义属性来保存所选颜色:--svg-fill-color.
  • Inline JS : enregistrez la couleur sélectionnée dans--svg-fill-color.
  • JS : pour chaque SVGpath分配一个mousedown eventListener.
  • JS : En cliquant surpath(mousedown), attribuez la valeur depathmousedown)时,将--svg-fill-color的值赋给>使用函数setColor(..)填充路径à>remplissez-le à l'aide de la fonctionsetColor(..)La couleur duchemin.

Une démo assez simple que vous pouvez étendre à tout ce dont vous avez besoin.

Remarque: Les couleurs ne sont pas enregistrées lorsque la page est fermée, vous devez faire attention à : la réécriture du SVG, le stockage des valeurs dans le stockage local, etc.

Mise à jourdans le code après le commentaire "herrstrietzel".

// Javascript // Get reference to all 'path' const paths = document.querySelectorAll('svg path'); const setColor = (element) => { // Assign currently selected color in --svg-fill-color to 'fill' of clicked 'path' element.style.fill = getComputedStyle(document.body).getPropertyValue("--svg-fill-color"); }; // Assign event listener to all 'path' paths.forEach((path, index)=>{ // Executes 'setColor(..)' when path is clicked path.addEventListener("click", (event) => { setColor(event.target) }); });
/* CSS */ body { --svg-fill-color: black } /* default black */
                 
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!