如何根据滚动位置缩小图像宽度

2023-12-02

我正在寻找基于滚动缩小徽标

到目前为止,我有这样的事情

logoSize = function(){
    var headerOffset = $(window).height() - 650;
    var maxScrollDistance = 1300;
    $(window).scroll(function() {
        var percentage = maxScrollDistance / $(document).scrollTop();
        if (percentage <= headerOffset) {
            $('.logo').css('width', percentage * 64);
        }
        console.log(percentage);
    });
}

logoSize();

我已经很接近了,但是图像要么开始太宽,要么缩小得太快,我需要它在滚动的前 650 像素中发生,如您所见 - 有什么想法吗?也许百分比宽度会更好?


我根据您心中有目标大小的假设重写了您的代码,例如滚动 650 像素后,您希望图像宽度为 250 像素。

它在原始大小和目标大小之间平滑滚动,并考虑到窗口高度可能小于最大滚动距离的事实:

logoSize = function () {
    // Get the real width of the logo image
    var theLogo = $("#thelogo");
    var newImage = new Image();
    newImage.src = theLogo.attr("src");
    var imgWidth = newImage.width;

    // distance over which zoom effect takes place
    var maxScrollDistance = 650;

    // set to window height if that is smaller
    maxScrollDistance = Math.min(maxScrollDistance, $(window).height());

    // width at maximum zoom out (i.e. when window has scrolled maxScrollDistance)
    var widthAtMax = 500;

    // calculate diff and how many pixels to zoom per pixel scrolled
    var widthDiff = imgWidth - widthAtMax;
    var pixelsPerScroll =(widthDiff / maxScrollDistance);

    $(window).scroll(function () {
        // the currently scrolled-to position - max-out at maxScrollDistance
        var scrollTopPos = Math.min($(document).scrollTop(), maxScrollDistance);

        // how many pixels to adjust by
        var scrollChangePx =  Math.floor(scrollTopPos * pixelsPerScroll);

        // calculate the new width
        var zoomedWidth = imgWidth - scrollChangePx;

        // set the width
        $('.logo').css('width', zoomedWidth);
    });
}

logoSize();

See http://jsfiddle.net/raad/woun56vk/一个工作示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据滚动位置缩小图像宽度 的相关文章

随机推荐

  • 在PythonunittestTestLoader中指定具体的测试用例

    我有以下文件夹结构 Unit smoke py Test1 Test1 py Test2 Test2 py 两个测试文件各有两个测试用例 File smoke py包含 suite1 unittest TestLoader discover
  • errno、strerror 和 Linux 系统调用

    我可以用strerror 获取文本表示errno使用 CRT 函数后的值 例如fopen 如果我使用open Linux系统调用代替CRT函数 它还设置errno失败时的价值 申请是否正确strerror 对此errno价值 如果没有 是否
  • 找不到有效的签名身份?

    我已经尝试用 mono 创建一个发行版本已经好几天了 我从我们的 团队代理 那里获得了发行配置文件和发行证书 并分别拖放到 xcode organizer 和 keychain access 上 但是仍然有警告消息显示 在您的钥匙串中找不到
  • Java解压字节数组

    在服务器 C 上 二进制数据使用以下方式压缩ZLib功能 compress2 并将其发送到客户端 Java 在客户端 Java 应使用以下代码片段解压缩数据 public static String unpack byte packedBu
  • SPARQL 中的幂(指数)和其他数学函数支持

    I am trying to write a SPARQL query where I want to filter on the square of something but I am simply unable to figure o
  • 如何使默认 bin 目录在 Eclipse 中可见? [复制]

    这个问题在这里已经有答案了 可能的重复 我该怎么做才能在 eclipse 上显示 bin 文件夹 我知道这是一个searing的重复项this问题 但是该问题中提供的答案对我不起作用或对我没有任何帮助 我正在尝试获取项目的默认输出文件夹 b
  • 更改资源字典中的 SolidColorBrush#Color 失败:属性为只读 [重复]

    这个问题在这里已经有答案了 我有一个SolidColorBrushApp xaml 中的资源如下所示
  • wireshark 如何在同一端口上使用两个 lua 解析器正确解析

    我正在编写lua脚本作为wireshark 1 12 4 插件来剖析我的私有协议 我有两个协议 我为每个协议编写一个lua脚本 两个lua脚本看起来如下 local my pro Proto MyPro My Protocol local
  • 程序从哪里分配内存?

    作为一名 C 和 C 程序员 我使用过malloc and new来分配内存 我只是想知道 操作系统如何分配内存 它是从 RAM 硬盘还是其他地方分配 我可以从硬盘借用内存以防万一吗 它实际上比你想象的要复杂得多 操作系统以 页面 的形式考
  • 如何在recycler视图中访问MainActivity的组件来制作onclick监听器?

    我创建了类似 YouTube 的应用程序 其中包含一个视频视图 顶部 和回收器视图 视频视图下方 我陷入困境 我想在 recyclerview 项目上创建 onclicklistner 并更改视频路径来更改视频 但是如何访问适配器类中的 v
  • PHP 中的 SFTP - 未定义的常量 CURLOPT_PROTOCOLS 和 CURLPROTO_SFTP?

    从我的 php 脚本中 我需要能够通过 sftp 将 csv 文件上传到远程服务器 我遵循了这个问题的公认答案 从 PHP 内部进行 SFTP 这是我的代码的样子
  • 使用公式将 Excel 子集列转换为数组

    我需要将帐号放入一个数组中 该数组在列选择上指示为 1 预期结果是 FD 002 17 FD 004 17 我计划在名称范围中使用它 子集感兴趣的表 我尝试使用 INDEX B2 B6 MATCH 1 A2 A6 1 但这失败了Match不
  • openFileInput() 和/或 openFileOutput() I/O 流默默失败

    我一直在研究 android 平台 研究不同的数据存储方式 现在我正在使用Context方法openFileInput and openFileOutput 正如这两种方法的文档告诉我的那样 我创建了一个名为 default 的文件 这是一
  • 几分钟后服务自动停止

    我正在创建一个服务 当活动处于后台以及整个应用程序被销毁时 该服务应该可以工作 我每隔 1 分钟调用一次服务中的位置坐标 但是 当我尝试这样做时 该服务会在 12 15 分钟后自动关闭 我希望该服务能够无休止地工作 直到并且除非它被用户交互
  • 定制系列化

    我有一些必须序列化的对象 class Displayable string name Sprite icon The icon字段需要自定义序列化 因为Sprites 已经被序列化 在不同的文件中 具有自己的格式 由游戏引擎 我只需要存储一
  • Jquery - 在悬停时添加类

    我想要当鼠标继续运行时lijquery 向元素添加一个类 ul class menu li Menu Item li li Menu Item li li Menu Item li li Menu Item li ul
  • Galaxy Note 5:自动降低密度

    我创建了一个依赖某些屏幕指标来运行的应用程序 它在除 Galaxy Note 5 之外的所有设备上都能正常工作 在 Note 5 上 它报告的屏幕尺寸为 1080x1920 而实际屏幕尺寸为 1440x2560 我还在 logcat 中看到
  • 使用泛型返回文字字符串或来自 Dictionary

    我想这一次我超越了自己 请随意编辑标题 我也想不出一个好的标题 我正在从一个文件中读取内容 然后该文件中将包含一个字符串 因为它就像一个 xml 文件 但文件中将是一个文字值或一个 命令 用于从 workContainer 获取值 so
  • 为什么这个巴特沃斯滤波器在 R 和 Matlab 中呈现不同的结果?

    我试图对 R 中的数据使用 20Hz 低通滤波器 但是当我使用 filtfilt 函数时 该图与 matlab 中的不同 我在 R 中使用以下代码 fc lt 20 fs lt 100 Wn lt pi fc 2 fs testar lt
  • 如何根据滚动位置缩小图像宽度

    我正在寻找基于滚动缩小徽标 到目前为止 我有这样的事情 logoSize function var headerOffset window height 650 var maxScrollDistance 1300 window scrol