Safari won't rotate an SVG path but chrome and firefox does? - svg
I'm running into an extremely odd issue. I'm trying to animate an SVG path rotation based on an image hover. It seems to not add the class with the transform when you hover over the image. When I manually add it in the HTML it does work but I don't get why it won't work with just a hover function. I have added all the prefixes too. I made a codepen with an example SVG and image to hover. Please check this in safari and chrome.
Codepen link
HTML
<div class="wrapper-logo">
<svg class="App-logo" viewBox="0 0 375 84" fill="#DB3232" xmlns="http://www.w3.org/2000/svg">
<path class="LETTER-P" d="M39.3,6.1c9.59-.72,18.89,2.31,26.17,8.58,14.99,12.98,16.72,35.69,3.68,50.69-12.98,15.07-35.76,16.8-50.75,3.82-2.52-2.24-4.76-4.83-6.63-7.64v14.13c0,1.59-1.3,2.88-2.88,2.88s-2.88-1.3-2.88-2.88V41.94c0-8.58,3.1-16.94,8.72-23.43,6.27-7.28,14.99-11.68,24.58-12.4Z" />
</svg>
</div>
<svg class="App-pill" viewBox="0 0 375 84" fill="#DB3232" xmlns="http://www.w3.org/2000/svg"> <defs>
<mask id="mask-p">
<path class="LETTER-P" d="M39.3,6.1c9.59-.72,18.89,2.31,26.17,8.58,14.99,12.98,16.72,35.69,3.68,50.69-12.98,15.07-35.76,16.8-50.75,3.82-2.52-2.24-4.76-4.83-6.63-7.64v14.13c0,1.59-1.3,2.88-2.88,2.88s-2.88-1.3-2.88-2.88V41.94c0-8.58,3.1-16.94,8.72-23.43,6.27-7.28,14.99-11.68,24.58-12.4Z" fill="white"/>
<path class='pill-1' d="M47.3377 18.8021L18.8226 47.1101C13.7279 52.1678 13.7293 60.3942 18.8258 65.3743C23.9223 70.4298 32.2122 70.4281 37.2309 65.3704L65.746 37.0624C68.2554 34.5713 69.5477 31.2502 69.5471 27.9295C69.5465 24.6087 68.253 21.2882 65.7428 18.7982C60.7223 13.7426 52.4325 13.7444 47.3377 18.8021Z" fill="black"/>
</mask>
</defs>
</svg>
<footer>
<img src="https://via.placeholder.com/150
C/O https://placeholder.com/" class="shoes small" alt="browns" onmouseover="rotateBrowns(this)" />
</footer>
CSS
.App-pill {
display: block;
width: 0;
height: 0;
}
.App-logo {
min-width: 50%;
pointer-events: none;
}
/* LETTER */
.LETTER-P {
-webkit-mask: url(#mask-p);
mask: url(#mask-p);
}
.pill-1 {
-webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg);
transform: rotate(0deg);
-webkit-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;
-webkit-transform-origin: 42px 41px;
-ms-transform-origin: 42px 41px;
transform-origin: 42px 41px;
}
.horizontal {
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
}
JS
let shoesarray = document.querySelectorAll('.shoes')
let path1 = document.querySelector('.pill-1')
let path2 = document.querySelector('.pill-1')
let path3 = document.querySelector('.pill-1')
let path4 = document.querySelector('.pill-1')
function rotateBrowns() {
console.log('e')
path1.classList.add('horizontal')
path2.classList.add('horizontal')
path3.classList.add('horizontal')
path4.classList.add('horizontal')
}
function revertBrowns() {
console.log('e')
path1.classList.remove('horizontal')
path2.classList.remove('horizontal')
path3.classList.remove('horizontal')
path4.classList.remove('horizontal')
}
Related
Transform translate on SVG does not change
I have an svg with two elements, a headline and a subhead. The subhead is nested below the headline. I need to reposition the subhead a small amount right and down from the head in a media query. I’m using the code shown below, but the transform doesn’t work. The transform is done with an inline style for a media query. <div class="logo"> <style> #media(min-width: 0px){ #subHead{ transform: translate(70px, 70px); } } #media(min-width: 1000px){ #subHead{ transform: translate(0px,0px); } } </style> <svg viewBox="0 0 240 220" xmlns="http://www.w3.org/2000/svg"> <defs> <linearGradient id="MyGradient"> <stop offset="5%" stop-color="rgb(71,164,71)"/> <stop offset="95%" stop-color="white"/> </linearGradient> </defs> <text x="0" y="25" class="logo_class three">Abcdefg</text> <text id="subHead" fill="url(#MyGradient)" x="24" y="33" width="33" height="24" class="tagline_class fadeIn animate_behind">subhead subhead subhd</text> </svg> </div> I know that svg transforms are tricky, but this seems straightforward and I don’t know why it shouldn’t work. Thanks a lot for any ideas. EDIT: as written, the translate happens before the fadeIn and the transform origin is greatly exaggerated. I applied a media query to the fadeIn class in an effort to get the transform to reposition the element, not the origin, but I still get the same behavior. Here are the css classes: .tagline_class { font-family: robotoregular; font-size: 7px; fill="url(#MyGradient)" x="10" y="10" width="100" height="100"/>; } #media (min-width: 320px) { .tagline_class { font-size: 9px; } } #media (min-width: 1080px) { .tagline_class { font-size: 7px; } } .fadeIn { -webkit-animation-name: fadeIn; animation-name: fadeIn; transform: translate(0px, 0px); } #media (min-width: 320px) { .fadeIn { transform: translate(470px, 470px); } #media (min-width: 1080px) { .fadeIn { transform: translate(0px, 0px); } padding-top:0% } } .animate_behind { -webkit-animation-delay: 0.8s; -moz-animation-delay: 0.8s; animation-delay: 0.8s; -webkit-animation-duration: 0.7s; animation-duration: 0.7s; -webkit-animation-fill-mode: both; animation-fill-mode: both; }
You have two transforms competing. One that is applied via #subHead. And another via the fadeIn class. One will overwrite the other. If you need both to apply, then apply one to the element, and one to a parent <g> element. For example: <g id="subHead"> <text fill="url(#MyGradient)" x="24" y="33" width="33" height="24" class="tagline_class fadeIn animate_behind">subhead subhead subhd</text> </g>
SVG Animated Graph Arrow
This is my first time using SVG and I want to know if it is possible to create an animated line graph with an arrow. I have found multiple examples of animated line graphs without arrows, non-animated line graphs with arrows, and animated straight lines with arrows, but not exactly what I am looking for. I have attached some codepen examples I've been playing around with below. Does anyone know if this is possible/have a solution? It would be greatly appreciated! Animated line missing arrow (needs arrow): http://codepen.io/alexandraleigh/pen/jVaObd # HTML <div class="graph__wrapper"> <svg width="315px" height="107px" viewBox="0 0 315 107" version="1.1"> <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> <path d="M2.10546875,95.75 L40.5546875,68.3476562 L55.2109375,81.1796875 L65.2148437,76.3945312 L96.1835937,86.8320312 L131.023438,19.9414062 L142.15625,23.7226562 L183.605469,2.1953125 L211.007812,22.3320312 L234.320312,71.5664062 L234.667969,83.0039062 L244.019531,83.0039062 L247.105469,88.8320312 L312.695312,104.839844" id="Path-1" stroke="white" stroke-width="4" sketch:type="MSShapeGroup" class="path"></path> </g> </svg> </div> # CSS(Less) #import "lesshat"; #darkgrey: #303030; *{ box-sizing: border-box; } body{ background: #darkgrey; } .graph__wrapper{ width: 400px; margin: 30px auto; position: relative; svg{ position: absolute; margin: 36px 0px 0px 15px; } } .path { stroke-dasharray: 1000; stroke-dashoffset: 1000; animation: dash 3s ease-in forwards; animation-iteration-count: 1; animation-delay: 1s; } #keyframes dash { to { stroke-dashoffset: 0; } } .description{ font-family: "Roboto"; color:lighten(#darkgrey, 50%); text-align: center; margin: 40px 0px; } Animated straight line with arrow (needs to stop at multiple points on path): http://codepen.io/alexandraleigh/pen/yVPYrY I tried adding the path descriptions from #1 to #2 and it has the desired final graph, just no animations: http://codepen.io/alexandraleigh/pen/pNdgWR I also tried adding the arrow marker from #2 to #1, but the arrow doesn't animate: http://codepen.io/alexandraleigh/pen/aBVdVY I'm also open to using a plugin such as http://snapsvg.io/, but haven't seen any working examples that help my situation.
you can do this with offset-motion(old syntax: motion-path). Be aware that this is a heighly experimental feature. it currently only works in Chrome. More to the point i use the "old" syntax here as that is what currently works in chrome, but it will soon switch to the new systax... * { box-sizing: border-box; } body { background: #303030; } .graph__wrapper { width: 400px; margin: 30px auto; position: relative; svg { position: absolute; margin: 36px 0px 0px 15px; } } .path { stroke-dasharray: 428; stroke-dashoffset: 428; animation: dash 3s ease-in forwards; animation-iteration-count: 1; animation-delay: 1s; } #keyframes dash { to { stroke-dashoffset: 0; } } #keyframes pm { from { motion-offset: 0%; } to { motion-offset: 100% } } #arrow { animation: pm 3s ease-in forwards; animation-iteration-count: 1; animation-delay: 1s; motion-path: path('M2.10546875,95.75 L40.5546875,68.3476562 L55.2109375,81.1796875 L65.2148437,76.3945312 L96.1835937,86.8320312 L131.023438,19.9414062 L142.15625,23.7226562 L183.605469,2.1953125 L211.007812,22.3320312 L234.320312,71.5664062 L234.667969,83.0039062 L244.019531,83.0039062 L247.105469,88.8320312 L312.695312,104.839844'); motion-rotation: auto; motion-anchor: center; } .description { font-family: "Roboto"; color: lighten(#darkgrey, 50%); text-align: center; margin: 40px 0px; } <div class="graph__wrapper"> <svg width="315px" height="107px" viewBox="0 0 315 107" version="1.1" style="overflow:visible"> <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> <path d="M2.10546875,95.75 L40.5546875,68.3476562 L55.2109375,81.1796875 L65.2148437,76.3945312 L96.1835937,86.8320312 L131.023438,19.9414062 L142.15625,23.7226562 L183.605469,2.1953125 L211.007812,22.3320312 L234.320312,71.5664062 L234.667969,83.0039062 L244.019531,83.0039062 L247.105469,88.8320312 L312.695312,104.839844" id="Path-1" stroke="white" stroke-width="4" sketch:type="MSShapeGroup" class="path"></path> <polyline id="arrow" points="0,-5 10,0 0,5 1,0" fill="white" /> </g> </svg> </div> you can also do this with animateMotion, but svg animations are soon to be depricted. You will have to rewrite your code in any way sooner or later :-( * { box-sizing: border-box; } body { background: #303030; } .graph__wrapper { width: 400px; margin: 30px auto; position: relative; svg { position: absolute; margin: 36px 0px 0px 15px; } } .path { stroke-dasharray: 428; stroke-dashoffset: 428; animation: dash 3s linear forwards; animation-iteration-count: 1; animation-delay: 1s; } #keyframes dash { to { stroke-dashoffset: 0; } } .description { font-family: "Roboto"; color: lighten(#darkgrey, 50%); text-align: center; margin: 40px 0px; } <div class="graph__wrapper"> <svg width="315px" height="107px" viewBox="0 0 315 107" version="1.1" style="overflow:visible"> <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> <path d="M2.10546875,95.75 L40.5546875,68.3476562 L55.2109375,81.1796875 L65.2148437,76.3945312 L96.1835937,86.8320312 L131.023438,19.9414062 L142.15625,23.7226562 L183.605469,2.1953125 L211.007812,22.3320312 L234.320312,71.5664062 L234.667969,83.0039062 L244.019531,83.0039062 L247.105469,88.8320312 L312.695312,104.839844" id="Path-1" stroke="white" stroke-width="4" sketch:type="MSShapeGroup" class="path"></path> <polyline id="arrow" points="0,-5 10,0 0,5 1,0" fill="white"> <animateMotion rotate="auto" begin="1s" dur="3s" repeatCount="1" fill="freeze"> <mpath xlink:href="#Path-1" /> </animateMotion> </polyline> </g> </svg> </div>
SVG Responsive Text
I have an SVG within a web page, it consists of images + text <object data="/infographic/timeline.svg" type="image/svg+xml"> <img src="/infographic/timeline.svg" alt="Timeline"> </object> All the images are responsive, but the text isn't, so the text becomes really, REALLY small. snippet of SVG (its massive) <defs> <style> .cls-1 { font-size: 60.014px; } .cls-1, .cls-10 { opacity: 0.69; } .cls-1, .cls-10, .cls-4, .cls-5, .cls-7, .cls-8, .cls-9 { fill: #ffffff; } .cls-1, .cls-10, .cls-3, .cls-4, .cls-5, .cls-6, .cls-7, .cls-9 { text-anchor: middle; } .cls-1, .cls-3, .cls-6 { font-family: "Roboto"; } .cls-2 { font-size: 32.014px; } .cls-3 { font-size: 14.089px; } .cls-3, .cls-6 { fill: #db7426; } .cls-4, .cls-6 { font-size: 32px!important; } .cls-10, .cls-4, .cls-5, .cls-7, .cls-8, .cls-9 { font-family: Roboto; } .cls-5 { font-size: 24px; } .cls-5, .cls-8, .cls-9 { font-weight: 400; } .cls-6 { font-weight: 600; } .cls-10, .cls-7 { font-size: 18.75px; font-weight: 300; } .cls-7 { opacity: 0.4; } .cls-8, .cls-9 { font-size: 22px; } </style> </defs> <text id="Who_are_you_what_do_you_do_what_s_your_why_What_s_been_keepi" data-name="Who are you, what do you do, what’s your why? What’s been keepi" class="cls-8" x="397.706" y="535.325">Who are you, what do you do, what’s your why?<tspan x="397.706" dy="26.4">What’s been keeping you lying awake at night. </tspan></text> Is there anyway I can get the text size to increase as the SVG/screen width gets smaller? Any help would be greatly appreciated.
It's not possible with pure SVG (at least not yet). The only solution would be to either: inline the SVG and manipulate the size of the text with javascript. inline the SVG and control the size of the text with media queries (see below). Add CSS to the SVG and use media queries there (see below). use media queries to switch SVGs when the page gets small Example of option 2: Using media queries with inlined SVGs text { font-size: 10px; } #media (max-width: 400px) { text { font-size: 20px; } } <svg viewBox="0 0 100 100" width="100%" height="100%"> <circle cx="50" cy="50" r="50" fill="orange"/> <text x="50" y="60" text-anchor="middle">Testing</text> </svg> Example of option 3: Using media queries in CSS in the SVGs <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100%" height="100%"> <style> text { font-size: 10px; } #media (max-width: 400px) { text { font-size: 20px; } } </style> <circle cx="50" cy="50" r="50" fill="orange"/> <text x="50" y="60" text-anchor="middle">Testing</text> </svg>
This is possible using the foreignObject svg element in a html context and some adjustment of the viewBow. On this demos, the text stay selectable: .demo { overflow: auto; resize: both; border:1px black solid; width: 230px; height: 130px } .svgtext { font-size: 28rem; height:100%; width:100% } <div class="demo"> <svg x="0" y="30" viewBox="0 0 100 100" width="100%" height="100%"> <foreignObject x="12" y="23" height="100%" width="100%"> <div class"svgtext"> Hello world! </div> </foreignObject> </svg> </div> Use preserveAspectRatio to control the resizing behavior: .demo { overflow: auto; resize: both; border:1px black solid; width: 230px; height: 130px } .svgtext { font-size: 28rem; height:100%; width:100% } <div class="demo"> <svg preserveAspectRatio="none" x="0" y="30" viewBox="0 0 100 100" width="100%" height="100%"> <foreignObject x="12" y="23" height="100%" width="100%"> <div class"svgtext"> Hello world! </div> </foreignObject> </svg> </div>
Animate SVG Hamburger menu icon on click and keep it in :active state
I have a SVG hamburger menu icon that is animated when clicked. The goal is to transform it in to a "close" button when you activate the side-push menu. I need some help achieving that: http://jsfiddle.net/a6ysa9zk/ HTML: <div class="toggle-menu menu-right push-body"> <svg class="inline-svg" width="42px" height="42px" viewBox="0 0 42 42" enable-background="new 0 0 32 22.5" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> <!-- Generator: Sketch 3.0.4 (8054) - http://www.bohemiancoding.com/sketch --> <title>Group</title> <desc>Created with Sketch.</desc> <defs></defs> <g class="svg-menu-toggle" sketch:type="MSLayerGroup"> <circle class="round" fill="#3B3B41" sketch:type="MSShapeGroup" cx="21" cy="21" r="21"></circle> <rect class="bar" fill="#F2F2F2" sketch:type="MSShapeGroup" x="12" y="26" width="18" height="4"></rect> <rect class="bar" fill="#F2F2F2" sketch:type="MSShapeGroup" x="12" y="19" width="18" height="4"></rect> <rect class="bar" fill="#F2F2F2" sketch:type="MSShapeGroup" x="12" y="12" width="18" height="4"></rect> </g> </svg> </div> CSS: .svg-menu-toggle { fill: #fff; pointer-events: all; cursor: pointer; } .svg-menu-toggle .round { transition: fill .4s ease-in-out; } .svg-menu-toggle .bar { -webkit-transform: rotate(0) translateY(0) translateX(0); transform: rotate(0) translateY(0) translateX(0); opacity: 1; -webkit-transform-origin: 20px 10px; transform-origin: 20px 10px; -webkit-transition: -webkit-transform 0.4s ease-in-out, opacity 0.2s ease-in-out, fill .4s ease-in-out; transition: transform 0.4s ease-in-out, opacity 0.2s ease-in-out, fill .4s ease-in-out; } .svg-menu-toggle .bar:nth-of-type(1) { -webkit-transform-origin: 20px 10px; transform-origin: 20px 10px; } .svg-menu-toggle .bar:nth-of-type(3) { -webkit-transform-origin: 20px 20px; transform-origin: 20px 20px; } .svg-menu-toggle:active .bar:nth-of-type(1) { -webkit-transform: rotate(-45deg) translateY(-10px) translateX(-8px); transform: rotate(-45deg) translateY(-10px) translateX(-8px); fill: #3B3B41; } .svg-menu-toggle:active .bar:nth-of-type(2) { opacity: 0; } .svg-menu-toggle:active .bar:nth-of-type(3) { -webkit-transform: rotate(45deg) translateY(6px) translateX(0px); transform: rotate(45deg) translateY(6px) translateX(0px); fill: #3B3B41; } .svg-menu-toggle:active .round { fill: #F2F2F2; } Javascript for menu toggle: jQuery(document).ready(function ($) { $('.toggle-menu').jPushMenu(); });
Instead of using the :active pseudo-element, its easier to add a class to the group (.svg-menu-toggle). Unfortunately it isn't possible to use toggleClass from jQuery. // CSS .svg-menu-toggle:active become .svg-menu-toggle.active // JS $('.toggle-menu').on('click', function(e) { var $toggle = $(this).find('.svg-menu-toggle'); // toggleClass with addClass & removeClass });
SVG not working in Chrome
This works in Firefox but not Chrome. Basically the animation works correctly in Firefox with the lightbulb glowing and the leaf growing but for some reason cannot get it to work in Chrome. Thanks for the help here. jsfiddle here, http://jsfiddle.net/EfLtD/1/ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 250 250" enable-background="new 0 0 250 250" xml:space="preserve"> <g id="light-bulb-6-icon_1_"> <path fill="#FFFFFF" d="M-314.3,152.1c-2.1,0-2.8-0.6-7.4-5c-0.6-0.6-1.4-1.3-2.2-2h25.6c-0.9,0.8-1.7,1.6-2.4,2.2 c-4.6,4.3-5.3,4.8-7.4,4.8H-314.3z M-326.6,137.7c-1.7,0-3.1-1.4-3.1-3.1s1.4-3.1,3.1-3.1h31.2c1.7,0,3.1,1.4,3.1,3.1 c0,1.7-1.4,3.1-3.1,3.1H-326.6z M-327.4,123.9c-1.7,0-3.1-1.4-3.1-3.1c0-1.7,1.4-3.1,3.1-3.1h32.7c0.9,0,1.7,0.4,2.3,1 c0.5,0.6,0.8,1.3,0.8,2.1c0,1.8-1.4,3.1-3.1,3.1L-327.4,123.9L-327.4,123.9z M-298,109.7c0.3-13.3,6.4-23.6,12.4-33.5 c6-10,11.6-19.4,11.6-31.5c0-16.9-11.6-35.1-37.1-35.1c-25.5,0-37,18.2-37,35.1c0,12.1,5.6,21.4,11.5,31.3 c5.9,9.9,12,20.1,12.6,33.7h-9.1c-0.3-10.3-5.6-19.1-11.2-28.5c-6.4-10.8-13-21.9-13-36.5c0-13.7,5-25.2,14.4-33.2 c8.4-7.2,19.7-11.1,31.9-11.1c12.1,0,23.4,3.9,31.8,11.1c9.4,8,14.4,19.5,14.4,33.2c0,14.6-6.6,25.7-13,36.5 c-5.6,9.4-10.8,18.2-11.2,28.5L-298,109.7L-298,109.7z M-312.8,109.6c-3.3-14.5-1.4-40.1,6.7-54.6l2.4-4.3l-3.9,3.1 c-5.2,4-9.9,14.2-11.6,21.9c-5.4-3.9-7.4-10.6-5.3-18.3c2.9-10.6,14-22,31.7-23.2c-2,1.8-3.6,4.2-4.5,7c-1.9,5.3-1.3,10.1-0.7,14.7 c0.6,4.6,1.1,9-0.8,13.6c-2,4.8-6.1,7.9-11.3,8.4l-0.8,0.1l-0.1,0.8c-1,9.8,0.3,22.7,3.1,30.8L-312.8,109.6L-312.8,109.6z"/> <path fill="#225650" d="M-311,1.4c11.9,0,23,3.9,31.2,10.9c9.2,7.8,14.1,19.1,14.1,32.5c0,14.3-6.6,25.3-12.9,36 c-5.5,9.2-10.6,17.9-11.3,28h-7c0.6-12.5,6.5-22.4,12.2-32c5.8-9.7,11.8-19.7,11.8-32c0-11.2-4.1-20.5-12-27.1 c-6.9-5.8-16.2-9-26.1-9c-9.9,0-19.2,3.2-26.1,9c-7.8,6.6-12,16-12,27.1c0,12.4,5.7,21.8,11.6,31.9c5.7,9.5,11.5,19.3,12.4,32.1 h-7.1c-0.6-10.1-5.8-18.8-11.3-28c-6.3-10.6-12.9-21.7-12.9-36c0-13.4,4.9-24.6,14.1-32.5C-334,5.2-322.9,1.4-311,1.4L-311,1.4 M-295.4,35.5c-1.2,1.6-2.2,3.4-2.9,5.4c-1.9,5.5-1.3,10.4-0.8,15.2c0.5,4.5,1.1,8.7-0.7,13.1c-1.8,4.5-5.6,7.3-10.4,7.8l-1.6,0.2 l-0.2,1.6c-1,9.4,0.2,21.7,2.7,29.9h-2.7c-3-14.4-1.1-39.1,6.8-53.1l4.9-8.7l-7.8,6.1c-5.1,4-9.6,13.2-11.6,21 c-4.1-3.7-5.5-9.6-3.7-16.2c1.6-5.9,5.5-11.4,11-15.4C-307.7,38.6-301.8,36.3-295.4,35.5 M-294.7,118.7c0.6,0,1.2,0.2,1.6,0.7 c0.2,0.3,0.5,0.7,0.5,1.4l0,0v0c0,1.1-1,2.1-2.1,2.1h-32.7c-1.1,0-2.1-1-2.1-2.1c0-1.1,1-2.1,2.1-2.1L-294.7,118.7 M-295.4,132.5 c1.2,0,2.1,0.9,2.1,2.1c0,1.1-1,2.1-2.1,2.1h-31.2c-1.1,0-2.1-1-2.1-2.1s1-2.1,2.1-2.1H-295.4 M-300.9,146.1 c-0.2,0.2-0.3,0.3-0.5,0.5c-4.6,4.2-5.1,4.5-6.7,4.5h-6.2c-1.6,0-2.1-0.4-6.7-4.7c-0.1-0.1-0.2-0.2-0.3-0.3H-300.9 M-311-0.6 c-23.6,0-47.3,15.1-47.3,45.3c0,28.1,24.2,43.8,24.2,66h11.1c-0.6-28-24.1-41.7-24.1-66c0-22.8,18-34.1,36-34.1S-275,22-275,44.7 c0,24.3-24,38.7-24,66h11c0-22.2,24.2-37.9,24.2-66C-263.8,14.5-287.4-0.6-311-0.6L-311-0.6z M-289.6,33.1 c-33.2,0-46.5,33.8-28.9,44.2c1.5-8.4,6.5-18.9,11.5-22.8c-8.3,14.8-10.3,41.2-6.6,56.1h7.1c-3.1-8-4.5-21.8-3.5-31.7 c5-0.5,9.8-3.4,12.1-9c3.9-9.7-2.1-18.1,1.5-28.4C-295.1,37.7-292.7,34.9-289.6,33.1L-289.6,33.1z M-294.7,116.7h-32.7 c-2.3,0-4.1,1.9-4.1,4.1c0,2.3,1.9,4.1,4.1,4.1h32.7c2.3,0,4.1-1.9,4.1-4.1C-290.5,118.5-292.4,116.7-294.7,116.7L-294.7,116.7z M-295.4,130.5h-31.2c-2.3,0-4.1,1.9-4.1,4.1c0,2.3,1.9,4.1,4.1,4.1h31.2c2.3,0,4.1-1.9,4.1-4.1 C-291.3,132.3-293.1,130.5-295.4,130.5L-295.4,130.5z M-295.7,144.1h-30.7c8.1,7.5,8.9,9,12.1,9h6.2 C-304.9,153.1-304.2,151.7-295.7,144.1L-295.7,144.1z"/> </g> <g> <path fill="#F9E46E" class="yellow" d="M89.5,93.2c0,24.3,23.5,38,24.1,66h24c0-27.3,24-41.7,24-66C161.6,47.7,89.5,47.7,89.5,93.2z"/> </g> <g id="light-bulb-6-icon_37_"> <path fill="#FFFFFF" d="M122.2,200.9c-2.1,0-2.8-0.6-7.4-5c-0.6-0.6-1.4-1.3-2.2-2h25.6c-0.9,0.8-1.7,1.6-2.4,2.2 c-4.6,4.3-5.3,4.8-7.4,4.8H122.2z M109.9,186.5c-1.7,0-3.1-1.4-3.1-3.1s1.4-3.1,3.1-3.1h31.2c1.7,0,3.1,1.4,3.1,3.1 c0,1.7-1.4,3.1-3.1,3.1H109.9z M109.1,172.7c-1.7,0-3.1-1.4-3.1-3.1c0-1.7,1.4-3.1,3.1-3.1h32.7c0.9,0,1.7,0.4,2.3,1 c0.5,0.6,0.8,1.3,0.8,2.1c0,1.8-1.4,3.1-3.1,3.1L109.1,172.7L109.1,172.7z M138.6,158.5c0.3-13.3,6.4-23.6,12.4-33.5 c6-10,11.6-19.4,11.6-31.5c0-16.9-11.6-35.1-37.1-35.1S88.4,76.6,88.4,93.5c0,12.1,5.6,21.4,11.5,31.3c5.9,9.9,12,20.1,12.6,33.7 h-9.1c-0.3-10.3-5.6-19.1-11.2-28.5c-6.4-10.8-13-21.9-13-36.5c0-13.7,5-25.2,14.4-33.2c8.4-7.2,19.7-11.1,31.9-11.1 c12.1,0,23.4,3.9,31.8,11.1c9.4,8,14.4,19.5,14.4,33.2c0,14.6-6.6,25.7-13,36.5c-5.6,9.4-10.8,18.2-11.2,28.5L138.6,158.5 L138.6,158.5z"/> <path fill="#225650" d="M122.3,201.9h6.2c3.2,0,3.9-1.4,12.4-9h-30.7C118.3,200.4,119,201.9,122.3,201.9z M135.2,195.3 c-4.6,4.2-5.1,4.5-6.7,4.5h-6.2c-1.6,0-2.1-0.4-6.7-4.7c-0.1-0.1-0.2-0.2-0.3-0.3h20.5C135.5,195,135.3,195.2,135.2,195.3z"/> <path fill="#225650"d="M141.1,179.3h-31.2c-2.3,0-4.1,1.9-4.1,4.1c0,2.3,1.9,4.1,4.1,4.1h31.2c2.3,0,4.1-1.9,4.1-4.1 C145.2,181.1,143.4,179.3,141.1,179.3z M141.1,185.5h-31.2c-1.1,0-2.1-1-2.1-2.1s1-2.1,2.1-2.1h31.2c1.2,0,2.1,0.9,2.1,2.1 C143.2,184.5,142.3,185.5,141.1,185.5z"/> <path fill="#225650" d="M125.5,48.1c-23.6,0-47.3,15.1-47.3,45.3c0,28.1,24.2,43.8,24.2,66h11.1c-0.6-28-24.1-41.7-24.1-66 c0-22.8,18-34.1,36.1-34.1s36,11.4,36,34.1c0,24.3-24,38.7-24,66h11c0-22.2,24.2-37.9,24.2-66C172.8,63.2,149.1,48.1,125.5,48.1z M146.6,157.5h-7c0.6-12.5,6.5-22.4,12.2-32c5.8-9.7,11.8-19.7,11.8-32c0-11.2-4.1-20.5-12-27.1c-6.9-5.8-16.2-9-26.1-9 s-19.2,3.2-26.1,9c-7.8,6.6-12,16-12,27.1c0,12.4,5.7,21.8,11.6,31.9c5.7,9.5,11.5,19.3,12.4,32.1h-7.1c-0.6-10.1-5.8-18.8-11.3-28 c-6.3-10.6-12.9-21.7-12.9-36c0-13.4,4.9-24.6,14.1-32.5c8.2-7,19.3-10.9,31.2-10.9c11.9,0,23,3.9,31.2,10.9 c9.2,7.8,14.1,19.1,14.1,32.5c0,14.3-6.6,25.3-12.9,36C152.4,138.6,147.2,147.3,146.6,157.5z"/> <path fill="#225650" d="M141.8,165.5h-32.7c-2.3,0-4.1,1.9-4.1,4.1c0,2.3,1.9,4.1,4.1,4.1h32.7c2.3,0,4.1-1.9,4.1-4.1 C146,167.3,144.1,165.5,141.8,165.5z M143.9,169.5L143.9,169.5c0,1.2-1,2.1-2.1,2.1h-32.7c-1.1,0-2.1-1-2.1-2.1 c0-1.1,1-2.1,2.1-2.1h32.7v0c0.6,0,1.2,0.2,1.6,0.7C143.7,168.4,144,168.8,143.9,169.5L143.9,169.5z"/> </g> <path fill="#FFFFFF" class="leaf" stroke="#225650" stroke-width="2" stroke-miterlimit="10" d="M121.8,158.6c-3.3-14.5-1.4-40.1,6.7-54.6 l2.4-4.3l-3.9,3.1c-5.2,4-9.9,14.2-11.6,21.9c-5.4-3.9-7.4-10.6-5.3-18.3c2.9-10.6,14-22,31.7-23.2c-2,1.8-3.6,4.2-4.5,7 c-1.9,5.3-1.3,10.1-0.7,14.7c0.6,4.6,1.1,9-0.8,13.6c-2,4.8-6.1,7.9-11.3,8.4l-0.8,0.1l-0.1,0.8c-1,9.8,0.3,22.7,3.1,30.8 L121.8,158.6L121.8,158.6z"/> </svg> /* CSS */ /* Globe */ #yellow-globe {width: 300px; height: 300px; margin: 0 auto; text-align: center;} #keyframes yellow { 0% { fill: #FFFFFF; } 25% { fill: #FFFFFF; } 50% { fill: #F9E46E; } 75% { fill: #F9E46E; } 100% { fill: #F9E46E; } } .yellow { fill: yellow; animation-name: yellow; animation-duration: 1s; animation-iteration-count: infinite; } .leaf { stroke-dasharray: 242; stroke-dashoffset: 242; animation: dash 4s linear alternate; animation-iteration-count: 1; } #keyframes dash { from { stroke-dashoffset: 242; } to { stroke-dashoffset: 0; } } #keyframes fillme { 0% { fill: #FFFFFF; } 25% { fill: #FFFFFF; } 50% { fill: #225650; } 75% { fill: #225650; } 100% { fill: #225650; } }
You need to include the -webkit- prefix on animations (and transitions) for webkit browsers (like Chrome). Working demo You may also want to include the -ms- and -moz- prefixes so that you can reach older versions of FireFox and IE as well