Javascript 当其他元素出现或消失时,平滑更改HTML元素位置的通用方法
我对web开发没有足够的了解,无法判断我的问题是否已经得到了回答,因此,如果这是重复的,我深表歉意 我计划在我的网站上有很多不同的页面,所有页面的结构都不同,所有这些页面都需要在各种不同的屏幕大小上看起来合理。这些页面将包括和/或链接到代码,使各种内容位出现和消失。然而,在其中的一些页面上,我发现有太多的东西一下子出现和消失,读者对到底发生了什么变化感到困惑。为了解决这个问题,我想编写一些CSS或JS,以确保当元素的位置发生变化时,它能够平稳地移动到新的位置,而不是跳转到新的位置。希望这能帮助最终用户更好地理解内容是如何变化的 我目前正试图通过CSS使用一个应用于“position”属性的“transition”来实现这一点,但没有效果。代码如下:Javascript 当其他元素出现或消失时,平滑更改HTML元素位置的通用方法,javascript,css,Javascript,Css,我对web开发没有足够的了解,无法判断我的问题是否已经得到了回答,因此,如果这是重复的,我深表歉意 我计划在我的网站上有很多不同的页面,所有页面的结构都不同,所有这些页面都需要在各种不同的屏幕大小上看起来合理。这些页面将包括和/或链接到代码,使各种内容位出现和消失。然而,在其中的一些页面上,我发现有太多的东西一下子出现和消失,读者对到底发生了什么变化感到困惑。为了解决这个问题,我想编写一些CSS或JS,以确保当元素的位置发生变化时,它能够平稳地移动到新的位置,而不是跳转到新的位置。希望这能帮助最
功能切换可见性(elementId){
var element=document.getElementById(elementId);
如果(element.style.display==“无”){
element.style.display=null;
}否则{
element.style.display=“无”;
}
}
#lol{
位置:相对位置;
过渡:位置2s;
过渡时间函数:线性;
-webkit转换定时功能:线性;
}
标题
福
酒吧
英雄联盟
点击我
您需要定义元素的高度,auto
不会设置动画。另外,您不应该使用ID来设置对象的样式,最好使用类,这样您就不会有特殊性问题
下面是一个工作示例,我还添加了opacity
和overflow:hidden
以使项目消失:
功能切换可见性(elementId){
var element=document.getElementById(elementId);
元素.classList.toggle(“隐藏”);
}
.item{
位置:相对位置;
高度:20px;
溢出y:隐藏;
不透明度:1;
过渡:高度0.5s,不透明度0.3s;
过渡时间函数:线性;
-webkit转换定时功能:线性;
}
.隐藏{
身高:0;
不透明度:0;
}
标题
福
酒吧
英雄联盟
点击我
您需要定义元素的高度,auto
不会设置动画。另外,您不应该使用ID来设置对象的样式,最好使用类,这样您就不会有特殊性问题
下面是一个工作示例,我还添加了opacity
和overflow:hidden
以使项目消失:
功能切换可见性(elementId){
var element=document.getElementById(elementId);
元素.classList.toggle(“隐藏”);
}
.item{
位置:相对位置;
高度:20px;
溢出y:隐藏;
不透明度:1;
过渡:高度0.5s,不透明度0.3s;
过渡时间函数:线性;
-webkit转换定时功能:线性;
}
.隐藏{
身高:0;
不透明度:0;
}
标题
福
酒吧
英雄联盟
点击我
首先,根据W3C的规定,“显示”不是可设置动画的属性。因此,当您将显示
从块
更改为无
时,或者反之亦然,您无法设置此更改的动画。
但是为了实现您想要的是,您可以使用height
属性。隐藏元素时,需要将高度设置为0。再加上过渡,就可以了
此外,为了让您在整个应用程序中使用该类,请使用一个类,例如hidden
,并且无论何时您希望任何元素通过动画隐藏,都将该类添加到该类中。下面是一个相同的工作片段。
此外,为了使上述功能发挥作用,您需要为元素提供一些初始高度,因为过渡无法使用height:auto
功能切换可见性(elementId){
var element=document.getElementById(elementId);
如果(element.style.height==“0”){
element.classList.remove('hidden');
}否则{
element.classList.add('hidden');
}
}
div.hidden{
-moz过渡:高度0.8s;
-ms转换:高度0.8s;
-o型过渡:高度0.8s;
-webkit过渡:高度0.8s;
过渡:高度0.8s;
身高:0;
溢出:隐藏;
不透明度:0;
}
div{
高度:20px;
不透明度:1;
}
标题
福
酒吧
英雄联盟
点击我
首先,根据W3C的规定,“显示”不是可设置动画的属性。因此,当您将显示
从块
更改为无
时,或者反之亦然,您无法设置此更改的动画。
但是为了实现您想要的是,您可以使用height
属性。隐藏元素时,需要将高度设置为0。再加上过渡,就可以了
此外,为了让您在整个应用程序中使用该类,请使用一个类,例如hidden
,并且无论何时您希望任何元素通过动画隐藏,都将该类添加到该类中。下面是一个相同的工作片段。
此外,为了使上述功能发挥作用,您需要为元素提供一些初始高度,因为过渡无法使用height:auto
功能切换可见性(elementId){
var element=document.getElementById(elementId);
如果(element.style.height==“0”){
element.classList.remove('hidden');
}否则{
element.classList.add('hidden');
}
}
div.hidden{
-moz过渡:高度0.8s;
-ms转换:高度0.8s;
-o型过渡:高度0.8s;
-webkit过渡:高度0.8s;
过渡:高度0.8s;
身高:0;
溢出:隐藏;
不透明度:0;
}
div{
高度:20px;
不透明度:1;
}
标题
福
酒吧
英雄联盟
点击我
看起来很棒!看起来很棒!看起来很棒,我喜欢淡入/淡出效果:)看起来很棒,我看