Re: Standard Hover Effect - Thanks Eric

"jamesd" <[email protected]>
Newsgroups gmane.text.xml.svg.devel
Message-ID <[email protected]>
Excellant response!! Thank you Erik. As I said I just want to use SVG for design, couldn't care less about this.setAttribute or evt.target.setAttribute. I just want to add a universal hover effect and move on. Again, thanks.

With that said, one down many to go.

James


--- In [email protected], "Erik Dahlstrom" <ed@...> wrote:
>
> Hi James,
> 
> I'll try to explain it again then, no problems. If you need the DOM nodes  
> for custom styling and content modification, basically the power of making  
> each instance look different and actually be independent objects, then  
> XSLT is one option, that or just copy-pasting the markup you need.
> 
> Your example could be rewritten like this (note the slight difference in  
> how the fill colors are set):
> 
> <svg xmlns="http://www.w3.org/2000/svg"  
> xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1920 1080"  
> preserveAspectRatio="none" xml:space="preserve">
> <defs>
>    <path id="go_fill"  
> d="M50.06,238.925v-55.168H7.2V73.424h42.86V18.259l103.029,110.33L50.06,238.925z"/>
> </defs>
> 
> <g id="next" transform="matrix(2 0 0 2 800 250)" cursor="pointer">
>    <use xlink:href="#go_fill" fill="#B8CBFF"
>     onmouseover="this.setAttribute('fill', '#3DFF3D');"
>     onmouseout="this.setAttribute('fill','#B8CBFF');"
>     onclick="this.setAttribute('fill', '#B8CBFF');"/>
> </g>
> </svg>
> 
> This will set the fill on the <use> element instead of trying to set the  
> fill on the element the <use> points to, if you wanted you could also do  
> something like 'onmouseover="this.currentTarget.setAttribute(...)"'. Both  
> ways should work just fine in all browsers.
> 
> Another alternative is to set the colors with CSS, like this:
> 
> <svg xmlns="http://www.w3.org/2000/svg"  
> xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1920 1080"  
> preserveAspectRatio="none" xml:space="preserve">
> <defs>
>    <path id="go_fill"  
> d="M50.06,238.925v-55.168H7.2V73.424h42.86V18.259l103.029,110.33L50.06,238.925z"/>
>    <style>
> 	use:hover { fill: #3DFF3D; }
> 	use:active { fill: purple; } /* picked another color to show that clicked  
> state is different */
>    </style>
> </defs>
> 
> <g id="next" transform="matrix(2 0 0 2 800 250)" cursor="pointer">
>    <use xlink:href="#go_fill" fill="#B8CBFF" />
> </g>
> </svg>
> 
> Again, that should work fine everywhere.
> 
> Firefox is incorrect in letting your original example work, to understand  
> why you can inspect the value of 'evt.target' in the onmouseover attribute  
> for example. Here's a simple example, click the arrow and compare the  
> result in the various browsers:
> 
> <svg xmlns="http://www.w3.org/2000/svg"  
> xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1920 1080"  
> preserveAspectRatio="none" xml:space="preserve">
> <defs>
>    <path id="go_fill"  
> d="M50.06,238.925v-55.168H7.2V73.424h42.86V18.259l103.029,110.33L50.06,238.925z"/>
>    <style>
> 	use:hover { fill: #3DFF3D; }
> 	use:active { fill: purple; }
>    </style>
> </defs>
> 
> <g id="next" transform="matrix(2 0 0 2 800 250)" cursor="pointer">
>    <use xlink:href="#go_fill" fill="#B8CBFF" onclick="alert('evt.target  
> (the element that was the original target of the event): ' + evt.target +  
> '\nevt.currentTarget (the element currently handling the event, since it  
> may have bubbled): ' + evt.currentTarget)"/>
> </g>
> </svg>
> 
> Hope this helps
> /Erik
> 



------------------------------------

-----
To unsubscribe send a message to: [email protected]
-or-
visit http://groups.yahoo.com/group/svg-developers and click "edit my membership"
----Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/svg-developers/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/svg-developers/join
    (Yahoo! ID required)

<*> To change settings via email:
    [email protected] 
    [email protected]

<*> To unsubscribe from this group, send an email to:
    [email protected]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.