Project Icon

jarallax

轻量级视差滚动库 支持图片和视频背景

Jarallax是一个轻量级的JavaScript视差滚动库,支持图片和视频背景。它可通过JavaScript、数据属性或jQuery多种方式初始化,提供丰富的选项和事件接口。该库支持img标签、CSS背景图像以及YouTube、Vimeo和自托管视频作为视差背景。开发者可以通过多样的选项和事件精确控制视差效果,实现自定义的滚动体验。Jarallax适用于从简单网页到WordPress主题的各类项目,能为现代浏览器带来流畅的视差滚动效果。代码简洁,性能出色,是实现网页视差效果的理想选择。

Jarallax

jarallax.min.js jarallax-video.min.js

适用于现代浏览器的视差滚动效果。支持<img>标签、背景图片、YouTube、Vimeo和自托管视频。

在线演示

目录

WordPress插件

高级WordPress背景

我们制作了WordPress插件,让您可以轻松地为博客内容添加具有所有Jarallax功能的背景。

演示:https://wpbackgrounds.com/

下载:https://wordpress.org/plugins/advanced-backgrounds/

快速开始

这里有一系列示例,您可以将其作为使用Jarallax的起点。

导入Jarallax

使用以下示例之一来导入jarallax。

ESM

我们提供了一个构建为ESM的Jarallax版本(jarallax.esm.js和jarallax.esm.min.js),如果您的目标浏览器支持,这允许您在浏览器中将Jarallax作为模块使用。

<!-- Jarallax CSS -->
<link href="jarallax.min.css" rel="stylesheet">

<!-- Jarallax JS -->
<script type="module">
  import { jarallax, jarallaxVideo } from "jarallax.esm.min.js";

  // 可选的视频扩展
  jarallaxVideo();
</script>

ESM CDN

<!-- Jarallax CSS -->
<link href="https://cdn.jsdelivr.net/npm/jarallax@2/dist/jarallax.min.css" rel="stylesheet">

<!-- Jarallax JS -->
<script type="module">
  import { jarallax, jarallaxVideo } from "https://cdn.jsdelivr.net/npm/jarallax@2/+esm";

  // 可选的视频扩展
  jarallaxVideo();
</script>

UMD

Jarallax也可以通过传统方式在HTML中包含脚本并通过访问window.jarallax来使用库。

<!-- Jarallax CSS -->
<link href="jarallax.min.css" rel="stylesheet">

<!-- Jarallax JS -->
<script src="jarallax.min.js"></script>

<!-- Jarallax JS: 可选的视频扩展 -->
<script src="jarallax-video.min.js"></script>

UMD CDN

<!-- Jarallax CSS -->
<link href="https://cdn.jsdelivr.net/npm/jarallax@2/dist/jarallax.min.css" rel="stylesheet">

<!-- Jarallax JS -->
<script src="https://cdn.jsdelivr.net/npm/jarallax@2/dist/jarallax.min.js"></script>

<!-- Jarallax JS: 可选的视频扩展 -->
<script src="https://cdn.jsdelivr.net/npm/jarallax@2/dist/jarallax-video.min.js"></script>

CJS (如Webpack等打包工具)

使用npm将Jarallax安装为Node.js模块

npm install jarallax

通过在应用程序的入口点(通常是index.jsapp.js)添加以下行来导入Jarallax:

import { jarallax, jarallaxVideo } from "jarallax";
import 'jarallax/dist/jarallax.min.css';

// 可选的视频扩展
jarallaxVideo();

准备HTML

<!-- 背景图片视差效果 -->
<div class="jarallax">
  <img class="jarallax-img" src="https://raw.githubusercontent.com/nk-o/jarallax/master/<背景图片URL>" alt="">
  在此处放置您的内容...
</div>

<!-- 使用<picture>标签的背景图片视差效果 -->
<div class="jarallax">
  <picture class="jarallax-img">
    <source media="..." srcset="<备选背景图片URL>">
    <img src="https://raw.githubusercontent.com/nk-o/jarallax/master/<背景图片URL>" alt="">
  </picture>
  在此处放置您的内容...
</div>

<!-- 替代方法:背景图片视差效果 -->
<div class="jarallax" style="background-image: url('<背景图片URL>');">
  在此处放置您的内容...
</div>

运行Jarallax

注意:自动数据属性初始化和jQuery集成仅在UMD模式下可用。

A. JavaScript方式

jarallax(document.querySelectorAll('.jarallax'), {
  speed: 0.2,
});

B. 数据属性方式

<div data-jarallax data-speed="0.2" class="jarallax">
  <img class="jarallax-img" src="https://raw.githubusercontent.com/nk-o/jarallax/master/<背景图片URL>" alt="">
  在此处放置您的内容...
</div>

注意:您可以将所有可用选项作为数据属性使用。例如:data-speeddata-img-srcdata-img-size等...

C. jQuery方式

$('.jarallax').jarallax({
  speed: 0.2,
});

无冲突(仅当您使用jQuery时)

有时为了防止现有的命名空间冲突,您可以在脚本上调用.noConflict来恢复之前赋值的值。

const jarallaxPlugin = $.fn.jarallax.noConflict() // 将$.fn.jarallax恢复为之前赋值的值
$.fn.newJarallax = jarallaxPlugin // 将Jarallax功能赋给$().newJarallax

背景视频使用示例

A. JavaScript方式

import { jarallax, jarallaxVideo } from 'jarallax';
jarallaxVideo();

jarallax(document.querySelectorAll('.jarallax'), {
  speed: 0.2,
  videoSrc: 'https://www.youtube.com/watch?v=ab0TSkLe-E0'
});
<div class="jarallax"></div>

B. 数据属性方式

<!-- 背景YouTube视差效果 -->
<div class="jarallax" data-jarallax data-video-src="https://www.youtube.com/watch?v=ab0TSkLe-E0">
  在此处放置您的内容...
</div>

<!-- 背景Vimeo视差效果 -->
<div class="jarallax" data-jarallax data-video-src="https://vimeo.com/110138539">
  在此处放置您的内容...
</div>

<!-- 背景自托管视频视差效果 -->
<div class="jarallax" data-jarallax data-video-src="mp4:./video/local-video.mp4,webm:./video/local-video.webm,ogv:./video/local-video.ogv">
  在此处放置您的内容...
</div>

注意:自托管视频只需要1种视频类型,不一定要同时使用mp4、webm和ogv。这样做只是为了在所有浏览器中获得最大的兼容性。

选项

选项可以通过数据属性传递,或在通过脚本初始化jarallax时作为对象传递。

名称类型默认值描述
type字符串scrollscroll、scale、opacity、scroll-opacity、scale-opacity。
speed浮点数0.5视差效果速度。提供-1.0到2.0之间的数字。
containerClass字符串jarallax-container容器块的class属性。
imgSrc路径null图片URL。默认使用背景中的图片。
imgElementdom / 选择器.jarallax-img将用作背景的图片标签。
imgSize字符串cover图片尺寸。如果您为背景使用<img>标签,应添加object-fit值,否则使用background-size值。
imgPosition字符串50% 50%图片位置。如果您为背景使用<img>标签,应添加object-position值,否则使用background-position值。
imgRepeat字符串no-repeat图片重复。仅支持background-position值。
keepImg布尔值false在Jarallax初始化后保持<img>标签在其默认位置。
elementInViewportdomnull使用自定义DOM / jQuery元素来检查视差块是否在视口中。更多信息请参见 - Issue 13
zIndex数字-100视差容器的z-index。
disableParallax布尔值 / 正则表达式 / 函数-在特定用户代理上禁用视差效果(使用正则表达式)或通过函数返回值禁用。图片将设置为背景。

在移动设备上禁用

您可以使用disableParallax和/或disableVideo选项在移动设备上禁用视差效果和/或视频背景。

示例:

jarallax(document.querySelectorAll('.jarallax'), {
  disableParallax: /iPad|iPhone|iPod|Android/,
  disableVideo: /iPad|iPhone|iPod|Android/
});

或使用函数。示例:

jarallax(document.querySelectorAll('.jarallax'), {
  disableParallax: function () {
    return /iPad|iPhone|iPod|Android/.test(navigator.userAgent);
  },
  disableVideo: function () {
    return /iPad|iPhone|iPod|Android/.test(navigator.userAgent);
  }
});

视频扩展的附加选项

需要jarallax/jarallax-video.js文件。

名称类型默认值描述
videoClass字符串jarallax-video视频框架的class属性。还将包含视频类型,例如 jarallax-video jarallax-video-youtube
videoSrc字符串null你可以使用Youtube、Vimeo或自托管视频。也可以使用数据属性 data-jarallax-video
videoStartTime浮点数0视频开始播放的时间(秒)(该值在循环后也会应用)。
videoEndTime浮点数0视频结束的时间(秒)。
videoLoop布尔值true循环播放视频。
videoPlayOnlyVisible布尔值true仅当视频在屏幕上可见时播放。
videoLazyLoading布尔值true仅当视频在屏幕上可见时预加载。
disableVideo布尔值 / 正则表达式 / 函数-在特定用户代理上禁用视频加载(使用正则表达式)或通过函数返回值禁用。背景将设置为图片。

事件

事件的使用方式与选项相同。

名称描述
onScroll当视差效果工作时调用。使用第一个参数进行计算。更多信息见下文
onInit初始化结束后调用。
onDestroy销毁后调用。
onCoverImage覆盖图片后调用。

视频扩展的附加事件

需要 jarallax/jarallax-video.js 文件。

名称描述
onVideoInsert视频插入视差块后立即调用。可通过 this.$video 访问视频
onVideoWorkerInitVideoWorker脚本初始化后调用。可用参数为videoWorkerObject。

onScroll事件

jarallax(document.querySelectorAll('.jarallax'), {
  onScroll: function(calculations) {
    console.log(calculations);
  }
});

控制台结果:

{
  // 视差部分客户端矩形(上、左、宽、高)
  rect            : 对象,

  // 更多信息见下方图片
  beforeTop       : 浮点数,
  beforeTopEnd    : 浮点数,
  afterTop        : 浮点数,
  beforeBottom    : 浮点数,
  beforeBottomEnd : 浮点数,
  afterBottom     : 浮点数,

  // 可见部分的百分比(从0到1)
  visiblePercent  : 浮点数,

  // 块相对于视口中心的位置百分比,从-1到1
  fromViewportCenter: 浮点数
}

计算示例: 滚动计算

方法

名称结果描述
destroy-销毁Jarallax并将块恢复到插件初始化前的状态。
isVisible布尔值检查视差块是否在视口中。
onResize-调整图片大小并裁剪视差容器。在窗口调整大小和加载时调用。
onScroll-计算视差图片位置。在窗口滚动时调用。

调用方法示例

A. JavaScript方式

jarallax(document.querySelectorAll('.jarallax'), 'destroy');

B. jQuery方式

$('.jarallax').jarallax('destroy');

开发者指南

安装

  • 在命令行中运行 npm install

构建

  • npm run dev 运行构建并启动带有文件监视器的本地服务器
  • npm run build 运行构建

代码检查

  • npm run js-lint 显示eslint错误
  • npm run js-lint-fix 自动修复部分eslint错误

测试

  • npm run test 运行单元测试

实际使用示例

鸣谢

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号