B站头部 鼠标移动 产生的视差效果

判断鼠标左右移动的距离 更改backgroundPositionX

<!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>
</head>
<style>
    * {
        padding: 0;
        margin: 0;
    }

    .head {
        width: 100%;
        height: 155px;
        /* background: url('./image/bilibili_head.png'); */
        background: url('http://i0.hdslb.com/bfs/archive/5d624c842e091447cf9b679d4cc6ae70d731ea06.png@3840w_360h_1c_90q');
        background-position-x: 0px;
    }
</style>

<body>
    <div class="head"></div>
</body>
<script>
    var header = document.querySelector('.head')
    //鼠标移入
    header.addEventListener('mouseover', function (event) {
        var event = event || window.event
        mouseNumOne = event.clientX
    })
    //鼠标移动
    header.addEventListener('mousemove', function (event) {
        var event = event || window.event
        mouseNumTwo = event.clientX;
        //鼠标移入后 鼠标左右移动的距离
        mouseNumThree = (mouseNumOne - mouseNumTwo) / 10
        header.style.backgroundPositionX = -mouseNumThree + 'px'
    })


    //鼠标移出--让背景图位置复原  即--backgroundPositionX--恢复为0
    header.addEventListener('mouseout', function (event) {
        var event = event || window.event
        //正数的话--
        if (mouseNumThree > 0) {
            var bgiMoveOne = setInterval(function () {
                mouseNumThree -= 3
                header.style.backgroundPositionX = -mouseNumThree + 'px'
                if(mouseNumThree<=0){
                    clearInterval(bgiMoveOne)
                }
            }, 5)
        }
        // 负数的话++
        if (mouseNumThree < 0) {
            var bgiMoveTwo = setInterval(function () {
                mouseNumThree += 3
                header.style.backgroundPositionX = -mouseNumThree + 'px'
                if(mouseNumThree>=0){
                    clearInterval(bgiMoveTwo)
                }
            }, 5)
        }
        header.style.backgroundPositionX = 0 + 'px'
    })
</script>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要准备一张背景图片,并将其设置为页面背景。 然后,创建一个容器元素,用于包含需要倾斜的图片。 接着,使用CSS3的transform属性对该容器元素进行倾斜变换。可以使用rotateX()或rotateY()函数来实现。 最后,使用CSS3的hover伪类选择器,对鼠标移动事件进行响应,通过改变容器元素的transform属性值,实现视差效果。 以下是示例代码: HTML: ``` <body> <div class="container"> <img src="image.jpg" alt="image"> </div> </body> ``` CSS: ``` body { background-image: url(background.jpg); background-size: cover; background-position: center; } .container { width: 300px; height: 300px; margin: 50px auto; perspective: 1000px; transform-style: preserve-3d; transition: transform 0.5s ease-out; } .container:hover { transform: rotateY(10deg) rotateX(-10deg); } img { width: 100%; height: 100%; object-fit: cover; transform: translateZ(150px); } ``` 解释一下代码: 1. 设置页面背景为一张背景图片,使用background-image属性。 2. 创建一个宽高为300px的容器元素,并将其居中对齐。使用perspective属性为容器元素设置透视距离,使其有3D效果。使用transform-style属性设置元素的transform属性应用于其子元素。使用transition属性为容器元素的transform属性设置动画效果。 3. 使用:hover伪类选择器,对容器元素鼠标移动事件进行响应。使用rotateY()和rotateX()函数改变容器元素的transform属性值,实现倾斜效果。 4. 在容器元素内部添加一个img元素,并将其设置为100%宽高的图片,使用object-fit属性使图片填充整个容器元素。使用translateZ()函数将图片推向远离用户的位置,使其在3D空间中呈现出合适的位置。 效果如下图所示: ![视差图片倾斜特效](https://cdn.jsdelivr.net/gh/1071942338/picgo-repo/img/20210918165954.png)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值