当DT处于活动状态时,IMage动画更大,而在不活动时则更小

时间:2011-08-02 00:22:48

标签: php jquery jquery-animate

想要调整此脚本:http://css-tricks.com/examples/InfoGrid/

我在每个“dt”中添加了一个图像,我希望它在关闭时能够达到特定尺寸。然后选择“dt”时更大的动画(很像文本的方式)。当然,当选择不同的“dt”时,返回原始大小。

还希望更多地控制处于“正常状态”与“选定状态”的事物。有什么想法吗?

<div id="page-wrap">
    <div class="info-col">
        <h2>Superman</h2>
        <a class="image superman" href="http://jprart.deviantart.com/art/Batman-and-Superman-64545242">View Image</a>
    <dl>
          <dt><img src="http://s3.buysellads.com/1252508/65529-1308680363.jpg"> Other text</dt>
          <dd>Stuff Here1</dd>

          <dt><img src="http://s3.buysellads.com/1252508/65529-1308680363.jpg"> Other text 2</dt>
          <dd>Stuff Here2</dd>
</div>

            <div class="info-col">
        <h2>Superman 2</h2>
        <a class="image superman" href="http://jprart.deviantart.com/art/Batman-and-Superman-64545242">View Image 2</a>
    <dl>
          <dt><img src="http://s3.buysellads.com/1252508/65529-1308680363.jpg"> Other text 3</dt>
          <dd>Stuff Here3</dd>

          <dt><img src="http://s3.buysellads.com/1252508/65529-1308680363.jpg"> Other text 4</dt>
          <dd>Stuff Here4</dd>
</div>

</div>

JS:

$(function() {

// Set up variables
var $el, $parentWrap, $otherWrap, $imgBig,
    $allTitles = $("dt").css({
        padding: 5, // setting the padding here prevents a weird situation, where it would start animating at 0 padding instead of 5
        "cursor": "pointer" // make it seem clickable
    }),
    $allCells = $("dd").css({
        position: "relative",
        top: -1,
        left: 0,
        display: "none" // info cells are just kicked off the page with CSS (for accessibility)
    });





// clicking image of inactive column just opens column, doesn't go to link   
$("#page-wrap").delegate("a.image","click", function(e) { 

    if ( !$(this).parent().hasClass("curCol") ) {         
        e.preventDefault(); 
        $(this).next().find('dt:first').click(); 
    } 


});

// clicking on titles does stuff
$("#page-wrap").delegate("dt", "click", function() {

    // cache this, as always, is good form
    $el = $(this);

    // if this is already the active cell, don't do anything
    if (!$el.hasClass("current")) {

        $parentWrap = $el.parent().parent();
        $otherWraps = $(".info-col").not($parentWrap);

        // remove current cell from selection of all cells
        $allTitles = $("dt").not(this);

        // close all info cells
        $allCells.slideUp();


        // return all titles (except current one) to normal size
        $allTitles.animate({
            fontSize: "14px",
            paddingTop: 5,
            paddingRight: 5,
            paddingBottom: 5,
            paddingLeft: 5
        });

        // animate current title to larger size            
        $el.animate({
            "font-size": "18px",
            paddingTop: 10,
            paddingRight: 15,
            paddingBottom: 0,
            paddingLeft: 10
        }).next().slideDown();

        // make the current column the large size
        $parentWrap.animate({
            width: 351
        }).addClass("curCol");

        // make other columns the small size
        $otherWraps.animate({
            width: 140
        }).removeClass("curCol");

        // make sure the correct column is current
        $allTitles.removeClass("current");
        $el.addClass("current");  

    }

});


$("#starter").trigger("click");

});

1 个答案:

答案 0 :(得分:0)

对我有用的答案是:

       $el.find('img').animate({         //enlarge image(s)
     width: 225
    }).parent().next().slideDown();


    $allTitles.find('img').animate({         //reduce image(s)
     width: 125
    }).parent().next().slideDown();