我在一个div里放了一张图片
css上写个position:relative, 然后在js代码上只用写daShen.style.top = 5 + 'px'控制距离即可,
如果要有过渡效果,需要在css上加个 transition: all 1.5s linear ; 这句话表示所有属性过渡时间为1.5s,全程匀速
我们应该知道块级标签是单独占一行,如我们熟悉的div标签,那么怎样才能使多个div标签在一行中显示呢?
可能出现的问题是没有给图片设置相应的CSS属性,也没有写对应的JavaScript代码来实现动态效果。
解决方法一:
1.在CSS中为图片设定初始状态(例如opacity为0或者display为none)。
2.用JavaScript选择对应的div和图片元素,添加鼠标悬浮事件监听器。
3.在监听器函数中,用元素.style修改图片的CSS属性,使其达到动态效果。
示例代码如下:
<div id="myDiv">
<img id="myImg" src="example.jpg">
</div>
<style>
#myImg {
opacity: 0;
transition: opacity 0.5s ease;
}
#myDiv:hover #myImg {
opacity: 1;
}
</style>
<script>
const myDiv = document.getElementById('myDiv');
const myImg = document.getElementById('myImg');
myDiv.addEventListener('mouseenter', () => {
myImg.style.opacity = '1';
});
myDiv.addEventListener('mouseleave', () => {
myImg.style.opacity = '0';
});
</script>
解决方法二:
1.在CSS中为图片设定初始状态(例如opacity为0或者display为none)。
2.用JavaScript选择对应的div和图片元素,添加鼠标悬浮事件监听器。
3.在监听器函数中,用元素.classList来切换一个包含动态效果的CSS类。
示例代码如下:
<div id="myDiv">
<img id="myImg" src="example.jpg">
</div>
<style>
#myImg {
opacity: 0;
transition: opacity 0.5s ease;
}
.show {
opacity: 1;
}
</style>
<script>
const myDiv = document.getElementById('myDiv');
const myImg = document.getElementById('myImg');
myDiv.addEventListener('mouseenter', () => {
myImg.classList.add('show');
});
myDiv.addEventListener('mouseleave', () => {
myImg.classList.remove('show');
});
</script>
上述代码中的事件监听器函数使用了箭头函数,如需兼容低版本浏览器,可改为function关键字定义函数。