我正在创建一个网站,并且试图创建一个按钮来切换div元素的可见性。它现在对我有效,但是我想向其中添加动画,但我无法将其拉开。
我尝试将"block"
更改为fadeIn()
,将"none"
更改为fadeOut()
,但这没用。
有什么想法吗?
function pcsh1() {
var x = document.getElementById("pc1");
if (x.style.display === "none") {
x.style.display = "block";
} else {
x.style.display = "none";
}
}
<button onclick="pcsh1()">Show / Hide PC 1</button>
<div id="pc1">
<textarea rows="2" cols="20" placeholder="PC Name" class="pcbox">PC Name: </textarea>
<textarea rows="2" cols="20" placeholder="Alignment" class="pcbox">Alignment: </textarea>
<textarea rows="2" cols="20" placeholder="Max HP" class="pcbox">Max HP: </textarea>
<textarea rows="2" cols="20" placeholder="Current HP" class="pcbox">Current HP: </textarea>
</div>
目前的输出效果很好,但我希望它具有动画效果。
答案 0 :(得分:3)
您可以使用CSS transition
规则,并使用JavaScript在目标元素上切换CSS类。 transition
将允许您更改一个元素的一个或多个CSS规则。
Transitions使您可以定义元素的两种状态之间的过渡...
这是一个例子
var btn = document.getElementsByTagName('button')[0]
var p = document.getElementsByTagName('p')[0]
btn.addEventListener('click', evt => {
p.classList.toggle('show')
})
.show {
opacity: 1;
}
p {
opacity: 0;
transition: opacity 0.6s linear;
}
<button>Click Me</button>
<p>Hello</p>
以您的示例为例,您可以这样做:
var btn = document.getElementsByTagName('button')[0];
var pc1 = document.getElementById('pc1');
btn.addEventListener('click', function() {
pc1.classList.toggle('hide');
});
#pc1 {
opacity: 1;
transition: opacity 0.5s linear;
}
#pc1.hide {
opacity: 0;
}
<button>Show / Hide PC 1</button>
<div id="pc1">
<textarea rows="2" cols="20" placeholder="PC Name" class="pcbox">PC Name: </textarea>
<textarea rows="2" cols="20" placeholder="Alignment" class="pcbox">Alignment: </textarea>
<textarea rows="2" cols="20" placeholder="Max HP" class="pcbox">Max HP: </textarea>
<textarea rows="2" cols="20" placeholder="Current HP" class="pcbox">Current HP: </textarea>
</div>
答案 1 :(得分:2)
我建议使用动画友好型不透明度道具来切换隐藏/显示,而不是按照以下方式显示:
function pcsh1() {
var x = document.getElementById("pc1");
if (x.classList.contains("hide")) {
x.classList.remove("hide");
} else {
x.classList.add("hide");
}
}
并添加CSS过渡:
#pc1 {
opacity: 1;
transition: opacity 1s;
}
#pc1.hide {
opacity: 0;
}
这是一个示例代码笔: https://codepen.io/mikeCky/pen/WWjLEq
答案 2 :(得分:0)
fadeIn()和fadeOut()是JQuery函数。根据您发布的代码,您没有使用JQuery。您可以通过一些基本选项来做自己想做的事情:
答案 3 :(得分:0)
简单使用切换类代替显示块。然后按y轴比例将元素隐藏为0。这是您的代码:
function pcsh1() {
var x = document.getElementById("pc1");
x.classlist.toggle('is-show');
}
还有您的CSS:
#pc1 {
transform: scaleY(0);
transition: transform 400ms ease 0ms;
}
#pc1.is-show {
transform: scaleY(1);
transition: transform 400ms ease 0ms;
}