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

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

Project Cover

Kimi

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

Project Cover

阿里绘蛙

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

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

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