- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
全屏背景居中
background: url(image) no-repeat center center;
现在我希望每当用户移动鼠标时背景图像都会稍微移动。我遇到过几种方法/插件来做到这一点,但并不完全符合我的要求,所以我选择这样做(我也在某处找到了):
$("body").bind('mousemove', function(e){
var ypos=(e.pageY-100)/12 + 10;
var xpos=(e.pageX-100)/18 + 10;
$(this).css({backgroundPosition: xpos * (-1) + 'px ' + ypos * (-1) + 'px' });
});
不同的值(/12,+10)只是我任意选择的值,因为它们给了我我正在寻找的结果 - 不确定这是否是正确的方法。不管怎样,现在的问题是,当页面从头开始加载时(不移动鼠标),一切看起来都很好(图像居中)。
如果启用了上面发布的脚本,并且您移动鼠标,背景图像会“跳转”到某处(根据位置值),因此它会从图像的最左上角显示,而它不应该显示。
不幸的是,我无法自己编写代码(只能编辑一些基本的东西)并且数学总是很差。这显然“只是”一个数学问题,但是任何人都可以帮助我弄清楚我需要改变什么,所以背景图像基本上总是居中,但在所有方向上仅稍微移动 50px(或其他)?
基本上是这样的 http://manos.malihu.gr/tuts/jquery_image_panning_liquid.html ,但不是实际图像,而是仅 css/背景。
最佳答案
在答案部分发布我快速编写的代码以保持可读性。这可能间接解决您的问题。
$(function(){
var mousex = mousey = null;
$('body').mousemove(function(ev){
if(mousex === null || mousey === null){
//get initial x/y position for mouse cursor
mousex = ev.pageX;
mousey = ev.pageY;
}
window.clearTimeout(window.mouse_timeout);
window.mouse_timeout = window.setTimeout(function(){
console.log('mouse moved', ev.pageX - mousex, ev.pageY - mousey);
/* now that you've the absolute position of the mouse and delta x/y here, you can move your background accordingly */
//update the variables to the latest picket position of the mouse
mousex = ev.pageX;
mousey = ev.pageY;
}, 10)
});
});
<小时/>
jsfiddle此代码将初始鼠标位置标记为中心引用点,并稍后引用该点计算鼠标移动。
<div id="outer_container">
<div id="imagePan">
<div class="container">
<div id="mov">
<img src="http://i.imgur.com/92Z5zCM.jpg" class="panning" />
</div>
</div>
</div>
</div>
html, body{ height: 100%; }
body{ margin: 0; padding: 0; background: #eee; }
#outer_container{ position: relative; margin: auto; padding: 4px; border: 8px solid #dadada; height: 90%; width: 80%; background: #CDD7E0}
#imagePan{ position: relative; overflow: hidden; cursor: crosshair; height: 100%; width: 100%; }
#imagePan .container{ position: relative; left: 0; }
#mov{ margin: -51px -391px 0 }
var originX = originY = xUnit = yUnit = dX = dY = mov = null;
$(window).load(function () {
mov = $('#mov');
initMarginL = parseInt(mov.css('margin-left'));
initMarginT = parseInt(mov.css('margin-top'));
$('#outer_container').mousemove(function (ev) {
if (originX === null || originY === null) {
originX = ev.pageX;
originY = ev.pageY;
xUnit = parseFloat((Math.max(originX, $(window).width()) / $(window).width()).toFixed(2));
yUnit = parseFloat((Math.max(originY, $(window).height()) / $(window).height()).toFixed(2));
}
var dX = originX - ev.pageX;
var dY = originY - ev.pageY;
mov.css({
marginLeft: initMarginL + (dX * xUnit),
marginTop: initMarginT + (dY * yUnit)
});
});
});
关于jquery - 使用 jquery 平移全屏图像,同时保持居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16047236/
我正在尝试使用 Qt 制作游戏,因为它太棒了 ;) 而且您可以免费获得所需的所有东西。唯一的问题是更改系统分辨率和设置 QWidget(或 QGLWidget)“真正的”全屏。 你们中有人成功地做到了
有没有办法以全屏模式(没有工具栏、导航)启动 gwt-app? 我只找到了打开新窗口的提示: Window.open("SOMEURL","SOMETITLE", "fullscreen=yes
if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscr
我想解释一下我现在在做什么。我开发了一个 aar(sdk) 并且运行良好。但是,我希望我的 sdk 在被调用时占据全屏,即使调用者有一个工具栏。我尝试了此链接中的示例 [ How to set act
我是 Blazor 的新手,我正在尝试了解如何以全屏模式打开浏览器。我知道我可以执行 Javascript 中断并运行 Javascript,但这违背了 Blazor 的目的。 如何在 Blazor
我正在创建一个全屏应用程序,并且想知道是否有某种方法可以使 NSAlert 位于我创建的 CGDisplayCapture 之上。现在,NSAlert 显示在显示捕获后面。我的主窗口显示得很好(在使用
有人可以解释一下下面的代码是如何工作的吗? 元素指的是视频,全屏指的是页面上的链接。 我无法理解 if 语句 var element = document.getElementById('elemen
我想要实现的是类似于 Instagram 应用内网络浏览器,在您点击广告时使用: 我所做的是,我使用了 WebView bottomSheetDialogFragment,并覆盖了 onCreateD
第二个 ViewController 的顶部有这个空间,它几乎在手机上显示为可关闭的弹出窗口。如何使全屏显示(删除橙色箭头指向的空间)? 最佳答案 这是 iOS 13 的一项更改。用户将开始期望能够滑
我正在尝试在全屏模式下使用 emacs 并使用合适的字体。我有一台运行 Ubuntu 的基于 nvidia 的笔记本电脑。首次加载时,字体很大,认为是 16pt 字体。我使用菜单选项设置了合适的字体(
我有一个 GridView,我使用 BaseAdapter 来调整我的 GridView 中的图像和文本。我有一个问题,当我运行我的应用程序时,我的“GridView”有左、右、上和下边距。我不需要这
是否可以在全屏模式下使用 Android Studio 例如只有我们编码的那个字段应该显示在整个屏幕上。 像这样: 最佳答案 您可以使用“无干扰模式”: 关于全屏 Android Studio,我们在
我正在制作一个应用程序,当手机处于纵向时,我需要 fragment 显示菜单栏(带有设置快捷方式等),但当它处于横向时,我需要全屏。 因此,我有一个管理 2 个 fragment 的 Activity
我想知道是否可以在没有标签栏和导航栏的情况下全屏推送 NavigationController 的 ViewController。我的问题如下: 我的应用在 TabBarController 中嵌入了
我制作了一个1920 * 1048的flash(16:9的屏幕),并将其嵌入到html中喜欢: 问题是: 在 4:3 屏幕中,flash 的宽度为 100%,但顶部和底部有白色填充。看来闪光灯
我想制作一个同时包含多个文本的HTML5视频。 文本应该以不同的css布局(文本颜色、字体、阴影)显示在视频的不同位置(同时) 我试过这个教程http://www.artandlogic.com/bl
需要一些帮助。 我需要水平滑动一次长图像,然后再水平滑动回来...我在这里学习了一个教程 https://css-tricks.com/creating-a-css-sliding-backgroun
我正在制作一个简单的登录页面,并试图将以下图像作为背景全屏:image 我的 CSS 目前看起来像这样: body { background-image: url('/images/bg.jp
我想用透明色覆盖我的背景图片,但颜色没有覆盖背景图片。 这是我的演示: http://jsfiddle.net/farna/73kx2/ CSS 代码: .overlay{ backgroun
有什么方法可以隐藏状态栏并保持操作栏可见吗? 最佳答案 是的,有。您应该在 Activity 的 onCreate 方法中设置 FLAG_FULLSCREEN。 @Override public vo
我是一名优秀的程序员,十分优秀!