先做一个简单的HTML页面,页面里只有一个div和一段文字。
02要添加整个页面的背景图片,我们就只能把背景加到body标签里了,所以我们在body里添加一个样式,叫‘bg’
03然后定义这个bg的样式规则,主要就是添加background-image样式,就是添加背景图。
background-repeat是让背景图铺满整个页面。
04看下页面的效果,可以看到现在整个页面都铺满了蝴蝶这张图片了。为了更好的效果,大家可以更换一张更好看的背景图。
1、给body添加背景图,在body中添加一个父盒子(父盒子开启绝对定位),父盒子中再添加一个子盒子。
2、给window添加鼠标移动事件,根据鼠标在浏览器中的坐标(clientX和clientY)修改父盒子的top和left,以达到移动镜面的效果。
3、给子盒子添加背景图(和body背景图一致),在window的鼠标移动事件中修改子盒子的样式——background-position,改变子盒子中的背景图在盒子中的显示位置,使背景图的显示与body一致。
4、再给子盒子添加缩放(transform:scale(2)),即可实现放大功能。
1、由于背景图无法设置透明度,所以使用body的伪元素,给伪元素添加背景图和opacity属性。
2、这时虽然给背景设置上了透明的,但却是发白的那种透明,要想变成暗沉的透明,只需要给body添加背景颜色就行。
3、background-position的使用,由于是要将背景的选中位置移动到盒子的中心,所以使用的是负值。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
padding: 0
background-color: #000
margin: 0
}
body::after{
display: block
position: absolute
top: 0
left: 0
content: ''
width: 100%
height: 100%
background-image: url('伊芙琳.jpg')
background-position: 0px 0px
background-size: 100% auto
opacity: 0.1
}
.magnifier {
width: 300px
height: 300px
background-image: url('伊芙琳.jpg')
background-size: 1730px auto
background-position: 0px 0px
transform: scale(2)
margin: 0
position: relative
z-index: 100
}
.main {
width: 300px
height: 300px
border-radius: 50%
overflow: hidden
position: absolute
}
</style>
</head>
<body>
<div class="main">
<div class="magnifier"></div>
</div>
<script>
let flag = true
let magnifier = document.getElementsByClassName('magnifier')[0]
let main = document.getElementsByClassName('main')[0]
let boxLeft = 0
let boxTop = 0
window.onmousemove = (event) => {
if(!flag) return
setTimeout( ()=>{
flag = true
},50)
console.log(event.clientX, event.clientY)
if(event.clientX > 1590) {
event.clientX = 1590
}
boxLeft = event.clientX > 1590 ? '1440px' : event.clientX > 150 ? event.clientX - 150 + 'px':'0px'
boxTop = event.clientY > 720 ? '575px' : event.clientY > 150 ? event.clientY - 150 + 'px':'0px'
main.style.left = boxLeft
main.style.top = boxTop
// magnifier.style.backgroundPosition = '830px 570px'
magnifier.style.backgroundPosition = '-' + boxLeft + ' ' + '-' + boxTop
flag = false
}
</script>
</body>
</html>
body {background:url(bg.jpg) top center no-repeatbackground-size:cover}这样的话背景图片就会填充整个屏幕了
不过要说明的是,这是一个CSS3的属性,在很多浏览器里面都是不被支持的,你所希望的效果,目前来看,只有这个属性可以做到,否则就只能用一个足够大的图片做背景的方法来实现了。
另外 background-size:cover还可以替换成 background-size:contain使用cover的意思是把背景图片充满整个容器,而不考虑是不是可以看到完整的图片;使用contain的意思是在容器里完整显示图片,而不考虑容器是否被填满。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)