jQuery div展开/折叠

时间:2013-04-13 08:12:58

标签: jquery jquery-ui

看一下以下示例:

http://jsfiddle.net/EWJGJ/13/

我想以下列方式自定义此示例:

  1. 给出div的扩展应该发生在点击而不是鼠标悬停。目前它是鼠标悬停。

  2. 点击的div应该在所有div上展开。也就是说,在上面的链接中,有9个div。如果我点击任何一个div,它应该扩展到所有div。

  3. 应该切换行为。如果我再次单击展开的div,它应缩小到原始位置并使其他div可见。

  4. 任何示例代码或链接都非常有用。我基本上试图创建具有这种行为的基于Windows 8样式的基于tile的界面。

    代码

    HTML:

    <table cellpadding="0" cellspacing="0" border="0" class="tabellainizio" align="center">
      <tr>
        <td><table cellpadding="0" cellspacing="1" border="0">
          <tr>
            <td class="bordini">
            <div class="principale">
                <div class="contenitore">
                    <div class="immagine">[immagine]</div>
                    <div class="content">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</div>
                </div>
            </div>
            </td>
            <td class="bordini">
            <div class="principale">
                <div class="contenitore">
                    <div class="immagine">[immagine]</div>
                    <div class="content">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</div>
                </div>
            </div>
            </td>
            <td class="bordini">
            <div class="principale">
                <div class="contenitore">
                    <div class="immagine">[immagine]</div>
                    <div class="content">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</div>
                </div>
            </div>
            </td>
          </tr>
          <tr>
            <td class="bordini">
            <div class="principale">
                <div class="contenitore">
                    <div class="immagine">[immagine]</div>
                    <div class="content">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</div>
                </div>
            </div>
            </td>
            <td class="bordini">
            <div class="principale">
                <div class="contenitore">
                    <div class="immagine">[immagine]</div>
                    <div class="content">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</div>
                </div>
            </div>
            </td>
            <td class="bordini">
            <div class="principale">
                <div class="contenitore">
                    <div class="immagine">[immagine]</div>
                    <div class="content">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</div>
                </div>
            </div>
            </td>
          </tr>
          <tr>
            <td class="bordini">
            <div class="principale">
                <div class="contenitore">
                    <div class="immagine">[immagine]</div>
                    <div class="content">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</div>
                </div>
            </div>
            </td>
            <td class="bordini">
            <div class="principale">
                <div class="contenitore">
                    <div class="immagine">[immagine]</div>
                    <div class="content">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</div>
                </div>
            </div>
            </td>
            <td class="bordini">
            <div class="principale">
                <div class="contenitore">
                    <div class="immagine">[immagine]</div>
                    <div class="content">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</div>
                </div>
            </div>
            </td>
          </tr>
        </table></td>
      </tr>
    </table>   
    

    使用Javascript:

        $(window).load(function(){
    $('.contenitore').hover(function() {
        $(this).animate({
            width: 300,
            height: 400,
            top: -80,
            left: -45
        }, 'fast');
        $(this).animate().css('box-shadow', '0 0 5px #000');
        $(this).css({
            zIndex: 100 
        });
    }, function() {
        $(this).animate().css('box-shadow', 'none')
        $(this).animate({
            width: 210,
            height: 240,
            top: 0,
            left: 0
        }, 'fast');
        $(this).css({
            zIndex: 1
        });
    });
    });
    

    CSS:

    .tabellainizio {
        margin-top:100px;
    }
    .bordini {
        border: 1px #DDD solid;
    }
    .principale {
        height: 240px;
        width: 210px;
        position: relative;
    }
    .principale .contenitore {
        background-color: #fff;
        height: 240px;
        width: 210px;
        position: absolute;
        display: block;
        top: 0;
        left: 0;
    }
    .immagine {
        border: 1px solid maroon;
        margin: 15px auto;
        height: 168px;
        width: 168px;
        position:relative;
    }
    .content {
        display: none;
        margin: 15px;
    }
    .contenitore:hover {
    
    }
    .contenitore:hover .content {
        display: block;
    }
    .contenitore:hover .immagine {
        position:relative;
    }
    

1 个答案:

答案 0 :(得分:1)

hover替换为toggle,获取所点击元素的索引父母td - &gt;列号和tr - &gt;对于行号,将点击的元素移动到左上角:

$(window).load(function () {
    $('.contenitore').toggle(function () {

        $(this).css({
            'box-shadow': '0 0 5px #000',
            zIndex: 100
        }).animate({
            width: 212 * 3,
            height: 242 * 3,
            top: 0 - ($(this).parents('tr').index() * 242),
            left: 0 - ($(this).parents('td').index() * 212)
        }, 'fast');
    }, function () {

        $(this).animate({
            width: 210,
            height: 240,
            top: 0,
            left: 0
        }, 'fast', function () {
            $(this).css({
                zIndex: 1,
                'box-shadow': 'none'
            });
        });
    });
});

jsfiddle

相关问题