Javascript,包含窗口边缘内的图像
Javascript, contain image inside windows edges
我正在尝试学习更多的javascript,现在我只是在玩事件侦听器方法。我制作了一个简单的HTML文档,其中包含一个包含背景图像的div。我已经成功地使图像在正确的按键下移动。我现在要做的是防止图像通过窗口的边缘。
我知道window.innerWidth和window.innerHeight给出了窗口的大小,但我不知道如何使用它来限制图像的移动。
html:
<script type="text/javascript" src="code.js"></script>
</body>
</html>
样式内部.css:
body{
}
#image{
position: absolute;
height: 80px;
width: 80px;
background: url("../img/image.png");
background-size: 80px;
background-repeat: no-repeat;
}
代码内部.js:
(function() {
var image;
var count, left, top;
image = document.getElementById('image');
count = 30;
left = 200;
top = 200;
image.style.left = left + "px";
image.style.top = top + "px";
document.addEventListener("keydown", function(event) {
var key = event.keyCode || event.which;
left = image.offsetLeft;
top = image.offsetTop;
switch(key) {
case 37:
left -= count;
break;
case 38:
top -= count;
break;
case 39:
left += count;
break;
case 40:
top += count;
break;
}
image.style.left = left + "px";
image.style.top = top + "px";
});
});
PS。我只想使用普通的JavaScript。请不要jQuery。:)
将其移动限制在窗口的左侧和顶部应该非常直接。当图像位于屏幕顶部时,其offsetTop将为0。在左边,它的offsetLeft将为0。所以你可以在切换语句后添加这个:
if (left < 0) {
left = 0;
}
if (top < 0) {
top = 0;
}
不过这太冗长了。我更喜欢使用Math.min()和Math.max()——它们是内置的Javascript函数。因此,我建议你这样做:
left = Math.max(0, left);
top = Math.max(0, top);
现在,右边界和下边界有点棘手。您已经发现offsetLeft和offsetTop。元素还具有offsetWidth和offsetHeight属性。这些表示元素从其边界的外边缘占据的渲染像素数。我们现在不了解所有细节。您还找到了window.innerWidth和window.innerHeight。因此,您可以说最大左坐标应该是window.innerWidth - image.offsetWidth
。同样,我们可以使用"if"语句来实现这一点,但我更喜欢使用内置的数学函数来实现此目的。
left = Math.min(left, window.innerWidth - image.offsetWidth);
top = Math.min(top, window.innerHeight - image.offsetHeight);
所以,在switch语句和Voila之后加上这4行!您的图像将受到窗口限制。
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- nodejs-expressjs上传图像并显示它们
- 使用JSP从服务器检索和显示图像
- 角度:在ng重复上切换图像
- 画廊图像未显示
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- Javascript排序的图像弹出窗口..可以't单独弹出
- 画布数据到图像
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 使图像在单击时展开到不大于浏览器
- Html页面上的多个Base64图像和平滑加载
- UIAutomation放大图像
- Javascript,包含窗口边缘内的图像
- 在一个简单的jquery幻灯片中,我的类到达图像的末尾,然后从DOM的边缘掉下来
- HTML5 Canvas .translate 和 .scale 会导致图像边缘出现锯齿状
- 光滑滑块:在中心模式中去掉部分/边缘图像
- 从像斑点一样的图像的(内部和外部)边缘创建路径
- 我如何编写脚本,使我的全景图像可以左右平移到边缘
- 动态js照片图像与模糊/透明边缘
- Adobe边缘动画CC文件结构层次结构-如何有资产和图像加载从不同的文件夹位置(2014.1.1版本)