Обратный функционал вкладок. - PullRequest
0 голосов
/ 31 июля 2011

Я пытаюсь изменить направление этих вкладок.В настоящее время они имеют высоту 150px и уменьшаются до 90px.Я решил, что хотел бы, чтобы они стали с 90 до 150 пикселей.Я думал, что поменять функцию будет легко, однако, похоже, что она не работает.Есть ли у кого-нибудь какие-либо предложения.

Заранее благодарю за любую помощь / совет.

<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 Ответ

4 голосов
/ 31 июля 2011

Недостаточно просто поменять цифры.

CSS

Давайте сначала посмотрим на ваш CSS.

Просто измените высоту тега a на соответствующий размер 90 пикселей. Высота тега li может оставаться нетронутой, поскольку вы хотите, чтобы она сохраняла высоту 150 пикселей, при которой тег должен расти при наведении.

#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) на 60px, чтобы достичь высоты 150px.

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

Как вы можете видеть в своем CSS, высота ваших тегов li осталась на уровне 150 пикселей. Все, что вам нужно сделать, это изменить высоту тега li a , для которого определено свойство background-color.

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

При наведении мыши вы хотите снова уменьшить его до 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>

Надеюсь, это поможет вам. Существует много места для рефакторинга!

...