最近,B 站首页 banner 图片会跟随着鼠标的移动而进行变化,类似于相机镜头聚焦的场景虚化效果,很多玩 B 站的小伙伴应该都留意到了吧。猪猪也想实现 banner 背景随鼠标移动而虚化的效果呢。作为一名过气爬虫程序媛,网页分析能力还是有一丢丢的。

扒 B 站源码

在 Google Chrome 打开 Bilibili 站首页,右键点击检查或按 F12 打开开发者工具,定位 B 站 banner 的网页源码位置。获取 banner 网页源代码如下。

<div class="bili-banner" style="" data-v-38a4badd=""><div data-v-0a487de8="" data-v-38a4badd="" class="animated-banner"><div class="layer"><img src="https://i0.hdslb.com/bfs/vc/8e084d67aa18ed9c42dce043e06e16b79cbb50ef.png"data-height="250" data-width="3000" height="250" width="3000"style="filter: blur(4px); transform: translate(0px, 0px) rotate(0deg);"></div><div class="layer"><img src="https://i0.hdslb.com/bfs/vc/082e39ef757826401ef82da818310d42e05bc2de.png"data-height="275" data-width="3000" height="165" width="1800"style="transform: translate(0px, 0px) rotate(0deg); filter: blur(0px);"></div><div class="layer"><img src="https://i0.hdslb.com/bfs/vc/dbd5c17c4315714de9e4ee119694d2e9efaf9639.png"data-height="250" data-width="3000" height="250" width="3000"style="transform: translate(-50px, 0px) rotate(0deg); filter: blur(1px);"></div><div class="layer"><img src="https://i0.hdslb.com/bfs/vc/cd9be0a2716adbae85fd899259381c4b2c2893c7.png"data-height="250" data-width="3000" height="150" width="1800"style="transform: translate(0px, 4.2px) rotate(0deg); filter: blur(4px);"></div><div class="layer"><img src="https://i0.hdslb.com/bfs/vc/88537437a7916ecde847fa46652b44fbd3cbbb06.png"data-height="275" data-width="3000" height="165" width="1800"style="transform: translate(0px, -1.8px) rotate(0deg); filter: blur(5px);"></div><div class="layer"><img src="https://i0.hdslb.com/bfs/vc/37d9a93baa55870506a6f3e6308e7a0c386b97c7.png"data-height="275" data-width="3000" height="178" width="1950"style="filter: blur(6px); transform: translate(0px, 0px) rotate(0deg);"></div></div>

我们可以发现 banner 的 class 标签为 “animated-banner”,背景由 6 个 div 组成,6 张图片分别如下。

将 6 张图片按顺序进行组合叠加,即可形成 B 站首页的图片。解析 B 站 bili-banner 源码,整理如下。

<!doctype html>
<html><head><title>仿B站首页-图片随鼠标移动虚化效果</title><style>.animated-banner {position: absolute;top: 0;bottom: 0;left: 0;right: 0; overflow: hidden}.layer {position: absolute;left: 0;top: 0;height: 100%;width: 100%;display: -ms-flexbox;display: flex;-ms-flex-align: center;align-items: center;-ms-flex-pack: center;justify-content: center;}</style>
</head><body><div class="animated-banner"><div class="layer"><img src="https://i0.hdslb.com/bfs/vc/8e084d67aa18ed9c42dce043e06e16b79cbb50ef.png"data-height="250" data-width="3000" height="250" width="3000"></div><div class="layer"><img src="https://i0.hdslb.com/bfs/vc/082e39ef757826401ef82da818310d42e05bc2de.png"data-height="275" data-width="3000" height="165" width="1800"></div><div class="layer"><img src="https://i0.hdslb.com/bfs/vc/dbd5c17c4315714de9e4ee119694d2e9efaf9639.png"data-height="250" data-width="3000" height="250" width="3000"></div><div class="layer"><img src="https://i0.hdslb.com/bfs/vc/cd9be0a2716adbae85fd899259381c4b2c2893c7.png"data-height="250" data-width="3000" height="150" width="1800"></div><div class="layer"><img src="https://i0.hdslb.com/bfs/vc/88537437a7916ecde847fa46652b44fbd3cbbb06.png"data-height="275" data-width="3000" height="165" width="1800"></div><div class="layer"><img src="https://i0.hdslb.com/bfs/vc/37d9a93baa55870506a6f3e6308e7a0c386b97c7.png"data-height="275" data-width="3000" height="178" width="1950"></div></div>
</body>

效果如下

逐步实现与分析

要实现图片随鼠标移动而虚化效果,主要考虑监听鼠标移动和图片虚化。移动用 transform 中的 translate,模糊虚化用 filter 中的 blur。不同图层根据鼠标来设置图片的 translate 和 blur 属性。

我们先来康康这两个 CSS 属性的作用:

filter 函数

CSS3 Filter 属性 描述 例子
blur(px) 给图像设置高斯模糊。"radius"一值设定高斯函数的标准差,或者是屏幕上以多少像素融在一起, 所以值越大越模糊;如果没有设定值,则默认是 0;这个参数可设置 css 长度值,但不接受百分比值。 img { -webkit-filter: blur(5px); filter:blur(5px);}

注意: 滤镜通常使用百分比 (如:75%), 当然也可以使用小数来表示 (如:0.75)。blur 值越大,图片越模糊。

设置各图层的模糊值

<div class="animated-banner" id="animated-banner"><div class="layer" id="layer"><img id="forest"src="https://i0.hdslb.com/bfs/vc/8e084d67aa18ed9c42dce043e06e16b79cbb50ef.png" data-height="250"data-width="3000" height="250" width="3000" style="filter: blur(4px);"></div><div class="layer" id="layer"> <img id="big-person"src="https://i0.hdslb.com/bfs/vc/082e39ef757826401ef82da818310d42e05bc2de.png" data-height="275"data-width="3000" height="165" width="1800" style="filter: blur(0px);"></div><div class="layer" id="layer"><img id="hill"src="https://i0.hdslb.com/bfs/vc/dbd5c17c4315714de9e4ee119694d2e9efaf9639.png" data-height="250"data-width="3000" height="250" width="3000" style="filter: blur(1px);"></div><div class="layer" id="layer"><img id="leaves"src="https://i0.hdslb.com/bfs/vc/cd9be0a2716adbae85fd899259381c4b2c2893c7.png" data-height="250"data-width="3000" height="150" width="1800" style="filter: blur(4px);"></div><div class="layer" id="layer"><img id="small-person"src="https://i0.hdslb.com/bfs/vc/88537437a7916ecde847fa46652b44fbd3cbbb06.png" data-height="275"data-width="3000" height="165" width="1800" style="filter: blur(5px);"></div><div class="layer" id="layer"><img id="left"src="https://i0.hdslb.com/bfs/vc/37d9a93baa55870506a6f3e6308e7a0c386b97c7.png" data-height="275"data-width="3000" height="178" width="1950" style="filter: blur(6px);"></div>
</div>

首先设置默认的 blur() 值, 猪猪设置的聚焦点 blur(0px) 是 B 娘(即图层 2), 离聚焦点 B 娘远的物体越模糊,blur 值越大,效果如下。

图片移动虚化效果实现

Banner 动画效果相当于照相机镜头聚焦景物的效果,鼠标即相机镜头,移动鼠标的位置即移动镜头位置, 设置照相机焦距,从而达到鼠标移动图层不同程度模糊的效果。这种移动镜头效果是通过移动各图层的来实现的。
B 站上边是使用了 CSS3 的 translate(x, y),x, y 分别代表相对于原位置移动的距离。 实现镜头的左右移动, 仅更改 x 值 就可以了。

CSS3 transform 属性 描述
translate(x,y) 定义 2D 转换
rotate(angle) 定义 2D 旋转,在参数中规定角度

说明:transform 属性应用于元素的 2D 或 3D 转换,能实现将元素旋转,缩放,移动,倾斜等。

咱把图层的 translate(x,y)属性加上

   <div class="animated-banner" id="animated-banner"><div class="layer" id="layer"><img id="forest"src="https://i0.hdslb.com/bfs/vc/8e084d67aa18ed9c42dce043e06e16b79cbb50ef.png" data-height="250"data-width="3000" height="250" width="3000"style="transform: translate(0px, 0px) rotate(0deg); filter: blur(4px);"></div><div class="layer" id="layer"> <img id="big-person"src="https://i0.hdslb.com/bfs/vc/082e39ef757826401ef82da818310d42e05bc2de.png" data-height="275"data-width="3000" height="165" width="1800"style="transform: translate(0px, 0px) rotate(0deg); filter: blur(0px);"></div><div class="layer" id="layer"><img id="hill"src="https://i0.hdslb.com/bfs/vc/dbd5c17c4315714de9e4ee119694d2e9efaf9639.png" data-height="250"data-width="3000" height="250" width="3000"style="transform: translate(-50px, 0px) rotate(0deg); filter: blur(1px);"></div><div class="layer" id="layer"><img id="leaves"src="https://i0.hdslb.com/bfs/vc/cd9be0a2716adbae85fd899259381c4b2c2893c7.png" data-height="250"data-width="3000" height="150" width="1800"style="transform: translate(0px, 7px) rotate(0deg); filter: blur(4px);"></div><div class="layer" id="layer"><img id="small-person"src="https://i0.hdslb.com/bfs/vc/88537437a7916ecde847fa46652b44fbd3cbbb06.png" data-height="275"data-width="3000" height="165" width="1800"style="transform: translate(0px, -3px) rotate(0deg); filter: blur(5px);"></div><div class="layer" id="layer"><img id="left"src="https://i0.hdslb.com/bfs/vc/37d9a93baa55870506a6f3e6308e7a0c386b97c7.png" data-height="275"data-width="3000" height="178" width="1950"style="transform: translate(0px, 0px) rotate(0deg); filter: blur(6px);"></div>
</div>

现将 Banner 图片随鼠标移动的整个动画过程细化如下:

  1. 鼠标移入 Banner 背景图,则动画事件执行
  2. 动画随着鼠标移动,图片的 blur 和 translate 样式属性也随着变化
  3. 鼠标移出 Banner 背景图还原初始状态

着手写 js 代码实现如下

<script>var layerConfig = JSON.parse('[\{"images":[{"src":"https://i0.hdslb.com/bfs/vc/8e084d67aa18ed9c42dce043e06e16b79cbb50ef.png"}],"initial":{"blur":4}},\{"images":[\{"src":"https://i0.hdslb.com/bfs/vc/082e39ef757826401ef82da818310d42e05bc2de.png","duration":5000},\{"src":"https://i0.hdslb.com/bfs/vc/ddad7c909e4c2cf933473e971373d825e6f06519.png","duration":60},\{"src":"https://i0.hdslb.com/bfs/vc/173eafe211b4671e5aff059a1834f3e4579c7a5d.png","duration":200},\{"src":"https://i0.hdslb.com/bfs/vc/f1892bc119b722c3cda5b26269c292a90a9f5f06.png","duration":60}],"initial":{"blur":0}},\{"images":[{"src":"https://i0.hdslb.com/bfs/vc/dbd5c17c4315714de9e4ee119694d2e9efaf9639.png"}],"initial":{"translate":[-50,0],"blur":1}},\{"images":[{"src":"https://i0.hdslb.com/bfs/vc/cd9be0a2716adbae85fd899259381c4b2c2893c7.png"}],"initial":{"translate":[0,7],"blur":4}},\{"images":[{"src":"https://i0.hdslb.com/bfs/vc/88537437a7916ecde847fa46652b44fbd3cbbb06.png"}],"initial":{"translate":[0,-3],"blur":5}},\{"images":[{"src":"https://i0.hdslb.com/bfs/vc/37d9a93baa55870506a6f3e6308e7a0c386b97c7.png"}],"initial":{"blur":6}}]')// 区间限定函数function clamp(x, min, max) {if (x < min) return min;if (x > max) return max;return x;}t = document.getElementById("layer"),// 鼠标移开还原t.handleMouseLeave = function () {layerConfig.forEach(function (t) {document.getElementById("forest").setAttribute("style", "filter: blur(" + layerConfig[0].initial.blur + "px); transform: translate(0px, 0px) rotate(0deg);");document.getElementById("big-person").setAttribute("style", "filter: blur(" + layerConfig[1].initial.blur + "px); transform: translate(0px, 0px) rotate(0deg);");document.getElementById("hill").setAttribute("style", "filter: blur(" + layerConfig[2].initial.blur + "px); transform: translate(" + layerConfig[2].initial.translate[0] + "px," + layerConfig[2].initial.translate[1] + "px) rotate(0deg);");document.getElementById("leaves").setAttribute("style", "filter: blur(" + layerConfig[3].initial.blur + "px); transform: translate(" + layerConfig[3].initial.translate[0] + "px," + layerConfig[3].initial.translate[1] + "px) rotate(0deg);");document.getElementById("small-person").setAttribute("style", "filter: blur(" + layerConfig[4].initial.blur + "px); transform: translate(" + layerConfig[4].initial.translate[0] + "px," + layerConfig[4].initial.translate[1] + "px) rotate(0deg);");document.getElementById("left").setAttribute("style", "filter: blur(" + layerConfig[5].initial.blur + "px); transform: translate(0px, 0px) rotate(0deg);");});},// 鼠标移动t.handleMouseMove = function (t) {var x = t.pageX;// console.log("当前鼠标位置:", t.pageX);document.getElementById("forest").setAttribute("style", "filter: blur(" + clamp(x / 35, 0, 9) + "px); transform: translate(0px, 0px) rotate(0deg);");document.getElementById("big-person").setAttribute("style", "filter: blur(" + Math.abs(clamp(x / 75 - 7, -3, 7)) + "px); transform: translate(" + x / 50 + "px, 0px) rotate(0deg);");document.getElementById("hill").setAttribute("style", "filter: blur(" + Math.abs(clamp(x / 125 - 5, -5, 5)) + "px); transform: translate(" + x / 40 + "px, 0px) rotate(0deg);");document.getElementById("leaves").setAttribute("style", "filter: blur(" + Math.abs(clamp(x / 250 - 3, -7, 3)) + "px); transform: translate(" + x / 30 + "px, 0px) rotate(0deg);");document.getElementById("small-person").setAttribute("style", "filter: blur(" + clamp(5 - x / 250, 0, 5) + "px); transform: translate(" + x / 20 + "px, 0px) rotate(0deg);");document.getElementById("left").setAttribute("style", "filter: blur(" + clamp(6 - x / 250, 0, 6) + "px); transform: translate(" + x / 10 + "px, 0px) rotate(0deg);");},window.requestAnimationFrame(t.handleMouseMove),document.addEventListener("mouseleave", t.handleMouseLeave),window.addEventListener("mousemove", t.handleMouseMove)
</script>

如果你有仔细观察的 Banner 背景图片随鼠标移动的规律,你会发现整个动画动作有下面特点。

鼠标在向右移动的时候,聚焦点向前移,聚焦点由图层 2 逐渐转向图层 3、图层 4 到图层 6。镜头越趋向图层的聚焦点的时候,图片越清晰,镜头移出图层的时候,图层趋于模糊。当鼠标在向左移动的时候,聚焦点向后移,聚焦点由图层 2 逐渐转向图层 1。其实鼠标就是相当于镜头,聚焦到哪个景物,哪个景物就清晰,距离聚焦点越远的景物越模糊。

懂了动画模糊和镜头移动景物变化原理,blur() 和 translate(x,y) 变化规律便能能知道如何设置。

B 娘眨眼动画效果实现

动画在影视角度上来说,其实就是通过一帧帧图片迅速切换而实现的视觉上的动态效果。仔细观察 B 站的 Banner 中的 B 娘其实每隔 5 秒会进行一次眨眼动作,仔细查看前端源码,会发现第二个 div 中 img 标签中的 src 属性其实是会变动的,分析得知 B 娘眨眼动作由下面几张图循环切换而成。

通过这四张图片的不同停留时间,既可以达到视觉上的眨眼动画效果,设置图片停留时间可以通过 setTimeout()方法实现。

      // 人物动画(眨眼动作)function playImgTimer(i, index) {setTimeout((function () {var n = index === i.length - 1 ? 0 : index + 1;$('#big-person').attr("src", i[n].src);playImgTimer(i, n);}), i[index].duration)}playImgTimer(layerConfig[1].images, 0);

setTimeout()方法用来指定某个函数或字符串在指定的毫秒数之后执行。它返回一个整数,表示定时器的编号,这个值可以传递给 clearTimeout()用于取消这个函数的执行。

最后完整实现如下,本次对 B 站 Banner 前端研究因兴趣而起,很多地方完成的并不完善,如有不对或不足,请多指正。

<!doctype html>
<html><head><style>.animated-banner {position: absolute;top: 0;bottom: 0;left: 0;right: 0; overflow: hidden}.layer {position: absolute;left: 0;top: 0;height: 100%;width: 100%;display: -ms-flexbox;display: flex;-ms-flex-align: center;align-items: center;-ms-flex-pack: center;justify-content: center;}</style>
</head><body><div class="animated-banner" id="animated-banner"><div class="layer" id="layer"><img id="forest"src="https://i0.hdslb.com/bfs/vc/8e084d67aa18ed9c42dce043e06e16b79cbb50ef.png" data-height="250"data-width="3000" height="250" width="3000"style="transform: translate(0px, 0px) rotate(0deg); filter: blur(4px);"></div><div class="layer" id="layer"> <img id="big-person"src="https://i0.hdslb.com/bfs/vc/082e39ef757826401ef82da818310d42e05bc2de.png" data-height="275"data-width="3000" height="165" width="1800"style="transform: translate(0px, 0px) rotate(0deg); filter: blur(0px);"></div><div class="layer" id="layer"><img id="hill"src="https://i0.hdslb.com/bfs/vc/dbd5c17c4315714de9e4ee119694d2e9efaf9639.png" data-height="250"data-width="3000" height="250" width="3000"style="transform: translate(-50px, 0px) rotate(0deg); filter: blur(1px);"></div><div class="layer" id="layer"><img id="leaves"src="https://i0.hdslb.com/bfs/vc/cd9be0a2716adbae85fd899259381c4b2c2893c7.png" data-height="250"data-width="3000" height="150" width="1800"style="transform: translate(0px, 7px) rotate(0deg); filter: blur(4px);"></div><div class="layer" id="layer"><img id="small-person"src="https://i0.hdslb.com/bfs/vc/88537437a7916ecde847fa46652b44fbd3cbbb06.png" data-height="275"data-width="3000" height="165" width="1800"style="transform: translate(0px, -3px) rotate(0deg); filter: blur(5px);"></div><div class="layer" id="layer"><img id="left"src="https://i0.hdslb.com/bfs/vc/37d9a93baa55870506a6f3e6308e7a0c386b97c7.png" data-height="275"data-width="3000" height="178" width="1950"style="transform: translate(0px, 0px) rotate(0deg); filter: blur(6px);"></div></div><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script><script>var layerConfig = JSON.parse('[\{"images":[{"src":"https://i0.hdslb.com/bfs/vc/8e084d67aa18ed9c42dce043e06e16b79cbb50ef.png"}],"initial":{"blur":4}},\{"images":[\{"src":"https://i0.hdslb.com/bfs/vc/082e39ef757826401ef82da818310d42e05bc2de.png","duration":5000},\{"src":"https://i0.hdslb.com/bfs/vc/ddad7c909e4c2cf933473e971373d825e6f06519.png","duration":60},\{"src":"https://i0.hdslb.com/bfs/vc/173eafe211b4671e5aff059a1834f3e4579c7a5d.png","duration":200},\{"src":"https://i0.hdslb.com/bfs/vc/f1892bc119b722c3cda5b26269c292a90a9f5f06.png","duration":60}],"initial":{"blur":0}},\{"images":[{"src":"https://i0.hdslb.com/bfs/vc/dbd5c17c4315714de9e4ee119694d2e9efaf9639.png"}],"initial":{"translate":[-50,0],"blur":1}},\{"images":[{"src":"https://i0.hdslb.com/bfs/vc/cd9be0a2716adbae85fd899259381c4b2c2893c7.png"}],"initial":{"translate":[0,7],"blur":4}},\{"images":[{"src":"https://i0.hdslb.com/bfs/vc/88537437a7916ecde847fa46652b44fbd3cbbb06.png"}],"initial":{"translate":[0,-3],"blur":5}},\{"images":[{"src":"https://i0.hdslb.com/bfs/vc/37d9a93baa55870506a6f3e6308e7a0c386b97c7.png"}],"initial":{"blur":6}}]')// 人物动画(眨眼动作)function playImgTimer(i, index) {setTimeout((function () {var n = index === i.length - 1 ? 0 : index + 1;$('#big-person').attr("src", i[n].src);playImgTimer(i, n);}), i[index].duration)}playImgTimer(layerConfig[1].images, 0);// 区间限定函数function clamp(x, min, max) {if (x < min) return min;if (x > max) return max;return x;}t = document.getElementById("layer"),// 鼠标移开还原t.handleMouseLeave = function () {layerConfig.forEach(function (t) {document.getElementById("forest").setAttribute("style", "filter: blur(" + layerConfig[0].initial.blur + "px); transform: translate(0px, 0px) rotate(0deg);");document.getElementById("big-person").setAttribute("style", "filter: blur(" + layerConfig[1].initial.blur + "px); transform: translate(0px, 0px) rotate(0deg);");document.getElementById("hill").setAttribute("style", "filter: blur(" + layerConfig[2].initial.blur + "px); transform: translate(" + layerConfig[2].initial.translate[0] + "px," + layerConfig[2].initial.translate[1] + "px) rotate(0deg);");document.getElementById("leaves").setAttribute("style", "filter: blur(" + layerConfig[3].initial.blur + "px); transform: translate(" + layerConfig[3].initial.translate[0] + "px," + layerConfig[3].initial.translate[1] + "px) rotate(0deg);");document.getElementById("small-person").setAttribute("style", "filter: blur(" + layerConfig[4].initial.blur + "px); transform: translate(" + layerConfig[4].initial.translate[0] + "px," + layerConfig[4].initial.translate[1] + "px) rotate(0deg);");document.getElementById("left").setAttribute("style", "filter: blur(" + layerConfig[5].initial.blur + "px); transform: translate(0px, 0px) rotate(0deg);");});},// 鼠标移动t.handleMouseMove = function (t) {var x = t.pageX;// console.log("当前鼠标位置:", t.pageX);document.getElementById("forest").setAttribute("style", "filter: blur(" + clamp(x / 35, 0, 9) + "px); transform: translate(0px, 0px) rotate(0deg);");document.getElementById("big-person").setAttribute("style", "filter: blur(" + Math.abs(clamp(x / 75 - 7, -3, 7)) + "px); transform: translate(" + x / 50 + "px, 0px) rotate(0deg);");document.getElementById("hill").setAttribute("style", "filter: blur(" + Math.abs(clamp(x / 125 - 5, -5, 5)) + "px); transform: translate(" + x / 40 + "px, 0px) rotate(0deg);");document.getElementById("leaves").setAttribute("style", "filter: blur(" + Math.abs(clamp(x / 250 - 3, -7, 3)) + "px); transform: translate(" + x / 30 + "px, 0px) rotate(0deg);");document.getElementById("small-person").setAttribute("style", "filter: blur(" + clamp(5 - x / 250, 0, 5) + "px); transform: translate(" + x / 20 + "px, 0px) rotate(0deg);");document.getElementById("left").setAttribute("style", "filter: blur(" + clamp(6 - x / 250, 0, 6) + "px); transform: translate(" + x / 10 + "px, 0px) rotate(0deg);");},window.requestAnimationFrame(t.handleMouseMove),document.addEventListener("mouseleave", t.handleMouseLeave),window.addEventListener("mousemove", t.handleMouseMove)</script>
</body>
</html>

实现效果

B站banner图片随鼠标移动虚化效果摸索相关推荐

  1. woocommerce分类页面模板_怎样让wordpress网站的不同分类页面,调用不同的banner图片?...

    在我们的wordpress网站模板开发中,我们可能有这样的一个需求,就是能在自己的wordpress网站的不同的分类目录页面,能调用不同的banner图片.比如:医院类网站,医院科室比较多,男科分类调 ...

  2. 网页前端代码存档 - 【第三期】全屏banner图片切换特效详解

    十一长假plus已经结束  ,上班的第一周,大家都是什么心情呢,是不是还没有从放假的状态转换过来呢,需要调整一段时间 记得放假的时候,不知不觉就过去4天,当时感叹,哇靠,一下子就过去一半了啊,只能安慰 ...

  3. Axure教程-Banner图片轮播(二)-热区与条件判断

    在<Axure教程 Banner图片轮播(一)>基础上增加图片切换按钮. 效果: 轮播2 元件:动态面板和热区 步骤: 1,继续添加动态面反,设置如下: 2,在state1中添加添加三个& ...

  4. android首页图片轮播效果,Android_Android自动播放Banner图片轮播效果,先看一下效果图支持本地图 - phpStudy...

    Android自动播放Banner图片轮播效果 先看一下效果图 支持本地图片以及网络图片or本地网络混合. 使用方式: android:id="@+id/banner" andro ...

  5. 一个小程序:图片代替鼠标移动

    一个小程序:图片代替鼠标移动 程序的运行效果: 当鼠标移动到窗口内,鼠标不见了,取而代之的是图片..... ============================================== ...

  6. html鼠标滚动图片折叠,鼠标滑过图片3D折叠效果

    本教程我们将使用CSS3 3D transforms和jQuery来制作一个神奇的3D折叠效果. 在我们的demo中,图片在鼠标滑过的时候被折叠,空出来的部分将显示图片的一些信息.我们将创建一个放置图 ...

  7. 图片跟随鼠标移动并放大js特效

    js实现图片放大,并跟随鼠标移动 图片跟随鼠标移动并放大js特效 很多网站有类似于淘宝放大镜的效果,只不过这里说的是 " 不仅能直接放大,而且会跟随鼠标移动 " ! 类似于&quo ...

  8. html浮动跟随鼠标,jQuery 图片跟随鼠标浮动

    不知你有没注意到我的网站首页,上面浮动着一层雪花的背景,并且随着鼠标的移动也在移动着. 本文主要讲述了如何判断鼠标的位置,从而实现图片跟随鼠标进行浮动.为了方便查看和理解,在Demo的左下角把各个参数 ...

  9. css3为图片添加鼠标移入放大效果

    css3为图片添加鼠标移入放大效果 只需要为添加效果的图片定义一个伪类 img.zoom-img:hover {-webkit-transform: scale(1.15);-webkit-trans ...

  10. 图片随鼠标滚动而任意浮动

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML xmlns=" ...

最新文章

  1. colab找不到模块 no name
  2. 查询手机号段对应地区编码_2020陕西专升本考试今日起查询成绩啦
  3. 实验十 团队作业6:团队项目系统设计改进与详细设计
  4. 广东机电职业技术学校计算机怎么样,广东机电职业技术学院宿舍怎么样 住宿条件好不好...
  5. AI一周热闻:华为年收入突破千亿美元;英伟达发布城市监控数据集
  6. [Android]Webview中JS接口调用Java-版本问题
  7. Adrian Cole发布JClouds 1.0
  8. Maven—Eclipse设置Maven项目JDK版本
  9. Exchange Server 2013文档系列之四: Exchange Server 2013在Windows 2008 R2下部署
  10. mixly 添加micropython_Mixly软件下载-Mixly(米思齐图形化编程工具)官方版下载v1.04 - 欧普软件园...
  11. 一个曾经失眠九年的工程师告诉你怎样拥有更好的睡眠
  12. czl蒻蒟的OI之路6
  13. YTU OJ 2458: 换啤酒
  14. itextpdf 怎么下划线_java – 带有粗体和下划线的Itext新字体
  15. 前进永无止境!Pipeline更新又双叒叕来了!
  16. css3实现向一个方向无缝连接滚动
  17. Android studio 安卓开发常见问题(个人笔记系列)
  18. 超详细的张飞硬件第五部读书笔记01
  19. 环信的即时通信的使用
  20. keil的jlink重新选择芯片识别

热门文章

  1. html图片顺时针倾斜50度,【资源】纯CSS右上角倾斜四十五度封页角效果
  2. 山东计算机设计大赛,山东大学控制学院本科生获中国大学生计算机设计大赛国家级二等奖...
  3. JSONObject将json字符串转成java嵌套对象
  4. 简易图解N合1集成安装光盘制作教程
  5. java获取异常信息
  6. 学生成绩管理管理系统
  7. 【C++】代码实现:数据线性平滑算法:3点线性平滑、5点(1次、2次、3次)线性平滑、7点(1次、2次)线性平滑
  8. 自然人独资企业要上缴哪些税
  9. 如何成为优秀的网络安全工程师(转载)
  10. 心电信号质量评估——ecg_qc工具包介绍(二)