ele.offsetTop

  • ele.offsetTop 返回元素相对于其 offsetParent 元素的顶部内边距的距离。offsetParent 通常是最接近的具有定位(relative, absolute, 或 fixed)的祖先元素,如果没有这样的元素,则是文档的根元素。
  • 在代码中,obj.offset().top 返回的是 obj 元素相对于文档顶部的偏移量。

ele.scrollTop

  • ele.scrollTop 返回元素的垂直滚动条的位置。对于窗口对象,$(window).scrollTop() 返回的是文档的当前滚动位置,即用户滚动到的垂直距离。

window.height:

  • window.height 获取窗口的高度。$(window).height() 返回的是浏览器窗口的高度,单位为像素。

ele.getBoundingClientRect():

  • ele.getBoundingClientRect() 返回元素的大小及其相对于视口的位置。该方法返回一个 DOMRect 对象,包含 top、right、bottom、left、width 和 height 属性。
  • 与 ele.offsetTop 不同,getBoundingClientRect() 返回的坐标是相对于视口而不是文档。视口是浏览器显示页面的部分,而文档则是整个网页。

Unsplash Source

URL: source.unsplash.com
描述:从Unsplash获取高质量的随机图片,支持自定义尺寸和关键词搜索。
Lorem Picsum

URL: picsum.photos
描述:提供高质量的随机图片生成服务,支持自定义尺寸和模糊效果。
Picsum

URL: picsum.photos
描述:类似于Lorem Picsum,可以生成不同尺寸和风格的随机图片。
Placeholder.com

URL: placeholder.com
描述:一个简单快速的占位符图片生成器,可以自定义尺寸、颜色和文字。
Fill Murray

URL: fillmurray.com
描述:提供不同尺寸的Bill Murray随机图片,适合轻松娱乐使用。
Placekitten

URL: placekitten.com
描述:生成各种尺寸的可爱小猫图片,适合猫咪爱好者使用。
这些网站工具通常加载速度较快,提供的图片质量高,适用于各种项目和需求。

filter() 方法创建给定数组一部分的浅拷贝,其包含通过所提供函数实现的测试的所有元素。


        const words = ['spray', 'elite', 'exuberant', 'destruction', 'present'];

        const result = words.filter((word) => word.length >= 6);
        console.log(result);

replace() 方法返回一个新字符串,其中一个、多个或所有匹配的 pattern 被替换为 replacement。pattern 可以是字符串或 RegExp,replacement 可以是字符串或一个在每次匹配时调用的函数。如果 pattern 是字符串,则只会替换第一个匹配项。原始的字符串不会改变。

const paragraph = "I think Ruth's dog is cuter than your dog!";

console.log(paragraph.replace("Ruth's", 'my'));
// Expected output: "I think my dog is cuter than your dog!"

const regex = /Dog/i;
console.log(paragraph.replace(regex, 'ferret'));
// Expected output: "I think Ruth's ferret is cuter than your dog!"

Object.keys() 静态方法返回一个由给定对象自身的可枚举的字符串键属性名组成的数组。

const object1 = {
  a: 'somestring',
  b: 42,
  c: false,
};

console.log(Object.keys(object1));
// Expected output: Array ["a", "b", "c"]

Object.values() 静态方法返回一个给定对象的自有可枚举字符串键属性值组成的数组。

const object1 = {
  a: 'somestring',
  b: 42,
  c: false,
};

console.log(Object.values(object1));
// Expected output: Array ["somestring", 42, false]

HTML 内容模板(<template>)元素是一种用于保存客户端内容机制,该内容在加载页面时不会呈现,但随后可以 (原文为 may be) 在运行时使用 JavaScript 实例化。

将模板视为一个可存储在文档中以便后续使用的内容片段。虽然解析器在加载页面时确实会处理 <template> 元素的内容,但这样做只是为了确保这些内容有效;但元素内容不会被渲染。

HTMLTemplateElement.content 属性返回 <template> 元素的模板内容(一个 DocumentFragment)。

示例:

    //加载并克隆一个预定义的 HTML 模板
    loadTemplate() {
        const template = document.getElementById('vehicle-selector-template');
        if (template) {
            const templateContent = template.content.cloneNode(true);
            this.appendChild(templateContent);
        } else {
            console.error('Template not found');
        }
    }

文件命名

  • img-1.jpg, img-2.jpg 等文件被分割到不同文件夹中,是因为 Vite 对资源进行了哈希处理,以避免缓存问题。
  • modalSlide.css 文件夹 包含了 CSS 文件。这是因为 Vite 对 CSS 进行了代码分割。
  • modulepreload-polyfill 文件夹 是用来支持模块预加载的 polyfill。

资源的拆分

  • Swiper 被单独输出是因为它是一个独立的模块,并且被识别为大文件需要单独打包。
  • GSAP 被整合进 ugcSlide.js 是因为它可能被认为是一个较小的依赖,没有单独打包的必要。

在每次构建之前,确保清理构建输出目录。你可以在构建脚本中添加清理命令:

1.安装 rimraf:

npm install rimraf --save-dev

2. 在 package.json 中的构建脚本中添加清理命令:

"scripts": {
  "clean": "rimraf dist",
  "build": "npm run clean && vite build"
}

运行构建命令

rm -rf node_modules
npm install

Run Vite Build with Debug: Run Vite build with the debug flag to get more detailed logs.

DEBUG=vite:* npm run build

清除缓存并重试

尝试清除构建缓存并重新构建项目:

rm -rf node_modules/.vite
npm run build