- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在我的网站上实现此 ( https://codepen.io/ge1doot/pen/oXWepr) codepen 时遇到问题。我想像以前那样替换图像。我研究了数百万个关于使用 javascript 在 Canvas 上绘图的问题,但它们似乎都指向两种解决方案之一:CORS header 和设置导致 Canvas 受污染,或者它们没有 image.onload 函数. CORS 对我来说应该不是问题,因为图像位于同一台服务器上,而且我有一个 image.onload 函数。我正在使用的修改后的代码如下。
这一行尤其可能导致问题:
var canvas = ge1doot.canvas("canvas");
虽然我不知道。我不确定它到底在做什么,而且通过我数小时的阅读也无法完全弄明白。以我有限的理解,它可能与 document.getElementById 做同样的事情?而且,当我在 css 中更改它们的颜色时, Canvas 和背景显示得很好,只是图像本身没有显示。
HTML:
<!DOCTYPE html>
<html lang"en">
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="parallax.css" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<title>...</title>
</head>
<body>
<script type="text/javascript" script src="parallax.js"></script>
<canvas id="canvas"></canvas>
<div id="frame"></div>
</body>
</html>
CSS:
html {
overflow: hidden;
touch-action: none;
content-zooming: none;
}
body {
position: absolute;
margin: 0;
padding: 0;
width: 100%;
height: 100%;
background: #fff;
}
#canvas {
position: absolute;
left: 50%;
top: 50%;
width: 600px;
height: 400px;
margin-left: -300px;
margin-top: -200px;
background: #fff;
}
#frame {
position: absolute;
left: 50%;
top: 50%;
width: 700px;
height: 500px;
margin-left: -350px;
margin-top: -250px;
border-radius: 10px;
box-shadow: 0px 0px 100px 0px #fda;
}
JavaScript:
! function () {
"use strict";
function chromaKey(source, id) {
// create new image
var imgSource = new Image();
//imgSource.crossOrigin = "Anonymous"; Not sure if this should be commented out or not, but I think it should.
imgSource.src = source;
imgSource.onload = function () {
// render image in canvas
var jpg = document.createElement('canvas');
var w = jpg.width = this.width;
var h = jpg.height = this.height;
var ctx = jpg.getContext('2d');
ctx.drawImage(this, 0, 0, w, h);
// chroma Key
var img = ctx.getImageData(0, 0, w, h),
data = img.data;
for (var i =0, n = data.length; i < n; i += 4) {
var r = data [i + 0];
var g = data [i + 1];
var b = data [i + 2];
// make white transparent (rgb > 240, 240, 240)
//if (r > 240 && g > 240 && b > 240) {
// data[i + 3] = 0;
//}
}
// create new transparent image
var transparent = document.createElement('canvas');
transparent.width = w;
transparent.height = h;
var ctx = transparent.getContext('2d');
ctx.putImageData(img, 0, 0);
images[id] = transparent;
}
}
// draw parallax image
function parallax (id, x, y) {
var image = images[id];
if (image) {
ctx.drawImage(image, x, y);
}
}
// main loop
function run() {
// request next frame
requestAnimationFrame(run);
// clear screen
ctx.clearRect(0, 0, canvas.width, canvas.height);
// ease pointer
pointer.cx += (pointer.x - pointer.cx) / 10;
pointer.cy += (pointer.y - pointer.cy) / 10;
var rx = -((canvas.width / 2) - Math.max(15, Math.min(pointer.cx, canvas.width - 15))) / 7;
var ry = -((canvas.height / 2) - Math.max(0, Math.min(pointer.cy, canvas.height - 5))) / 4.75;
// parallax
parallax(0, -20 + (rx / 2), -80 + (ry * 2));
parallax(1, -40 + (rx / 2), 20 + (ry / 2));
parallax(2, -20 + (rx / 3), 90 + (ry / 3));
parallax(3, -20 - (rx / 2), 130 - (ry / 2));
parallax(4, 0 - (rx / 1), 160 - (ry / 1));
parallax(5, 240 - (rx * 2), 220 - (ry * 2));
}
// canvas
var canvas = ge1doot.canvas("canvas"); //I think this might have something to do with it? Not sure.
var ctx = canvas.ctx;
// pointer
var pointer = canvas.pointer;
pointer.cx = pointer.x = canvas.width / 2;
pointer.cy = 0;
pointer.y = canvas.height;
// images
var images = [];
// make jpg images transparent images
chromaKey("pengyu.jpg", 0);
chromaKey("pengyu.jpg", 1);
chromaKey("pengyu.jpg", 2);
chromaKey("pengyu.jpg", 3);
chromaKey("pengyu.jpg", 4);
chromaKey("pengyu.jpg", 5);
// zyva!
run();
}();
最佳答案
关于这段引起问题的代码,您是对的。
var canvas = ge1doot.canvas("canvas");
如果你打开code pen你会看到有一个javascript文件正在被code pen导入
https://s3-us-west-2.amazonaws.com/s.cdpn.io/222599/canvas-pointer.js?v=20150516
确保你导入它们
<script type="text/javascript" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/222599/canvas-pointer.js?v=20150516"></script>
关于javascript - 实现 ge1doot 的视差代码笔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49422987/
好的,所以我已经创建了自己的视差 jQuery/JS 脚本,但我只是不知道如何定位支持以下内容(需要以下内容)的浏览器: 支持背景位置的转换 我正在尝试的站点(预览)是: My Test Site 我
我正在制作带有固定背景和封面的整页。 当我添加视差时 - 动画看起来不错,但它滞后太多,我不知道为什么。我有一台很好的 PC,所以这不是这个问题,我之前让其他人产生了视差,这并不滞后。 有什么解决办法
我有一个奇怪的组合 - 视差和汉堡菜单。问题是米 导航会在您悬停的任何地方下降,不仅 当您将鼠标悬停在汉堡菜单图标上时。我认为这是一个厚厚的错误 代码,但我找不到它。我没有 jquery 的。还有,我
因此,我一直在努力围绕这种名为“视差”的整洁效果。基本上,背景滚动比前景元素慢。 我发现这个新的“技巧”正在起作用。随着滚动的进行,更改top属性以创建视差效果。 问题... 因此,为了提高性能并减轻
我的导航栏在 CSS 中加入视差效果后无法保持固定。 我在我的网站上放置了一个带有过渡 JS“Math.round($(window).scrollTop()) > 490)”的固定导航栏。 之后,我
这是一个非常模糊的问题,但我不确定从哪里开始,所以如果有人能给我一些想法,那你就太好了。 我想在我的网站主页上使用视差效果,但我不确定如何创建这种效果。我想要的效果在这里装箱http://davega
我使用了本教程中的视差脚本 http://tympanus.net/codrops/2011/01/03/parallax-slider/ 我在这里发布了一个 fiddle http://jsfidd
我想知道如何创建视差滚动效果之类的东西。向下滚动得越远,div 变得越不透明,在某个点之后,它又开始变得更加透明。我知道需要 JS/JQuery 才能做到这一点。谁能给我一个简单的方法来实现这个目标?
我的页面上有一个元素是绝对定位的。 我正在尝试编写一段 jQuery 代码,使该元素的滚动速度比页面上其他元素的滚动速度慢。 到目前为止,我已经写了这篇文章,但似乎根本无法让它发挥作用。有没有人有这方
我是 cocos2d 世界的新手,我正在开发我的第一个教程并面临一个问题我的问题是我有一个图像(1024 X 320)并且我的方向是横向我需要从右到左连续移动该图像为此目的我使用了 Ray 的太空射击
我需要调试此 jQuery 的帮助,其中我操纵容器中元素的上边距,该容器具有固定大小并将溢出设置为隐藏,以便我可以创建视差效果。视差有效,但如果您向下滚动一个像素,然后重新加载页面,它就会中断。谁能帮
我有一个 div,我想留在原地,这样导航栏和其他部分就可以通过它。 这是我目前的工作:
我建了一个网站,页面很长。我们决定使用纯 CSS3 为它添加视差并且它起作用了。 我从这里得到的 CSS3 视差代码: codepen.io/keithclark/pen/JycFw 后来,我们决定应
由于我对 Javascript/Jquery/HTML5/CSS3 还是个新手,我想我应该问一个问题给你们这些更有经验的程序员。 我有点卡在我的程序逻辑的开头。我想做一个具有视差“滚动”效果的网站,但
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,
-- 更新 2 -- 如果您使用单个相机计算距离,下面的文章非常有用(尽管它使用的是 Python 而不是 C++):Find distance from camera to object/marke
我有一个使用 skrollr 构建的视差网站在我到达页面末尾之前效果很好。我想要一个 成为您可以在页面上滚动的最后/最远点。 目前,如果我在大屏幕上查看时会留下巨大的空白,或者我无法进一步向下滚动以在
我不明白为什么会这样:我有: https://jsfiddle.net/d5jehq02/1 background forefront 我正在
我看到很多例子说明视差背景当你滚动或 ListView 视差但是我找不到一个清楚的例子如何在你滚动 Activity 时对图像实现视差效果。 可以在 Airbnb 应用程序中找到示例实现。向下滚动时,
我的背景图片来自background-url,我的视差适用于我放置的图片:background-attachment: fixed; 我怎样才能让背景图片在我滚动时稍微移动一点? 这是我正在谈论的例子
我是一名优秀的程序员,十分优秀!