无法为子元素的字体大小设置动画?

时间:2015-02-25 17:39:56

标签: javascript jquery html css

所以我有这个菜单,滚动时会改变高度,现在效果非常好。唯一的问题是,现在我试图设置字体大小的动画,以便字体也变小。

我在jQuery($('parent > child'))中对子选择器进行了一些研究,但是当我在我的脚本中应用它时,这没有用。有人有解决方案吗?

[HTML]

<html>
    <head>
        <link rel="stylesheet" type="text/css" href="css/main.css">
        <link rel="stylesheet" type="text/css" href="css/header.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    </head>

    <body>
        <div id="content_parent">
            <!-- Header -->
            <div id="header_parent">
                <table class="menuItems">
                    <td>Button</td>
                    <td>Button</td>
                    <td>Button</td>
                    <td>Button</td>
                    <td>Button</td>
                </table>
            </div>

            <!-- Body (homepage) -->
            <div id="body_parent">
                <h1>content-test</h1>
            </div>
        </div>

        <!-- Footer -->
        <div id="footer_parent">

        </div>

        <script src="js/animateheader.js"></script>
    </body>
</html>

[CSS]

#content_parent {
    max-width:1250px;
    min-width:750px;
    min-height:100%;
    box-shadow:0 0 10px 2px rgb(180,180,180);
    -webkit-box-shadow:0 0 10px 2px rgb(180,180,180);
    -moz-box-shadow:0 0 10px 2px rgb(180,180,180);
}

#header_parent {
    position:fixed;
    right:0;
    left:0;
    margin-left:auto;
    margin-right:auto;
    max-width:1250px;
    min-width:750px;
    height:60px;
    background-color:rgb(50,50,50);
    box-shadow:-6px 0 rgba(0,0,0,0), 6px 0 rgba(0,0,0,0), 0 6px 4px -2px rgb(180,180,180);
    -webkit-box-shadow:-6px 0 rgba(0,0,0,0), 6px 0 rgba(0,0,0,0), 0 6px 4px -2px rgb(180,180,180);
    -moz-box-shadow:-6px 0 rgba(0,0,0,0), 6px 0 rgba(0,0,0,0), 0 6px 4px -2px rgb(180,180,180);
    border-bottom-left-radius:2px;
    -webkit-border-bottom-left-radius:2px;
    -moz-border-bottom-left-radius:2px;
    border-bottom-right-radius:2px;
    -webkit-border-bottom-right-radius:2px;
    -moz-border-bottom-right-radius:2px;
    border-top-left-radius:0;
    -webkit-border-top-left-radius:0;
    -moz-border-top-left-radius:0;
    border-top-right-radius:0;
    -webkit-border-top-right-radius:0;
    -moz-border-top-right-radius:0;
}

#body_parent {
    padding-top:60px;
    max-width:1250px;
    min-width:750px;
    background-color:rgb(245,245,245);
}

table.menuItems {
    width:100%;
    height:100%;
    border-collapse:collapse;
    border:0;
}

.menuItems td {
    width:20%;
    height:100%;
    text-align:center;
    color:rgb(230,230,230);
    font-family:Sansation;
    font-weight:bold;
    font-size:25px;
}

[JS]

$(window).on('scroll', function () {
    var scrollTop = $(window).scrollTop();
    if (scrollTop > 0) {
        $('#header_parent').stop().animate({height: "40px"},50);
        $('#body_parent').stop().animate({paddingTop: "40px"},45);
        $('table.menuItems > td').stop().animate({fontSize: "18px"},50);
    }
    else {
        $('#header_parent').stop().animate({height: "60px"},50);
        $('#body_parent').stop().animate({paddingTop: "60px"},45);
        $('table.menuItems > td').stop().animate({fontSize: "25px"},50);
    }
});

为了清除,带有fontSize的jQuery行是不按我想要的方式运行的。

这里是Fiddle

2 个答案:

答案 0 :(得分:2)

这里是jsfiddle的更新版本:http://jsfiddle.net/52czbb73/1/

你的选择器错了

$('table.menuItems > tbody > tr > td').stop().animate({fontSize: "18px"},50);

我冒昧地在你的表格中添加tr标签。

        <div id="header_parent">
            <table class="menuItems">
                <tr>
                <td>Button</td>
                <td>Button</td>
                <td>Button</td>
                <td>Button</td>
                <td>Button</td>
                </tr>
            </table>
        </div>

顺便说一句,谷歌浏览器可以通过右键单击要定位的元素从开发者工具获取CSS路径,然后选择将CSS路径复制到剪贴板的CSS path。然后将其粘贴到您的代码中。

答案 1 :(得分:1)

您正在使用wrng选择器,您可以选择这样的td

$('table.menuItems td').stop().animate({fontSize: "25px"},50);

$('table.menuItems td').stop().animate({fontSize: "18px"},50);

更新了演示:http://jsfiddle.net/52czbb73/2/