如何包含内联javascript'样式'更改的过渡?

问题描述 投票:0回答:1

我的代码根据用户单击的按钮显示和隐藏div,由简单的myElement.style.display = 'none';语句实现。

当显示/隐藏这些div时可以使用过渡吗?即当单击button-1时,与button-1相关的文本逐渐淡化into视图;单击按钮2时,与按钮2相关的文本会淡入视图,因为前一个按钮1文本淡出

照原样,div在视图中捕捉和显示。我正在寻找一个更平滑的过渡。

我已尝试使用注释掉的代码进行尝试。就是行不通。任何提示都非常感谢,谢谢。

JS

 var visibleDivId = null;

function divVisibility(divId) {
  if(visibleDivId === divId) {
    visibleDivId = null;
  } else {
    visibleDivId = divId;
  }
  hideNonVisibleDivs();
}

function hideNonVisibleDivs() {
  var i, divId, div;
  for(i = 0; i < divs.length; i++) {
    divId = divs[i];
    respoding_div = document.getElementById(divId);
    if(visibleDivId == divId) {
      respoding_div.style.display = 'block';
      // respoding_div.style.transition = 'display 0.3s ease-in block'
    }
    else {
      respoding_div.style.display = 'none';
      // respoding_div.style.transition = 'display 0.3s ease-in none'
    }
  }
}

HTML

<!DOCTYPE html>
<html>
    <head>

    <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
        <link rel="stylesheet" type="text/css" href="style.css">
    </head>

<body>

<div class="container" style="text-align:center; margin:0 auto;">


    <div class="card-container" style="margin:0 auto; width:50%; display: flex; align-items: center; justify-content: center; padding-bottom:10px;">

        <div class='accordion' onclick="divVisibility('Core1');">
            <img src='https://img.icons8.com/dotty/2x/external-link-squared.png' width="50px">Button-1
        </div>

        <div class='accordion' onclick="divVisibility('Core2');">
            <img src='https://img.icons8.com/dotty/2x/globe-earth.png' width="50px">Button-2
        </div>

        <div class='accordion' onclick="divVisibility('Core3');">
            <img src='https://img.icons8.com/dotty/2x/torrent.png' width="50px">Button-3
        </div>

    </div>

    <div class="all_divs">
        <div id="Core1" class="subdiv" style="display:none;">TEXT #1</div>
        <div id="Core2" class="subdiv" style="display:none;">TEXT #2</div>
        <div id="Core3" class="subdiv" style="display:none;">TEXT #3</div>
    </div>
</div>

</div>

</body>
</html>

CSS

body{
  font-family: "IBM Plex Sans", sans-serif;
    }

.accordion {
    cursor: pointer;
    border: none;
    text-align: center;
    outline: none;
    font-size: 15px;
    padding-left:100px;
    padding-right:100px;
    padding-top: 20px;
    width: 80px;
}

.accordion:hover {
    opacity: 0.7;
}

.accordion img {
    width: 50px;
    margin: 0 auto;
}

.all_divs > div {
    color: #232f3e;
    width: 95%;
    text-align: center;
    background-color:#fafafa;
    position: absolute;
    padding:2%;
    border-top: 2px solid #e6e7e8;
}

h1{
    font-weight: lighter;
    color: #232f3e;
}

td{
    padding: 2%;
}
javascript css-transitions
1个回答
0
投票

不是因为语法或JS中的错误而无法工作,而是因为display属性无法从状态转换为另一状态。您可以使用opacity

© www.soinside.com 2019 - 2024. All rights reserved.