javascript - 从 css 类动画显示/隐藏

标签 javascript jquery html css

我是 JavaScript 和 jQuery 的新手,所以请多多关照。我正在尝试根据是否具有某个类来为多个 div 的显示/隐藏设置动画。

基本上,我正在为摄影师创建一个网站,并在顶部有一个带有过滤器列表的投资组合部分,每个 div 都有一个“投资组合元素”类以及它所在的所有类别的附加类,所以家庭/婚礼/ child /情侣。任何图像都可以有多个类。

我想要做的是点击家庭链接,它会隐藏任何没有家庭类的东西。如果我随后单击婚礼,它会关闭当前打开但没有婚礼类的所有内容,并打开当前关闭但其中包含婚礼类的所有内容。

我目前正在使用下面的代码,但这只会关闭所有内容,然后打开具有所需类的代码。另外,我不知道如何为其添加动画。

function portfolioItems(filter) {
 $(".portfolio-items").hide();
 $("."+filter).show(); }

function initEventHandlers () {
 $(".port-all").click(function () { 
    $(".portfolio-items").show();   
    return false;
 })
 $(".port-wedding").click(function () {
portfolioItems("wedding");
return false;
 })
 $(".port-family").click(function () {
portfolioItems("family");
return false;
 })
 $(".port-kids").click(function () {
portfolioItems("kids");
return false;
 })
 $(".port-couples").click(function () {
portfolioItems("couples");
return false;
 }) }

HTML 是...

    <div class="portfolio-container">
        <div class="portfolio-links">
            <a href="#"><img alt="All" class="port-all" src="images/port-all.png" /></a>
            <a href="#"><img alt="family" class="port-family" src="images/port-family.png" /></a>
            <a href="#"><img alt="wedding" class="port-wedding" src="images/port-wedding.png" /></a>
            <a href="#"><img alt="couples" class="port-couples" src="images/port-couples.png" /></a>
            <a href="#"><img alt="kids" class="port-kids" src="images/port-kids.png" /></a>
        </div>
        <div class="portfolio">
            <div class="portfolio-items wedding couples family"></div>
            <div class="portfolio-items kids"></div>
            <div class="portfolio-items wedding kids family"></div>
            <div class="portfolio-items couples"></div>
            <div class="portfolio-items couples kids family"></div>
            <div class="portfolio-items wedding"></div>
        </div>
    </div>

最佳答案

首先,您可以使用非选择器(look here!)来避免隐藏所有照片。只需为您的照片 block 分配两个类。像这样

    <div class="portfolio-items wedding"></div>
    <div class="portfolio-items family"></div>
    <div class="portfolio-items kids"></div>

然后你可以用这种方式重写你的portfolioItems函数

    function portfolioItems(filter) {
        $(".portfolio-items:not(."+filter+")").hide();
    }

其次,您可以创建一个通用函数来隐藏某些类别,但不会多次重复相同的代码。

关于javascript - 从 css 类动画显示/隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14387477/

相关文章:

javascript - 如何在 Javascript 中获取 `html` 元素?

jQuery 循环 + 最小超时

html - 从多个 HTML、CSS 中选择一个输入

html - 在 html 中,当子元素的父元素具有填充时,如何计算子元素的基于百分比的大小?

html - 新行上的 div

javascript - 在 DOM 中查找生日

Javascript 无法与 jQuery UI 一起使用

javascript - 显示/揭示内容

javascript - 使用js顺序添加div id和for属性

javascript - 如何在延迟后调用owlCarousel函数?