选项卡的反向功能。

时间:2011-07-31 00:39:47

标签: jquery html5 navigation jquery-animate

我试图扭转这些标签的方向。目前它们高150px,缩小到90px。我决定我希望看到它们从90px变为150px。我认为反转功能很容易,但似乎没有用。有没有人有任何建议。

提前感谢您提供任何帮助/建议。

<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js"></script>
<script type="text/javascript"><!--
$(document).ready(function() { 
    var navDuration = 500; 
    var navJumpHeight = "90px";

    $('#tabs li').hover(function() {
        $(this).animate({ height : "-="+navJumpHeight }, navDuration);           
    }, function() {
        $(this).animate({ height : "150px" }, navDuration);
    });        
});
// --></script>

<style type="text/css"><!--
/* CSS Reset */
     html,body,div,ul,ol,li,dl,dt,dd,h1,h2,h3,h4,h5,h6,pre,form,p,blockquote,fieldset,input,hr{margin:0;padding:0;line-height:1em;}
h1,h2,h3,h4,h5,h6,pre,code,address,caption,cite,code,em,strong,th{font-size:1em;font-weight:normal;font-style:normal;line-height:1em;}
ul,ol{list-style:none;}
fieldset,img,hr{border:none;}
q:before,q:after{content:'';}
abbr,acronym{border:0;}
caption,th{text-align:left;}
table{border-collapse:collapse;border-spacing:0;}
td {vertical-align:top;}
html{font-size:100.01%;}
body{font-size:1em;}
a img{border: none;}

body{ font-family:Arial; font-size:10px; font-weight:500; background:#ffffff no-repeat center top; }    
    div.headerblock{ position:absolute; display:table-cell; text-align:center; left:0px; top:0px; width:100%; height:150px; }   
        div.header{ position:relative; width:900px; height:170px; margin-left:auto; margin-right:auto; }
            div.logo        { position:relative; display:table-cell; vertical-align:top; text-align:left; left:0px; top:0px; width:349px; height:170px; float:left; }


    #headerblock #header #tabs { height: 150px; overflow: hidden; padding: 0 10px; left:40; list-style: none; position: relative; filter:alpha(opacity=85); opacity:0.85; }
    #headerblock #header #tabs li, #headerblock #header #tabs li a { width: 100px; position: relative; float: left; }      
    #headerblock #header #tabs li { top: 0 px; margin: 0; background: none; padding: 0; display: block; vertical-align: bottom;}
    #headerblock #header #tabs li a { display: block; color: #ffffff; font-size: 1.7em; text-decoration: none; text-transform: uppercase; height: 150px; line-height: 1.1em}
    #headerblock #header #tabs #tab_about a   { background-color: #ff0000; }
    #headerblock #header #tabs #tab_services a{ background-color: #ffa500; }
    #headerblock #header #tabs #tab_contact a { background-color: #ffff00; }
    #headerblock #header #tabs #tab_learning a{ background-color: #00ff00; }
    #headerblock #header #tabs #tab_clients a { background-color: #0000ff; }
--></style>
</head>
<body>
<div class="headerblock" id="headerblock">
<div class="header" id="header">
    <div class="logo">
        &nbsp;
    </div>
    <ul id="tabs">
        <li id="tab_about"><a href="#">&nbsp;<br>Tab 1</a></li>
        <li id="tab_services"><a href="#">&nbsp;<br>Tab 2</a></li>
        <li id="tab_contact"><a href="#">&nbsp;<br>Tab 3</a></li>
        <li id="tab_learning"><a href="#">&nbsp;<br>Tab 4</a></li>
        <li id="tab_clients"><a href="#">&nbsp;<br>Tab 5</a></li>
    </ul>
</div >
</div>
</body>
</html>

1 个答案:

答案 0 :(得分:4)

仅仅扭转数字是不够的。

CSS

让我们先看看你的CSS。

只需将 a 标记的高度更改为适当的90px大小。 li 标记高度可以保持不变,因为您希望它保留标记在悬停时应增长的150px的高度。

#headerblock #header #tabs li a
{
    display: block;
    color: #ffffff;
    font-size: 1.7em;
    text-decoration: none;
    text-transform: uppercase;
    height: 90px;
    line-height: 1.1em
}

的JavaScript

现在你只需对你的JS进行一些更改。

一开始你的锚标签是90px高。你希望它增长(在mousover animate函数中+ =)60px以达到150px的高度。

var navJumpHeight = "60px";
$(this).animate({ height: "+=" + navJumpHeight }, navDuration);

正如您在CSS中看到的, li 标签的高度保持在150px。您要做的就是更改 li a 标记的高度,该标记定义了background-color属性。

$('#tabs li a').hover(function () {

在mouseout上,您希望它再次缩小为90px:

$(this).animate({ height: "90px" }, navDuration);

为了使mouseover和mouseout函数保持一致并重用navJumpHeight变量而不是使用幻数,你可以将上一行改为:

$(this).animate({ height: "-=" + navJumpHeight }, navDuration);

结果

我在我的机器上运行了以下代码:

<html>
<head>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js"></script>
    <script type="text/javascript">
    <!--
        $(document).ready(function () {
            var navDuration = 500;
            var navJumpHeight = "60px";
            $('#tabs li a').hover(function () {
                $(this).animate({ height: "+=" + navJumpHeight }, navDuration);
            }, function () {
                $(this).animate({ height: "-=" + navJumpHeight }, navDuration);
            });
        });
    // -->
    </script>
    <style type="text/css">
    <!--
        /* CSS Reset */    html,body,div,ul,ol,li,dl,dt,dd,h1,h2,h3,h4,h5,h6,pre,form,p,blockquote,fieldset,input,hr{margin:0;padding:0;line-height:1em;} h1,h2,h3,h4,h5,h6,pre,code,address,caption,cite,code,em,strong,th{font-size:1em;font-weight:normal;font-style:normal;line-height:1em;} ul,ol{list-style:none;}fieldset,img,hr{border:none;}q:before,q:after{content:'';}abbr,acronym{border:0;}caption,th{text-align:left;}table{border-collapse:collapse;border-spacing:0;}td {vertical-align:top;}html{font-size:100.01%;}body{font-size:1em;}a img{border: none;}body{ font-family:Arial; font-size:10px; font-weight:500; background:#ffffff no-repeat center top; }        
        div.headerblock{ position:absolute; display:table-cell; text-align:center; left:0px; top:0px; width:100%; height:150px; }           
        div.header{ position:relative; width:900px; height:170px; margin-left:auto; margin-right:auto; }            
        div.logo        { position:relative; display:table-cell; vertical-align:top; text-align:left; left:0px; top:0px; width:349px; height:170px; float:left; }    
        #headerblock #header #tabs { height: 150px; overflow: hidden; padding: 0 10px; left:40; list-style: none; position: relative; filter:alpha(opacity=85); opacity:0.85; }    
        #headerblock #header #tabs li,
        #headerblock #header #tabs li a { width: 100px; position: relative; float: left; }          
        #headerblock #header #tabs li { top: 0; margin: 0; background: none; padding: 0; display: block; vertical-align: bottom;}    
        #headerblock #header #tabs li a { display: block; color: #ffffff; font-size: 1.7em; text-decoration: none; text-transform: uppercase; height: 90px; line-height: 1.1em}    
        #headerblock #header #tabs #tab_about a   { background-color: #ff0000; }    
        #headerblock #header #tabs #tab_services a{ background-color: #ffa500; }    
        #headerblock #header #tabs #tab_contact a { background-color: #ffff00; }    
        #headerblock #header #tabs #tab_learning a{ background-color: #00ff00; }    
        #headerblock #header #tabs #tab_clients a { background-color: #0000ff; }
        -->
    </style>
</head>
<body>
    <div class="headerblock" id="headerblock">
        <div class="header" id="header">
            <div class="logo">&nbsp;</div>
            <ul id="tabs">
                <li id="tab_about"><a href="#">&nbsp;<br>Tab 1</a></li>
                <li id="tab_services"><a href="#">&nbsp;<br>Tab 2</a></li>
                <li id="tab_contact"><a href="#">&nbsp;<br>Tab 3</a></li>
                <li id="tab_learning"><a href="#">&nbsp;<br>Tab 4</a></li>
                <li id="tab_clients"><a href="#">&nbsp;<br>Tab 5</a></li>
            </ul>
        </div>
    </div>
</body>
</html>

希望这会对你有所帮助。重构有很多空间!