HTML/JS 动画可折叠不起作用 - 如何解决问题

问题描述

我希望向下打开的动作和向上的动作一样是平滑的动画,但是不起作用。

JS

var arrow = document.getElementById("arrow");
var content = document.getElementById("content");
var arrow_icon = document.getElementById("arrow_icon");

function arrow_click() {
    content.style.display = (content.style.display == 'block') ? 'none' : 'block';
    //content.style.visibility = (content.style.visibility == 'visible') ? 'hidden' : 'visible';
    //content.style.opacity = (content.style.opacity == '100') ? '0' : '100';
   
    if (content.style.maxHeight){
        content.style.maxHeight = null;
    }
    else {
        content.style.maxHeight = content.scrollHeight + "px";
    }
   
    arrow_icon.className = (arrow_icon.className == "fa fa-angle-down") ? "fa fa-angle-up" : "fa fa-angle-down";
}

CSS

html{
    font-family:sans-serif;
}

.question_box{
    width:300px;
    border-radius:25px;
    background-color:#9DD36E;
    padding:25px;
    overflow: hidden;
    transition: max-height 0.2s ease-out;
    -moz-transition: max-height 0.2s ease-out; /* Firefox 4 */
    -webkit-transition: max-height 0.2s ease-out; /* Safari and Chrome */
    -o-transition: max-height 0.2s ease-out; /* Opera */
    -ms-transition: max-height 0.2s ease-out; /* Explorer 10 */
}

.question_div{
    text-align:center;
    margin-left:auto;
    margin-right:auto;
    margin-bottom:15px;
    font-size:30px;
    font-weight:bold;
}

.links_div{
    text-align:center;
    margin-left:auto;
    margin-right:auto;
    font-size:25px;
}

.answers_div{
    margin-top:15px;
    margin-left:10px;
    margin-right:10px;
    text-align:justify;
}

.content{
    display:none;
    //visibility:hidden;
    //opacity:0;
    max-height:0;
}

.arrow{
    margin-top:15px;
    text-align:center;
    font-weight:bold;
    font-size:45px;
}

HTML

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body><div class="question_box">    
   
    <div class="question_div collapsible">
        What is lorem ipsum?
    </div>
   
    <div id="content" class="content" style="display: none;">
        <div class="links_div">
            1,2,3       </div>
       
        <div class="answers_div">
        Lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.       </div>
    </div>

    <div id="arrow" class="arrow" onclick="arrow_click();">
        <i id="arrow_icon" class="fa fa-angle-down"></i>
    </div>
   
</div>  
   
</body></html>

问题解决于讨论

以上代码存在问题,通过修改后问题解决,请注意 display 与 opacity 的使用

HTML 添加慢速过渡

<div id="content" class="content" style="transition: all 0.3s;">
...
</div>

CSS 使用 opacity:0 而不是 display:none

.content{
    opacity:0;
    max-height:0;
}

JS 并使用此函数来更改不透明度和最大宽度

function arrow_click() {
    content.style.opacity = (content.style.opacity == '100') ? '0' : '100';
   
    if (content.style.maxHeight){
     content.style.maxHeight = 0+'px';
        }
    else {
        content.style.maxHeight = content.scrollHeight + "px";
    }
   
    arrow_icon.className = (arrow_icon.className == "fa fa-angle-down") ? "fa fa-angle-up" : "fa fa-angle-down";
}


文章来源地址https://www.toymoban.com/diary/web/295.html

到此这篇关于HTML/JS 动画可折叠不起作用 - 如何解决问题的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.toymoban.com/diary/web/295.html

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
上一篇 2023年08月25日 15:26
下一篇 2023年08月25日 16:30

相关文章

  • 解决在Android Studio中Lombok不起作用的问题

    笔者报错时的运行环境: Android Studio Flamingo | 2022.2.1 RC 1 Gradle 8.0.1 Lombok 1.18.26 JDK 17 Lombok 插件 0.34-2020.2 笔者在刚安装完的 Android Studio 中使用 Lombok 时,发现 Lombok 不起作用。具体遇到的问题有两个: Lombok 的注解在 Android Studio 中报红。 本来应该由 Lombok 生成的方法在 Android S

    2024年02月16日
    浏览(43)
  • html中的换行(\n)或回车(\r)符号不起作用的解决办法、br、white、space、pre、line

    如果您的 HTML 中的换行和回车符号( n 和 r )似乎不起作用,可能有几种可能的原因: 在 HTML 中,连续的空白字符(包括换行和回车符号)通常会被解释为单个空格。这是 HTML 的默认行为,旨在确保页面显示一致性和可读性。如果您希望在页面上实际显示换行,您需要使用

    2024年02月10日
    浏览(42)
  • vue项目为例解决element ui 时间选择器 picker使用样式穿透不起作用问题

    今天在开发中 需要修改时间选择器弹出的这个组件的样式 但这个东西比较坑爹 首先 不能影响其他组件 就是其他组件用了时间选择器 不能受到我们写的样式的影响 那么 就只好穿透了 但你会发现 这东西是作用与body下的 就很坑 穿透我试了挺久的 不起作用 但官方文档有提供

    2024年02月05日
    浏览(39)
  • 小程序页面传递布尔值不起作用的解决方法

    传参: 以下方式使用时不起作用或出现问题: 这种方式传参后isprincipal的值已为字符串‘true’。 需改成如下形式:

    2024年02月14日
    浏览(40)
  • 【Linux服务器】 .bashrc设置永久环境变量后不起作用的问题

            在使用vi打开.bashrc文件以后设置环境变量         然而发现设置了以后不起作用。这时候可以在终端界面使用export命令查看当前所有的PATH变量,我的情况是只出现了一条,别的都没有,这就说明在配置环境变量的过程中有一条配置语句将其他的PATH变量全部覆

    2024年02月02日
    浏览(47)
  • Windows 电源计划设置关闭显示器不起作用的解决方法

    在Windows 电源选项设置电源计划的“ 关闭显示器 ”触发时间后,发现 到达指定无操作时间后并不生效 。这可能是Windows系统不稳定缺陷导致。下面介绍解决方法: 1. 打开“注册表编辑器” (运行regedit.exe或搜索注册表编辑器)。 2. 定位到 计算机HKEY_LOCAL_MACHINESYSTEMCurrentC

    2024年02月09日
    浏览(74)
  • chrome 下 autocomplete=off (禁止记住密码)不起作用解决方案

    chrome 下 autocomplete=off (禁止记住密码)不起作用解决方案: 不知道是否是CHROME一个BUG,按说不应该,但事实它确实存在。 因时间关系,懒得查阅官方资料,这类问题解锁容易,思路如下: 初始化设置控件为只读模式,并委托一个单击事件。 当用用户需要时操作时,必须单击该

    2024年02月14日
    浏览(47)
  • 如何使用CSS实现一个带有动画效果的折叠面板(Accordion)?

    前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习平台。在这个

    2024年02月10日
    浏览(73)
  • 记一次飞鱼星路由器端口映射不起作用的解决记录

    说实话,这个问题当时确实搞的我非常的费解,具体如何且听我慢慢道来! 起初的故障原因为:台湾老总无法通过互联网访问苏州厂区的DVR(3台)。 起初解决方法:检查是否能到达公网路由并更换映射端口.(公网为联通) 尝试了以上的解决办法之后发现,路由是可达的,

    2024年02月07日
    浏览(32)
  • 【BUG解决】vscode debug python launch.json添加args不起作用

    为了带入参数调试python 程序,点击了ui界面右上角的debug按钮,配置了lauch.json文件。按照网上搜到的教程添加了 \\\"args\\\": 但是点击ui界面的debug按钮,发现配置的参数并不起作用。 原因: 在 vscode-python 项目的issue和issue里找到答案。 省流:ui界面右上角的debug按钮是一个扩展插件

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包