javascript - 获取元素和视口(viewport)右侧之间的距离以在滚动时更改 div 的宽度

标签 javascript jquery css image

我有一个我无法解决的小问题。
我已经在谷歌上冲浪了一个多小时,但我无法解决。 (我不太擅长 Javascript)

嗯是的。我有一个水平滚动页面。 (没有嵌入水平滚动的代码,让我们只使用滚动条)。我想要一个“起点”-DIV,宽度和长度为 100%,包含一个图像。在该 div 的右侧将有内容(动态可调整的内容量)。现在,我希望该图像(在 GIF 中显示为“内容”)在 DIV 内居中。当我滚动时,我希望 div 变小(看起来应该像常规滚动一样,除了 div 实际上并没有移出视口(viewport))。在大约 400 像素时它应该停止缩小,只显示图像中心的一部分。
所以 - GIF 的图像 1 是它通常的样子。 GIF 的图像 2 是我希望它发生的方式。 这当然应该响应地工作。 我已经完成了一些工作,我基本上知道如何去做,但我可能只是不太擅长 Javascript 来解决它。

Here's my approach so far. -> jsfiddle

var scrollVal = Math.max(window.pageXOffset,0); /* THIS IS WRONG */
var viewport = window.innerWidth;

var windowsize = viewport - scrollVal;

$("#contentdiv").css({"width" : windowsize + "px"});

如您所见,我基本上只获得了视口(viewport)的大小以及(我认为的)视口(viewport)偏移和 div 之间的偏移。然后我从视口(viewport)中减去偏移量。 这里出了什么问题:偏移量是从左侧滚动的距离,每次更改 DIV 宽度时都会发生变化。据我猜测,我需要 DIV 右侧和视口(viewport)右端之间的距离。但我就是无法理解它。

一些帮助将不胜感激!很抱歉文本太长。

最佳答案

我自己解决的!这是更新的 JSfiddle。 https://jsfiddle.net/04dn5x6g/2/

#contentdiv {
width:100vw;
height:100vh;
position: fixed;
background-color: black;
z-index:100;
}

#else {
position: absolute;
left:100%;
height:100vh;
display: inline-block;
white-space: nowrap;
}

这是固定的位置。

关于javascript - 获取元素和视口(viewport)右侧之间的距离以在滚动时更改 div 的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29428848/

相关文章:

javascript - 如何使用 JQuery 2.1.4 过滤复选框?

html - 固定正文背景滚动与 iOS7 上的页面

CSS - 如何为输入添加不透明边框?

javascript - 配置 AngularJS 忽略旧版本的 jquery

javascript - 如何在 JavaScript 中获取指定字符之前的子字符串?

javascript - 当我单击一个切换时,所有 JQuery SlideToggle 都会打开

javascript - 使用 jQuery 'draggable' 时,文本在与容器碰撞时出于某种原因换行。为什么?以及如何解决?

javascript - Twitter-Bootstrap Modal 无法正常工作

javascript - jQuery .offset 值到底部

jquery - 连接 CSS 选择器