1

所以基本上我想要实现的是,

  • 当人们点击第一张图片时,其余的会滑动和淡出,然后内容加载,
  • 当人们关闭时,它将恢复为 4 个图像,
  • 当人们点击第二张图片时;图像 1、3 和 4 将滑动并淡出,内容显示等等。

我尝试使用 Jquery,但结果仍然为零。

这是链接: http ://homethai.com.au/testing/test.swf

4

2 回答 2

0

是的当然。

设置是:

  1. 绝对将每个元素放置在正确的位置。
  2. 创建一个名为的类.leftOffscreen,将 left 设置为 -100px,并将.rightOffscreen其设置为您想要的任何最大值。(一旦它开始工作,尽可能使用转换而不是左/右,因为它将在某些浏览器上进行硬件加速,因此性能更高)
  3. 为每个图像添加 CSS 过渡。

算法:

  1. 单击时,使用.index()查找您的图像。
  2. 使用.each()遍历图像。如果它们的索引小于点击的索引,则添加类leftOffscreen,如果它们大于,则添加rightOffscreen
  3. 单击 x 时,从所有图像中删除这些类。
于 2012-07-08T08:17:26.203 回答
0

这(经过一些试验和错误)实际上主要通过 CSS 实现,纯 JavaScript 仅用于切换类名(当单击一个块和单击关闭链接时)。

如果.block.active在 CSS 中替换为,.block:hover以便每个块在悬停时展开,并且关闭链接(和样式)被删除,那么根本不需要 JS。

HTML:

<div class="block">
    <div class="closelink">X</div>
</div>
<div class="block">
    <div class="closelink">X</div>
</div>
<div class="block">
    <div class="closelink">X</div>
</div>
<div class="block">
    <div class="closelink">X</div>
</div>

CSS:

body {
    text-align: center
}
.block {
    display: inline-block;
    position: relative;
    width: 60px;
    height: 60px;
    background: #08f;
    margin: 50px;
    cursor: pointer;
    border-radius: 8px;
    -moz-border-radius: 8px;
    -webkit-border-radius: 8px;
    transition: margin 1s;
    -moz-transition: margin 1s;
    -webkit-transition: margin 1s;
    -o-transition: margin 1s;
    -ms-transition: margin 1s;
    user-select: none;
    -moz-user-select: none;
    -webkit-user-select: none
}
.block .closelink {
    position: absolute;
    width: 20px;
    height: 20px;
    right: -20px;
    top: -20px;
    visibility: hidden;
    font-size: 14px;
    font-family: Segoe UI, Tahoma, Arial, Verdana, sans-serif;
    background: #ccc;
    border-radius: 4px;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px
}
.block.active {
    margin-left: 200px;
    margin-right: 200px
}
.block.active .closelink {
    visibility: visible
}

JavaScript:

window.addEventListener('load', init, false);
function init() {
    var blocks = document.getElementsByClassName('block');
    var closeLinks = document.getElementsByClassName('closelink');
    for(i = 0; i < blocks.length; i++) {
        blocks[i].addEventListener('click', blockClicked, false);
    }
    for(i = 0; i < closeLinks.length; i++) {
        closeLinks[i].addEventListener('click', closeLinkClicked, false);
    }
}
function blockClicked(e) {
    var blocks = document.getElementsByClassName('block');
    for(i = 0; i < blocks.length; i++) {
        blocks[i].className = 'block';
    }
    e.target.className = 'block active';
}
function closeLinkClicked(e) {
    e.stopPropagation();
    e.target.parentElement.className = 'block';
}
于 2012-07-08T09:44:43.567 回答