javascript - 我需要帮助使用 jquery 创建 4 个可折叠面板

标签 javascript jquery html css panels

<分区>


这个问题似乎离题,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a minimal example在问题本身。

关闭 9 年前

我对 jquery 场景完全陌生,所以在尝试解决这个问题时遇到了一些麻烦。我的问题是:
我正在为一个元素创建一个网站,该网站基于一个正方形(700 像素 x 700 像素),该正方形被分成 4 个较小的正方形 - 全部为 350 像素 x 350 像素。 我想要做的是让这些较小的方 block 中的每一个都有一个面板覆盖它们,当点击时,移开以显示它们后面的内容。左边的两个面板会向左滑动消失,右边的两个会向右滑动消失。
如果可能的话,我希望一次只消失一个面板。因此,当点击一个新面板时,前一个面板会滑回原位,再次隐藏其内容。

如有任何帮助,我们将不胜感激!

最佳答案

有很多方法可以完成您感兴趣的事情。CSS 过渡已经提到过。我已经包含了一个工作示例,但它非常基本 - 它应该让您朝着正确的方向前进。请查看下面的链接 - 它们提供了很多重要信息。

如果你有四个元素,而封面的主要功能只是覆盖,你可以使用:after(或:before)CSS pseudo-elements .如果您的面板是 li 元素,HTML 标记可能如下所示:

<ul>
    <li id="panelOne">One</li>
    <li id="panelTwo">Two</li>
    <li id="panelThree">Three</li>
    <li id="panelFour">Four</li>
</ul>

由于封面仅用于隐藏您的四个面板,并且它们是伪元素,因此您需要在 CSS 中设置它们的样式。您可以从设置 HTML 元素的样式开始:

ul {
    display: block;
    background: black;
    width: 700px;
    height: 700px;
    margin: 0 auto;
}
li {
    float: left;
    position: relative;
    background: white;
    border: 1px solid black;
    width: 350px;
    height: 350px;
}

然后为您的 :after 封面设置样式:

li:after {
    display: block;
    /*the background color is just to make the covers more visible */
    background: red;
    position: absolute;
    top: 0;
    left: 0;
    width: 350px;
    height: 350px;
    content: "";
}

如果你use jQuery to add a class (例如,“.clicked”)一次到一个面板,您需要设置 .clicked 伪元素的样式,以便它们向左或向右移动:

li#panelOne.clicked:after, li#panelThree.clicked:after {
  -webkit-transform: translateX(-350px);
  -moz-transform:    translateX(-350px);
  -ms-transform:     translateX(-350px);
  -o-transform:      translateX(-350px);
  transform:         translateX(-350px);
}
li#panelTwo.clicked:after, li#panelFour.clicked:after {
  -webkit-transform: translateX(350px);
  -moz-transform:    translateX(350px);
  -ms-transform:     translateX(350px);
  -o-transform:      translateX(350px);
  transform:         translateX(350px);
}

并使用 jQuery 添加或删除类:

$( 'li' ).click(function(){
    //first remove the class from ALL panels
    $( 'li' ).removeClass( 'clicked' );
    //then add to the panel that's been clicked
    $(this).addClass( 'clicked' );
});

还有一步:由于您希望封面向左或向右滑动,因此您需要添加 CSS transitions实现这一目标。您可以将它们放在 :after 伪元素样式中:

-webkit-transition: -webkit-transform 500ms ease-out 0s;
-moz-transition: -moz-transform 500ms ease-out 0s;
-o-transition: -o-transform 500ms ease-out 0s;
transition: transform 500ms ease-out 0s;

这是在 jsfiddle 中的样子:http://jsfiddle.net/rt9d5/10/embedded/result/

关于javascript - 我需要帮助使用 jquery 创建 4 个可折叠面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23347851/

上一篇:javascript - 如何让我的 div 单独处理?

下一篇:php - HTML 到 Wordpress : Add category block over featured image

相关文章:

javascript - Jquery 淡入淡出

javascript - 如何在 signalR 中实现 "on"方法?

javascript - 如何将文本行分解为 Javascript confirm()?

html - 光标 :pointer on hover html5 canvas element

javascript - 获取对象属性?

javascript - React-Bootstrap 水平表单不起作用

javascript - jQuery 查找并替换类名部分的所有实例

javascript - 使用 jquery 在页面上查找具有特定文件名的图像

javascript - 使用 cordova 社交共享插件发送带有变量的短信

javascript - 我应该在 head 标记中还是在文档末尾包含脚本?