求问,有没有懂页面到一定位置透明度渐显div的全代码
只能做出一半,就是到一定位置div渐显,但是并不会改JS动画,div是先存在再从0-100透明
求问,有没有懂页面到一定位置透明度渐显div的全代码
只能做出一半,就是到一定位置div渐显,但是并不会改JS动画,div是先存在再从0-100透明
要在页面滚动到特定位置时实现一个div
的透明度渐变效果,你可以使用JavaScript(或jQuery)来监听滚动事件,并基于滚动位置来改变div
的样式。以下是一个基本的示例,展示如何使用原生JavaScript来实现这一效果:
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Div Opacity on Scroll</title>
<style>
body, html {
height: 100%;
margin: 0;
}
#targetDiv {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 200px;
height: 200px;
background-color: rgba(0, 0, 255, 0); /* Initially transparent */
transition: background-color 1s ease; /* Smooth transition */
}
</style>
</head>
<body>
<div id="content">
<!-- Your content here. Make it long enough to scroll. -->
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<!-- Repeat the above paragraph a few times to create a long page -->
</div>
<div id="targetDiv"></div>
<script>
window.addEventListener('scroll', function() {
var div = document.getElementById('targetDiv');
var content = document.getElementById('content');
if (window.pageYOffset >= content.offsetHeight - div.offsetHeight) {
// Change opacity when the div enters the viewport
div.style.backgroundColor = 'rgba(0, 0, 255, 1)'; // Opaque blue
} else {
// Reset opacity when the div leaves the viewport
div.style.backgroundColor = 'rgba(0, 0, 255, 0)'; // Transparent
}
});
</script>
</body>
</html>
在这个示例中:
#targetDiv
的初始背景颜色为完全透明(rgba(0, 0, 255, 0)
)。transition
属性为背景颜色的变化添加了平滑的过渡效果。#targetDiv
是否进入了视口。如果是,则将其背景颜色更改为不透明(rgba(0, 0, 255, 1)
);如果不是,则重置为透明。请注意,这个示例假设#targetDiv
应该在页面内容的底部出现。如果你希望div
在页面的不同位置出现,你可能需要调整if
语句中的条件来反映这一点。此外,你可能还需要考虑视口大小、窗口大小变化等因素。
opacity
属性设置为 0.当然如果透明度为 0 可以加一个 display:none;
直接不渲染。window.addEventListener('scroll', function () {
var el = document.getElementById('target')
var opacity = 0.33 // 这里根据不同条件进行透明度计算
if (opacity === 0) {
el.style.opacity = opacity
el.style.display = 'none'
} else {
el.style.opacity = opacity
}
})
可能您对前端不怎么了解,我就以你不了解的角度给你说一下。
您的需求应该不是直接从透明变成正常,所以会存在过度,而过度的话你需要在css里先进行设置,假代码如下;
<style>
.msg {
/* all的话意味着所有的css属性都应用该过度,现在如果你只是透明度的话,可以写`opacity `; 0.5s表示过度事件,ease则表示过度的动画曲线*/
transition: all 0.5s ease;
opacity: 0;
}
</style>
<div class="msg">message</div>
切记过度必须要先设置,因为如果你使用javascript来设置的话会没有过度效果。
比较麻烦的方式是监听scroll
事件,这个上面的朋友已经说了。如果不需要兼容的话,可以使用intersectionObserver
来进行监听,这个我无法在这里给你写一个例子,你可以到掘金等去搜索一下。
先获取DOM对象,再进行设置
// 获取DOM对象
let dom = document.querySelector("选择器");
// 修改css属性前面的 `dom.style`是固定的,它就是一个对象,您调用对象赋值
dom.style.opacity = 1;
4 回答1.4k 阅读✓ 已解决
2 回答1.6k 阅读✓ 已解决
4 回答1.6k 阅读
3 回答1.5k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答803 阅读✓ 已解决
3 回答914 阅读
刚好项目用到了 分享你一下
