隐藏和显示svg的最简单方法?

时间:2019-03-21 08:15:54

标签: javascript svg less angular7

我正在使用angular 7。我有2个svgs:一个是黑色的,当鼠标悬停时,我想在另一个上显示颜色。

这是我的测试代码段:

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.less']
})
export class AppComponent {
  title = 'menu-svg';
  svgCouleur="none";
  svgNb="block";
  //affiche le svg couleur et cache le noir et blanc
  cacheSvg(e){
    this.svgCouleur = "block";
    this.svgNb = "none";
  }
  //affiche le svg noir et blanc et on cache la couleur
  revientSvg(e){
    this.svgCouleur ="none";
    this.svgNb = "block";
  }
}
/*no at the moment*/
<svg (mouseover)="cacheSvg($event)" [style.display]="svgNb" width="100" height="100">
  <circle cx="50" cy="50" r="40" stroke="black" stroke-width="4" fill="gray" />
  Sorry, your browser does not support inline SVG.
</svg> 
<svg (mouseleave)="revientSvg($event)" [style.display]="svgCouleur" width="100" height="100">
  <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
  Sorry, your browser does not support inline SVG.
</svg> 


<svg (mouseover)="cacheSvg($event)" [style.display]="svgNb" width="100" height="100">
  <circle cx="50" cy="50" r="40" stroke="black" stroke-width="4" fill="gray" />
  Sorry, your browser does not support inline SVG.
</svg> 
<svg (mouseleave)="revientSvg($event)" [style.display]="svgCouleur" width="100" height="100">
  <circle cx="50" cy="50" r="40" stroke="red" stroke-width="4" fill="yellow" />
  Sorry, your browser does not support inline SVG.
</svg> 

该效果将应用于所有svg,而不是当前的svg。

2 个答案:

答案 0 :(得分:1)

您可以尝试给您的svg一个ID(或类),然后像这样设置其样式:

#test{
  opacity:0;
}
#test:hover{
  opacity:1;
}

该ID应该在您的svg中:

<svg id="test" .............. >
</svg>

我不确定这是否是您的真实意思,但这是一种简便的方法

答案 1 :(得分:0)

我建议您看一下ngx-svg,它可以创建容器并在这些容器中添加多个元素-在您的情况下是这样。它还具有其他元素,并且有一个文档,可让您了解您必须做的事情。