CSS3 Fade Effect

后端 未结 3 525
一整个雨季
一整个雨季 2020-11-28 08:54
a {
    float: left;
    width: 32px;
    height: 32px;
    text-align: left;
    text-indent:-9999px;
    background: url(\'../img/button.png\') no-repeat 0 0;

            


        
相关标签:
3条回答
  • 2020-11-28 09:21

    It's possible, use the structure below:

    <li><a><span></span></a></li>
    <li><a><span></span></a></li>
    

    etc...

    Where the <li> contains an <a> anchor tag that contains a span as shown above. Then insert the following css:

    • LI get position: relative;
    • Give <a> tag a height, width
    • Set <span> width & height to 100%, so that both <a> and <span> have same dimensions
    • Both <a> and <span> get position: relative;.
    • Assign the same background image to each element
    • <a> tag will have the 'OFF' background-position, and the <span> will have the 'ON' background-poisiton.
    • For 'OFF' state use opacity 0 for <span>
    • For 'ON' :hover state use opacity 1 for <span>
    • Set the -webkit or -moz transition on the <span> element

    You'll have the ability to use the transition effect while still defaulting to the old background-position swap. Don't forget to insert IE alpha filter.

    0 讨论(0)
  • 2020-11-28 09:30

    The scrolling effect is cause by specifying the generic 'background' property in your css instead of the more specific background-image. By setting the background property, the animation will transition between all properties.. Background-Color, Background-Image, Background-Position.. Etc Thus causing the scrolling effect..

    E.g.

    a {
    -webkit-transition-property: background-image 300ms ease-in 200ms;
    -moz-transition-property: background-image 300ms ease-in 200ms;
    -o-transition-property: background-image 300ms ease-in 200ms;
    transition: background-image 300ms ease-in 200ms;
    }
    
    0 讨论(0)
  • 2020-11-28 09:42

    You can't transition between two background images, as there's no way for the browser to know what you want to interpolate. As you've discovered, you can transition the background position. If you want the image to fade in on mouse over, I think the best way to do it with CSS transitions is to put the image on a containing element and then animate the background colour to transparent on the link itself:

    span {
        background: url(button.png) no-repeat 0 0;
    }
    a {
        width: 32px;
        height: 32px;
        text-align: left;
        background: rgb(255,255,255);
    
        -webkit-transition: background 300ms ease-in 200ms; /* property duration timing-function delay */
        -moz-transition: background 300ms ease-in 200ms;
        -o-transition: background 300ms ease-in 200ms;
        transition: background 300ms ease-in 200ms;
        }
    a:hover {
        background: rgba(255,255,255,0);
    }
    
    0 讨论(0)
提交回复
热议问题