阅读纯JavaScript的更多链接
我试图创建一个简单的阅读更多的例子。它由一个段落和一个按钮组成,其中段落的一半包含在跨度标记中,跨度标记最初设置为隐藏。当用户单击“阅读更多”按钮时,隐藏的范围显示出来。我已经有了工作代码,但只想使用纯Javascript实现类似JQuery的淡入效果。任何人都请帮忙阅读纯JavaScript的更多链接,javascript,html,css,fadein,Javascript,Html,Css,Fadein,我试图创建一个简单的阅读更多的例子。它由一个段落和一个按钮组成,其中段落的一半包含在跨度标记中,跨度标记最初设置为隐藏。当用户单击“阅读更多”按钮时,隐藏的范围显示出来。我已经有了工作代码,但只想使用纯Javascript实现类似JQuery的淡入效果。任何人都请帮忙 var span=document.getElementsByTagName('span')[0]; var hideshow=document.getElementById('hideshow'); span.style.di
var span=document.getElementsByTagName('span')[0];
var hideshow=document.getElementById('hideshow');
span.style.display='none';
hideshow.onclick=函数(){
span.style.display='block';
};代码>
Lorem ipsum door sit amet,Concertetur adipising elit。伊普萨·梅奥雷斯·多洛雷·杜西姆斯·莫莱斯蒂,aut。消费者权益、医疗保健、医疗保健以及类似于静脉输液、胎动的医疗保健
从这里开始阅读更多信息
span.style.opacity = 0;
您需要逐渐将不透明度转换为此处
span.style.opacity = 1;
您需要使用异步构造(setTimeout
/setInterval
/requestAnimationFrame
)进行迭代,因为同步构造(while
/for
/for in
/forEach
)将阻止主线程,阻止浏览器使用更新的不透明度实际渲染元素
function fadeIn(element) {
function transition() {
if(element.style.opacity < 1) {
requestAnimationFrame(transition);
element.style.opacity = Number(element.style.opacity) + 0.05;
}
}
transition();
}
确保元素在到达DOM时具有out
类,然后当您准备淡入时,将其替换为in
类,浏览器将为您处理动画。一种方法是使用a转换元素的不透明度
在下面的示例中,单击按钮时,类淡入
将添加到子span
元素中
var-button=document.querySelector('.readmore');
按钮。addEventListener('click',函数(事件){
var span=event.target.previousElementSibling.querySelector('span');
span.classList.add('fade-in');
});代码>
。显示更多span{
显示:内联块;
身高:0;
溢出:隐藏;
过渡:不透明度2s;
不透明度:0;
}
.显示更多span.淡入{
高度:自动;
不透明度:1;
}
Lorem ipsum Door sit amet,继续向精英致敬。伊普萨·梅奥雷斯·多洛雷·杜西姆斯·莫莱斯蒂,aut。消费者权益、医疗保健、医疗保健以及类似于静脉输液、胎动的医疗保健
阅读更多信息
var duration=2000;//微秒级
document.getElementById('hideshow')。onclick=()=>{
requestAnimationFrame((开始时间)=>{
变量anim=(时间)=>{
var p=(时间-开始时间)/持续时间;
(p<1)和&requestAnimationFrame(anim);
span.style.opacity=1-p;
}
动画(开始时间);
})
}
您必须创建一个循环或间隔,并将可选性从0逐渐增加到1。纯js中没有现成的函数。Justy尝试了这个,但没有成功。任何想法span.style.opacity='0';hideshow.onclick=Show;函数Show(){for(var i=0;我感谢@Josh CrozierCode dump。没有帮助
.out {
opacity: 0;
transition-duration: 0.5s;
}
.in {
opacity: 1;
transition-duration: 0.5s;
}
var duration = 2000; // msecs
document.getElementById('hideshow').onclick = () => {
requestAnimationFrame((start_time) => {
var anim = (time) => {
var p = (time - start_time) / duration;
(p < 1) && requestAnimationFrame(anim);
span.style.opacity = 1 - p;
}
anim(start_time);
})
}