jQuery Горизонтальная проблема аккордеона и анимации - PullRequest
0 голосов
/ 07 июня 2009

Мне нужно сделать горизонтальную гармошку в эти дни.

При щелчке на палитре цветов вы можете заметить небольшой «прыжок» с полями цвета справа. Я не знаю, почему происходит маленький «прыжок».

Затем я использую animate вместо hide and show, чтобы попытаться решить проблему.

Даже если ширина анимируется до 0px, элемент все еще имеет несколько пикселей, поэтому я пытаюсь скрыть его после анимации. Но функция hide () ничего не делает. Зачем?

Во время отладки я обнаружил, что предупреждение («хорошо») запускается непосредственно перед окончанием анимации. Зачем?

Спасибо, что ответили на мои вопросы.

Вот код:

<html>
<head>
<style type="text/css">
.accordion {    padding: 3px;   margin: 0px;    float: left;    width: 300px;}
.accordionTitle {   cursor: pointer;    padding: 3px;   margin: 0px;    float: left;width:20px; height:150px; }
.clearBoth { clear: both; }
</style>
<script src="jquery-1.3.2.min.js"></script>
<script type="text/javascript" >
$(function() {
    var elementToTransform = ".accordion" 
    $(elementToTransform).hide();
    var currentAccordionPanel = ($(".currentAccordionPanel").show())[0];
    $(".accordionTitle").click(function() {
        if ($(this).next(elementToTransform)[0] != currentAccordionPanel)
            {
                $(currentAccordionPanel).hide(400);
                $(this).next(elementToTransform).show(400);
                /*$(currentAccordionPanel).animate({width:"0px"},{duration:200,queue:false},{},function(){alert("good")});
                $(this).next(elementToTransform).animate({width:"300px"},{duration:200,queue:false});
                      $(currentAccordionPanel).hide(); // the element still has few pixels even width animates to 0, so I hide it
*/
                currentAccordionPanel = $(this).next(elementToTransform)[0];
            }

    })
});
</script>
</head>
<body>
<div style="width:800px;">
    <div id="cat1">
        <div class="accordionTitle" style="background:blue">1</div>
        <div class="accordion currentAccordionPanel" id="p1">content 1</div>
    </div>
    <div id="cat2">
        <div class="accordionTitle" style="background:red">2</div>
        <div class="accordion" id="p2">content 2</div>
    </div>
    <div id="cat3">
        <div class="accordionTitle" style="background:yellow">3</div>
        <div class="accordion" id="p3">content 3</div>
    </div>
    <div id="cat4">
        <div class="accordionTitle" style="background:green">4</div>
        <div class="accordion" id="p4">content 4</div>
    </div>
    <div id="cat5">
        <div class="accordionTitle" style="background:red">5</div>
        <div class="accordion" id="p5">content 5</div>
    </div>
    <div class="clearBoth"></div>
</div>
</body>
</html>

1 Ответ

0 голосов
/ 07 июня 2009

Я бы посоветовал вам добавить следующий стиль в классы accordion и accordionTitle:

overflow:hidden;

Это, по крайней мере, решило бы проблему ширины, не равной нулю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...