html - 如何使用css3制作动画

标签 html css css-animations

我只想使用 CSS 为菜单项设置动画。我应用了动画,但它不起作用。任何类型的动画都可以。我是 CSS 的新手。谁能帮帮我。

这是我现在所做的 JS fiddle : Demo

这是 HTML 部分..

<div id="back">

            <div class="wrapper">
    <div class="container">
    <ul id="menu" class="menu">

    <li id="l1" runat="server" class="active"><a class="link1" href="Home.aspx" runat="server" id="a1">Home</a></li>
    <li id="l2" runat="server"><a runat="server" class="link1" href="?id=History" id="a2">About MCB<img src="Images/Other%20Images/dropdown.png" style="position:absolute;margin-right:0px; top: -3px; left: 138px;"/></a>
        <ul>
            <li id="l21" runat="server"><a runat="server" class="link1" href="?id=Members" id="a21">Member details</a></li>
            <li id="l22" runat="server"><a runat="server" class="link1" style="width:116px;" href="?id=History" id="a22">History</a></li>
        </ul>

    </li>
    <li id="l3" runat="server"><a  runat="server" href="?id=Photos" class="link1" id="a3">Gallery<img src="Images/Other%20Images/dropdown.png" style="position:absolute;top: -3px; float:right;right:-8px; z-index:1000;"/></a>
        <ul id="gl">
            <li id="L31" runat="server"><a style="width:inherit" runat="server" class="link1" href="?id=Photos" id="a15">Photos</a></li>
            <li id="L32" runat="server"><a style="width:inherit" runat="server" class="link1" href="?id=Videos" id="a16">Videos</a></li>
        </ul>

    </li>
    </ul>
</div>
</div>
</div>

这是 Css:

.wrapper {
    width: 100%;
    height: 40px;
    background : #464646;
    background : -webkit-gradient(linear, left top, left bottom, from(rgb(168,168,168)), to(rgb(69,69,69)));
    background : -moz-linear-gradient(top, rgb(168,168,168), rgb(69,69,69));
    border-top: 2px ridge #939393;
    position: relative;
    top:19px;
    margin-bottom: 30px;
}

ul {
    margin: 0;
    padding: 0;
}

ul.menu {
    height: 30px;
    border-left: 1px solid rgba(0,0,0,0.3);
    border-right: 1px solid rgba(255,255,255,0.3);
    float:left;
    position:relative;
}

ul.menu li {
    list-style: none;
    float:left;
    height: 39px;
    display:inline-block;
    text-align: center;
    position:relative;
    background: -webkit-gradient(radial, 50% 100%, 10, 50% 50%, 90, from(rgba(31,169,244,1)), to(rgba(0,28,78, 1)) );
    background: -moz-radial-gradient(center 80px 45deg, circle cover, rgba(31,169,244,1) 0%, rgba(0,28,78, 1) 100%);

}

    ul.menu li ul li 
    {
        display: block;
        float: none;
        clear: left;
        animation-duration:5s;
        animation-fill-mode:both;
        animation-play-state:paused;
        animation-direction:alternate;
        animation:ease-in-out;    

    }
    .menu li:not(:hover) ul {
    display: none; 

    }

    .menu li:hover ul {
    display: inline-block; 

    }

ul.menu li ul li a
{
        clear: left;
        line-break: strict;
        display:inline-block;
        position:relative;
        font-size:18px;

    }
.link1 {
        display: block;

        text-decoration: none;
        font-family:'Adobe Garamond Pro';
        color: White;
        font-size: 22px;
        font-weight:bolder;

        padding: 0 30px;
        border-left: 1px solid rgba(255,255,255,0.1);
        border-right: 1px solid rgba(0,0,0,0.1);
        text-align: center;
        line-height: 39px;

        background : -webkit-gradient(linear, left top, left bottom, from(rgb(168,168,168)), to(rgb(69,69,69)));
        background : -moz-linear-gradient(top, rgb(168,168,168), rgb(69,69,69));
        -webkit-transition-property: background;

        -moz-transition-property: background;

        transition-property:background;

        -webkit-transition: all 0.5s ease;
        -moz-transition: all 0.5s ease;
        -o-transition: all 0.5s ease;
        -ms-transition: all 0.5s ease;
          transition: all 0.5s ease;
}

.link1:hover {
    background: transparent none;
}

ul li.active .link1{
    background: -webkit-gradient(radial, 50% 100%, 10, 50% 50%, 90, from(rgba(31,169,244,1)), to(rgba(0,28,78, 1)) );
    color:black;
    background:-o-linear-gradient(center 80px 45deg, circle cover, rgba(31,169,244,1) 0%, rgba(0,28,78, 1) 100%);
    background:linear-gradient(center 80px 45deg, circle cover, rgba(31,169,244,1) 0%, rgba(0,28,78, 1) 100%);
    background: -moz-radial-gradient(center 80px 45deg, circle cover, rgba(31,169,244,1) 0%, rgba(0,28,78, 1) 100%);
}

我错在哪里。请告诉我。

最佳答案

我更新了您的 fiddle ,使下拉菜单循环淡入和淡出。这不是最奇特的示例,但它应该可以帮助您理解这个想法。

您只是缺少实际的关键帧动画,然后缺少对该动画名称的引用。非常简单明了,应该会让您了解如何扩展它来为其他元素及其属性设置动画。不要忘记添加所有适当的供应商前缀!

@-webkit-keyframes fadeInOut {
    0% { opacity: 1; }
    50% { opacity: .25; }
    100% {opacity: 1; } 
}

ul.menu li ul li 
{
    display: block;
    float: none;
    clear: left;
    -webkit-animation-name: fadeInOut; 
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-timing-function: linear;
    -webkit-animation-duration: 3s;    

}

http://jsfiddle.net/gUmZw/5/

如果您想了解有关 CSS 关键帧动画的更多信息,请查看这篇关于 CSS 技巧的精彩文章。

http://css-tricks.com/snippets/css/keyframe-animation-syntax/

关于html - 如何使用css3制作动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17773770/

相关文章:

javascript - 为什么动画没有按预期工作?

javascript - 使用 JS 更改 SVG 文本的字体大小

html - 使用 jplayer 将 m4v 从 apache 流式传输到 chrome 时客户端关闭连接

css - 更新的 CSS 未出现在合并文件中

jquery - 如何使用js将对象移动到屏幕上的特定坐标

CSS 动画缩放变换在 Firefox 中开始模糊

css - 如何使用 ng-hide/ng-show 动画

javascript - 如何从spring Controller 方法更新html img src?

javascript - 对动态元素使用 JQuery 选择器和 "this"

javascript - Webpack - 生产如何为 <link href =""> 和 css 文件中的图像路径启用不同的文件路径