Scale on Hover with Transition

Bring your own prefixes!

.grow { transition: all .2s ease-in-out; }
.grow:hover { transform: scale(1.1); }

Comments

  1. User Avatar
    Glenn N.

    I was able to achieve the enlarging in Firefox by doing -moz-transition: scale(1.4); but the animation part does not work. Does Firefox have an equivalent to the ease-in-out?

    • User Avatar
      Alhadis

      At the moment, the current stable release of Firefox doesn’t support transitions, no.

      But the nightly build of Firefox (3.7) is supposed to have support for transitions, under the vendor prefix “-moz-transition:”. Since 3.7 isn’t a stable build yet, we’ll just have to wait in the meantime. =)

      The CSS3 spec for transitions might actually be finalised by the time Firefox 3.7 is released to public, so there mightn’t even be a need for using the vendor-specific prefix.

    • User Avatar
      Akhil
      Permalink to comment#

      Its really Cool… Thanks

    • User Avatar
      Amee
      Permalink to comment#

      Ya its really working.
      simple code
      and simple zoom.

      thank you so much

  2. User Avatar
    Richard Nash
    Permalink to comment#

    I have a question about this technique.

    I’m trying to employ the same thing for a nav ul of mine, but the issue is when I hover and the current link scales, it covers up the other links, plus it does not returning smoothly to the beginning; it jumps. I don’t have a clue as how to make the other nav elements move, or be pushed out of the way, by the nav link that is scaling currently, or how to fix the the jumpieness of the link when I mouse away from it. I’m very new to web design (6 months) so my knowledge is swiss cheese right now. I would appreciate some help on the issue, as I’m a little lost currently.

    Here is my css for ul. I’m sure I’m missing some obvious stuff, so any help will be much appreciated!

    #intro-container ul {
    font-size: 20px;
    float: right;
    margin: 20px 0;
    padding: 80px 0 0 0;
    text-align: right;
    list-style: none;
    }

    #intro-container ul li {
    }

    #intro-container ul li a {
    display: block;
    font-size:45px;
    padding: 5px;
    -webkit-transition: -webkit-transform 0.5s ease;
    -moz-transition: -moz-transform 0.5s ease;
    transition: transform 0.5s ease;
    }

    #intro-container ul li a:hover {
    -webkit-transform: scale(1.25);
    -moz-transform: scale(1.25);
    -o-transform: scale(1.25);
    transform: scale(1.25);
    -webkit-transform-origin: top right;
    -moz-transform-origin: top right;
    -o-transform-origin: top right;
    transform-origin: top right;
    }

    Again, thank you in advance for any assistance anybody is willing to provide. This stuff is confusing for a newbie!

    Richard Nash,
    Los Angeles

    • User Avatar
      Hernan Chiosso
      Permalink to comment#

      You are trying to scale the text? Perhaps you should just transition the font-size property.

  3. User Avatar
    Swagato Bhatta
    Permalink to comment#

    Hello,

    I am trying to scale small icons using this method. It works for moz,firefox, chrome, safari.. however couldnt get it to work for ie7-8. I think there is no direct support for such. Do you have any javascript or similar that does similar job?

  4. User Avatar
    Hugo Giraudel
    Permalink to comment#

    To be patched. It works perfectly fine in all major browsers now. :)

  5. User Avatar
    Daniel Jones
    Permalink to comment#

    Really liked this one Chris. Looks great, cheers!

  6. User Avatar
    Alisher
    Permalink to comment#

    nice tricks with image – thank you guys (beginner)

  7. User Avatar
    Eli
    Permalink to comment#

    I was stuck with smooth scaling for 2 hours – and here I found this short and sweet solution. Thank you so much!

  8. User Avatar
    jordi
    Permalink to comment#

    Hi there,
    nice effect, I am using it as a main rollover effect in a website now, and used it before too but, can’t have my head around solving a problem. Meanwhile the transition runs, other elements in the view start doing some slightly perceptible but very annoying undesired movements too. Sometimes they are other images, other times text goes slightly bolder, and ALWAYS the image running the transition has an start and an end blurry moment, very short but very horrible. What am I missing here?

    • User Avatar
      Kenny

      HI, I’m having this exact same problem of other elements on the page slightly moving and jittering or whatever. Also the blurry fade in issue with the zoom. Did you ever find a solution to fix this? Thanks.

  9. User Avatar
    dhaval
    Permalink to comment#

    “-webkit-transition: .6s ease-in-out fade ” this code is not working in google chrome.In mozilla its work fine.Please help me out.

  10. User Avatar
    jordi
    Permalink to comment#

    Hey, it looks like it is the order of the parameters,
    transition: [transition-property] [transition-duration] [transition-timing-function] [transition-delay];
    try :
    -webkit-transition: opacity .6s ease-in-out
    And, as far as I am aware ‘fade’ is not a CSS property so no CSS transition can run on it, this is why I modified your rule from ‘fade’ to opacity.
    and there are thousands of articles about CSS transitions ou there, but the following is one of the best :) :
    http://css-tricks.com/almanac/properties/t/transition/

  11. User Avatar
    Nimitz
    Permalink to comment#

    Reference link is dead.

  12. User Avatar
    fabio
    Permalink to comment#

    Really nice! I have a question…does it work on IE8?

  13. User Avatar
    David
    Permalink to comment#

    Very nice… I’ve used the height mode (1, 1.1)…

  14. User Avatar
    Laurel

    I’m using this technique to scale up icons in links on hover. It works but the icons pop back to normal size once the transition is complete instead of staying at the bigger size as long as you’re hovering. You can see it at my site here:

    http://s542306109.onlinehome.us/webi1911/tokyo-pop/index.html#scene-8

    This is the relevant html:

    <section class="container" id="scene-8">
                <div class="center-text">
                    <h1 class="title">plan your visit</h1>
                    <section>
                        <a href="http://www.moma.org/" target="_blank">
                            <img src="images/logo-kokeshi-ny.png" alt="">
                            <h2>New York</h2>   
                            <p>Museum of Modern Art</p>
                        </a>
                    </section>
                    <section>
                        <a href="http://www.moca.org/" target="_blank">
                            <img src="images/logo-kokeshi-la.png" alt="">
                            <h2>Los Angeles</h2>    
                            <p>Museum of Contemporary Art</p>
                        </a>
                    </section>
                    <section>
                        <a href="http://new.artsmia.org/" target="_blank">
                            <img src="images/logo-kokeshi-mpls.png" alt="">
                            <h2>Minneapolis</h2>    
                            <p>Minneapolis Institute of Art</p>
                        </a>
                    </section>
                </div>
            </section>
    

    And here’s my CSS:

    #scene-8 a {
        text-decoration: none;
        -webkit-transition: 1s ease;
               -moz-transition: 1s ease;
             -o-transition: 1s ease;
                transition: 1s ease;
    }
    
    #scene-8 a:hover {
        -webkit-transform: scale(1.1);
               -moz-transform: scale(1.1);
                 -o-transform: scale(1.1);
                transform: scale(1.1);
    }
    

    Does anyone know if there’s a way to fix this so the icons stick at the larger transitioned size until you mouse out?

    • User Avatar
      Kenny

      Hi, yeah it seems weird that it only changes for a limited time on hover. Try changing the link to display: block or inline-block, seems to fix it.

    • User Avatar
      Laurel

      Kenny,

      Thanks so much, that fixed it!

    • User Avatar
      Kawal
      Permalink to comment#

      Your Website is dead Ma’am

    • User Avatar
      Imran Sarwar
      Permalink to comment#

      Can you Please give me fixed responsive bar with left side company name using CSS

  15. User Avatar
    Joakim
    Permalink to comment#

    Don´t get this to work in Safari though.

  16. User Avatar
    Sue
    Permalink to comment#

    Ive never used proper coding before and im trying to build a website for custom shirt designs. I was wondering what the full code is and how to apply that to an image gallery.
    Thanks for the help
    much appreciated
    Sue

  17. User Avatar
    pyxal
    Permalink to comment#

    If the element you want to scale is an img with 100% width, then the code provided here can be problematic in Safari. The scale animation will run on page load as well as hover. To fix this, change “all” in the transition property to “transform”. Like so:

    .grow { transition: all .2s ease-in-out; }
    .grow:hover { transform: scale(1.1); }

    • User Avatar
      pyxal
      Permalink to comment#

      Err, like so:

      .grow { transition: transform .2s ease-in-out; }
      .grow:hover { transform: scale(1.1); }

  18. User Avatar
    Merianos Nikos
    Permalink to comment#

    Awesome :) Thank you ;)

  19. User Avatar
    Sudip
    Permalink to comment#

    Thanks , its work nicely.

  20. User Avatar
    Sumit
    Permalink to comment#

    HTML:

    CSS:-
    .section{position:relative;}
    .hover{width:342px; height:260px; position:absolute; background-color:rgba(0,0,0,0.75); left:0; top:0; opacity:0; transition:all 0.7s ease-in-out;}
    .hover:hover{opacity:1; transition: scale(1.1);}

  21. User Avatar
    Sumit
    Permalink to comment#

    HTML:

  22. User Avatar
    U.Ramesh
    Permalink to comment#

    on-mouse hover image is bigger than on-mouse out we can same position. in this image paragraph their .only image is bigger than .we can not change the paragraph …..how do you…. using CSS properties…. ?
    answer….. tell me…..

  23. User Avatar
    hendrik

    Wow thanks man i was looking for something simple like this thanks ;)

  24. User Avatar
    Aishwarya
    Permalink to comment#

    Hi ,
    Here I have tried in some another way . This is also simple and nice.
    HTML Code:

    body{
               font-family:san-serif;
          }
    
    td {
        border: 1px solid #dddddd;
        text-align: left;
        padding: 8px;
        width:300px;
        margin-left:2%;
         }
    
    function bigImg(x) {
        x.style.height = "180";
        x.style.width = "200";
    }
    
    function normalImg(x) {
        x.style.height = "150";
        x.style.width = "150";
    }
    

    In the image source you can give your image path.
    Try this one. This is also nice.

    Thanking you.

  25. User Avatar
    zeinab
    Permalink to comment#

    thnx

  26. User Avatar
    bahaaa
    Permalink to comment#

    thanks you

  27. User Avatar
    Ashan
    Permalink to comment#

    Thanks. Perfect.

  28. User Avatar
    Akshay
    Permalink to comment#

    I want to create my bar chart which should increase in height when mouse is hovered ,so thank’s for this tutorial it is very helpful for me.

  29. User Avatar
    Sammy
    Permalink to comment#

    any suggestions on how to center the enlarged image within the page on hover?

  30. User Avatar
    Andres Florez

    Really really really nice!!!

  31. User Avatar
    Tanmoy Biswas

    reaaly thanks man. save lots of time and only just 2 line of codes.

Submit a Comment

Posting Code

You may write comments in Markdown. This makes code easy to post, as you can write inline code like `<div>this</div>` or multiline blocks of code in triple backtick fences (```) with double new lines before and after.

Code of Conduct

Absolutely anyone is welcome to submit a comment here. But not all comments will be posted. Think of it like writing a letter to the editor. All submitted comments will be read, but not all published. Published comments will be on-topic, helpful, and further the discussion or debate.

Want to tell us something privately?

Feel free to use our contact form. That's a great place to let us know about typos or anything off-topic.

icon-anchoricon-closeicon-emailicon-linkicon-logo-staricon-menuicon-nav-guideicon-searchicon-staricon-tag