首页
学习
活动
专区
圈层
工具
发布

Bilibili banner 早中晚切换效果

博客地址:https://ainyi.com/101 Bilibili 官网冬季的 banner 图吸引了我,一开始是中午图,鼠标左移浮现早上图,右移浮现晚上图,挺有意思 [WechatIMG455.png...] 来实现一波 做之前先不要调试看 b 站的代码,自己先想想怎么实现,这样知识记得比较深 我们尽量使用 css 解决,js 弥补 分析层级、实现方法 比较明显的可以看到==早中晚三张22 33娘玩耍的图片...那么它们的层级关系可以这样定位: 早:不设置 z-index 中(包括雪球):z-index: 10 晚(包括窗口积雪):z-index: 20 对应早中晚的树木也应该是如此 重点:切换 鼠标移动过程中图片切换的效果...属性,默认为 0.5 而鼠标移动的距离,需要通过 js 计算 mouseenter、mousemove、mouseout 三个监听函数,动态计算出移动百分比,赋值到 --percentage 属性 图片的...5deg)); } .window-cover { z-index: 20; opacity: calc(var(--percentage) * (-2)); } } js

3.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    元素3D效果

    css中使用perspective属性来设置变形元素的景深,如果需要看到效果需要配合3d转换的相关属性才行 二、样例 我们来制作一个正方体 元素块重叠在一起了 接下来我们对class为item的div元素块进行一些空间的位移转换和旋转,我们再来看看效果 数值为1的div块,我们让他往屏幕前移动...150像素,不旋转,设置值如下 transform: translateZ(150px); 为了能看清楚效果,我们对class为box的元素设置如下属性 .box{ width: 300px;...3d空间展示,如果这项不设置,默认是flat,这是所有子元素平面展示,那就没有3d效果了 transition: 1s; } .box:hover{ transform: rotateX...至此,3d效果的正方体就制作完成了,当然还是有一些问题,比如3、4、5面的数值显示方向有误,主要是旋转方向的问题,我们调整一下 内容为3的元素设置如下 transform: translateZ(-150px

    91210

    用几行原生JS就可以实现丝滑的元素过渡效果!

    大家可以看下下面这个应用的页面切换体验,是不是很丝滑~ 做过体验优化的朋友应该都清楚,如果用原生的 CSS 或者 JS 动画去实现,想要实现出类似的效果,不会特别简单,而且也要考虑性能问题。...Shared Element Transitions 是一个新的 script 提案,它可以帮助我们在 SPA 或者 MPA 页面中实现元素过渡效果。...然后,你就拥有了一个非常丝滑的过渡效果。...,比如下面几点: 过渡的页面会失去动画效果:过渡的页面会被捕获为单个帧,如果被过渡的元素上有一些 gif 或者 CSS 动画,可能会失效。...共享元素过渡 你还可以指定一组特定的元素进行过渡,可以参考下面的效果(加了过渡状态的 preact 官网): 「https://preact-with-nav-transitions.netlify.app

    2.5K30

    js 实现元素拖拽

    概述 js 实现拖拽,主要使用元素的 onmousedown、onmousemove、onmouseup 三个事件实现。...1、onmousedown:鼠标按下事件 2、onmousemove:鼠标移动事件 3、onmouseup:鼠标抬起事件 实现思路 我们当左键点击时,需要记录当前的鼠标点击位置相对于该元素左上角的x,y...坐标,这里我们使用diffX和diffY来表示 然后我们移动时需要不断计算当前元素距离浏览器左边和上边的距离; 同时给元素进行赋值; 当鼠标抬起时,取消鼠标移动事件和鼠标抬起事件。...id="drag"> window.onload = function () { //获取drag元素...clientX 和 clientY 默认是以元素左上角位置来计算的,这里需要向左向上同时减去鼠标点击的位置差,从而可以保证鼠标始终显示在拖拽元素时的位置

    14.1K30

    js 实现元素拖拽

    用鼠标的位置减去盒子距离画布页面X,Y轴的距离就是鼠标在画布内的位置 e.pageY  获取鼠标Y轴距离页面的距离 e.pageX  获取鼠标X轴距离页面的距离 drag.offsetLeft  获取元素距离画布页面左侧距离...drag.offsetTop  获取元素距离画布页面上侧距离 获取鼠标按下后  移动时的坐标 用移动时的坐标减去 鼠标距离盒子内部的位置然后 重新给当前元素的坐标赋值 当鼠标事件抬起时 将拖拽事件清除...> window.onload = function () { //获取drag元素...let drag = document.getElementById("drag"); // 获取画布元素...clientX 和 clientY 默认是以元素左上角位置来计算的,这里需要向左向上同时减去鼠标点击时的偏移位置差,从而可以保证鼠标始终显示在拖拽元素时的位置

    3.5K00

    JS Element对象(元素对象)

    设置或者返回一个元素的语言element.lastChild返回元素的最后一个子元素element.namespaceURI返回命名空间的 URIelement.nextSibling返回指定元素之后的兄弟元素...返回距离该元素最近的进行过定位的父元素element.offsetTop返回元素在垂直方向的偏移量element.ownerDocument返回元素的根元素(文档对象)element.parentNode...设置或返回元素滚动条距离元素左侧的距离element.scrollTop设置或返回元素滚动条距离元素上方的距离element.scrollWidth返回元素的完整宽度(包括被滚动条隐蔽的部分)element.style...()比较当前元素与指定元素在文档中的位置,返回值如下:1:表示两个元素没有关系,不属于同一文档;2:表示当前元素在指定元素之后;4:当前元素在指定元素之前;8:当前元素在指定元素之内;16:指定元素在当前元素之内...element.isEqualNode()检查两个元素是否相等element.isSameNode()检查当前元素与指定元素是否为同一元素element.isSupported()判断当前元素是否支持某个特性

    23910

    原生js添加元素

    今天做页面使用的mui,因为使用mui情况下无法使用jquery,于是在ajax请求完毕添加元素的时候发现自己竟然对原生js添加元素的方法有点模糊了,真是越活越倒退了,赶紧整理一波。...首先最简单的innerHTML,这个不想多说,入门新手喜欢这么用,但他的缺点也很明显:不管你渲染部分还是全部,始终需要替换原先所有的子元素,也就是需要重复渲染,会增加浏览器压力。...接下来就是正题了,js推荐是这样进行元素添加: 1.创建游离元素节点:let div=document.createElement(“div”); 2.给创建元素添加属性:div.setAttribute...className”);注意setAttribute一次只能设置一条属性 3.创建文本节点:let textNode=document.createTextNode(“需要添加的文本”); 4.将文本节点添加到元素节点中...div.appendChild(textNode); 5.加元素节点插入文档:Parent.appendChild(div); over 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

    11.8K20
    领券