2015-08-21 14 views
0

基本上,有一個img和一個.svg圖像的src。我想要做的是慢慢地(.2s緩動)將它的顏色從黑色變爲白色。
由於它不是內聯<svg>,我不能簡單地在CSS中更改fill顏色。如何將PHP網絡「連接」到.svg圖像

我試圖將img src更改爲此圖像的白色副本,但這樣我就不會有過渡。

我可以使用交叉淡入淡出技術,但我想保持簡單並且沒有position: absolute

所以,我想出了一個解決方案。我改變的jQuery hover()功能的PHP變量的顏色,然後echo的.SVG圖像本身裏面,像這樣變量:fill=<?php echo "'$color'" ?>

下面的代碼:
的JavaScript/jQuery的(mainjs.php):

<?php 
    $color = ""; 
?> 

<script type="text/javascript"> 
$(function() { 


    $("#svg_img").hover(
     function() { 
      <?php $color = "#221e1f"; ?> 
     }, 
     function() { 
      <?php $color = "white"; ?> 
     } 
    ); 
}); 
</script> 

和HTML(如有必要):

<img id="svg_img" src="images/um.svg" style="height: 7vh; vertical-align: middle;" alt="Home" /> 

那麼我將如何去這樣做?如果不可能 - 或者你知道更好的方法 - 那麼,如果沒有交叉淡化技術,我將如何實現自己的目標?

+0

您需要了解_server-side_code和_client-side_code之間的區別。你不能那樣做。 – SLaks

+1

svg有多大?把它內聯,而不是在一個img標籤,然後你可以直接用JS操縱它 – rjdown

+0

也檢查了這一點http://stackoverflow.com/questions/138309/is-it-possible-to-manipulate-an-svg-document -embedded-in-html-doc-with-javasc – rjdown

回答

1

在懸停中,您必須更新填充屬性。您不需要懸停的PHP代碼。

提示: 你在這裏做什麼真的不是一個好主意。請找出ajax和MVC是什麼。你不能在JavaScript中編寫PHP。

+0

如果我的這個圖像是嵌入式的'',那麼這將工作,但因爲它只是一個'',所以這是行不通的。我試過了。也就是說,你確實給了我一個好主意。至於ajax和MVC,我可能會在稍後看到,但我必須儘快完成一些我正在開發的內容,所以我現在沒有時間去學習新東西。 –

+0

然後爲兩種顏色創建兩個不同的svg,並在懸停中將src屬性從一個改爲另一個。如果(src =='x'){src =='y'} ... 或者將兩個img放在頁面中並懸停在hide()和show()中。 –

+0

你甚至讀過我說過的嗎?放置2張圖像是交叉淡化。並且更改'src'不適用於CSS轉換。當然,我已經使用了那種麻煩的交叉淡入淡出技術,所以不需要努力。至少,我瞭解到我所要求的是不可能的。 –