Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
制作理想的旋转木马,第 1 部分_创想鸟

制作理想的旋转木马,第 1 部分

轮播是流媒体和电子商务网站的主要内容。亚马逊和 netflix 都使用它们作为重要的导航工具。在本教程中,我们将评估两者的交互设计,并利用我们的发现来实现完美的轮播。

在本教程系列中,我们还将学习 JavaScript 运动引擎 Popmotion 的一些功能。它提供了动画工具,例如补间(用于分页)、指针跟踪(用于滚动)和弹簧物理(用于我们令人愉快的最后润色。)

第 1 部分将评估 Amazon 和 Netflix 如何实现滚动。然后,我们将实现一个可以通过触摸滚动的轮播。

在本系列结束时,我们将使用弹簧物理实现滚轮和触摸板滚动、分页、进度条、键盘导航和一些小触摸。我们还将接触到一些基本的函数组合。

完美吗?

怎样才能让轮播变得“完美”?它必须可以通过以下方式访问:

鼠标:它应该提供易于点击且不会遮挡内容的上一个和下一个按钮。触摸:它应该跟踪手指,然后以与手指离开屏幕时相同的动量滚动。滚轮:经常被忽视的 Apple Magic Mouse 鼠标和许多笔记本电脑触控板提供平滑的水平滚动功能。我们应该利用这些能力!键盘:许多用户不愿意或无法使用鼠标进行导航。让我们的轮播变得易于访问非常重要,这样这些用户也可以使用我们的产品。

最后,我们将更进一步,当滑块到达末端时,让轮播通过弹簧物理做出清晰而本能的响应,使其成为自信、令人愉悦的用户体验。

设置

首先,让我们通过分叉此 CodePen 来获取构建基本轮播所需的 HTML 和 CSS。

Pen 使用 Sass 来预处理 CSS,使用 Babel 来转译 ES6 JavaScript。我还添加了 Popmotion,可以通过 window.popmotion 访问它。

如果您愿意,可以将代码复制到本地项目,但您需要确保您的环境支持 Sass 和 ES6。您还需要使用 npm install popmotion 安装 Popmotion。

创建新的轮播

在任何给定页面上,我们可能有许多轮播。所以我们需要一个方法来封装每个的状态和功能。

我将使用工厂函数而不是 class。工厂函数避免了使用经常令人困惑的 this 关键字,并且将简化本教程的代码。

在您的 JavaScript 编辑器中,添加这个简单的函数:

function carousel(container) {}carousel(document.querySelector('.container'));

我们将在此 carousel 函数中添加特定于轮播的代码。

滚动的方式和原因

我们的第一个任务是使轮播滚动。我们可以通过两种方法来解决这个问题:

本机浏览器滚动

显而易见的解决方案是在滑块上设置 overflow-x:scroll。这将允许在所有浏览器上进行本机滚动,包括触摸和水平鼠标滚轮设备。

但是,这种方法也有缺点:

容器外部的内容将不可见,这可能会限制我们的设计。它还限制了我们使用动画来指示已到达终点的方式。桌面浏览器将有一个丑陋的(尽管可以访问!)水平滚动条。

或者:

动画 translateX

我们还可以为轮播的 translateX 属性设置动画。这将是非常通用的,因为我们能够准确地实现我们喜欢的设计。 translateX 的性能也非常好,因为与 CSS left 属性不同,它可以由设备的 GPU 处理。

缺点是,我们必须使用 JavaScript 重新实现滚动功能。这意味着更多的工作、更多的代码。

亚马逊和 Netflix 如何实现滚动?

亚马逊和 Netflix 轮播在解决这个问题时都做出了不同的权衡。

Amazon 在“桌面”模式下为轮播的 left 属性设置动画。对 left 进行动画处理是一个非常糟糕的选择,因为更改它会触发布局重新计算。这是 CPU 密集型的,较旧的机器很难达到 60fps。

无论谁决定对 left 而不是 translateX 进行动画处理,他一定是个真正的白痴(剧透:是我,早在 2012 年。那时我们还没有那么开明。)

当检测到触摸设备时,轮播会使用浏览器的本机滚动。仅在“移动”模式下启用此功能的问题是使用水平滚轮的桌面用户会错过。这也意味着轮播之外的任何内容都必须在视觉上被切断:

制作理想的旋转木马,第 1 部分

Netflix 正确动画轮播的 translateX 属性,并且在所有设备上均如此。这使他们能够拥有一种在轮播之外渗透的设计:

制作理想的旋转木马,第 1 部分

这反过来又允许他们做出奇特的设计,其中项目在轮播的 x 和 y 边缘之外放大,而周围的项目移开:

制作理想的旋转木马,第 1 部分

不幸的是,Netflix 对触摸设备滚动的重新实现并不令人满意:它使用基于手势的分页系统,感觉又慢又麻烦。也没有考虑水平滚轮。

我们可以做得更好。让我们编码吧!

像专业人士一样滚动

我们的第一步是获取 .slider 节点。当我们这样做时,让我们抓取它包含的项目,以便我们可以计算出滑块的尺寸。

function carousel(container) {  const slider = container.querySelector('.slider');  const items = slider.querySelectorAll('.item');}

测量轮播

我们可以通过测量滑块的宽度来计算出滑块的可见区域:

const sliderVisibleWidth = slider.offsetWidth;

我们还需要其中包含的所有项目的总宽度。为了使我们的 carousel 函数保持相对干净,让我们将此计算放在文件顶部的单独函数中。

通过使用 getBoundingClientRect 测量第一项的 left 偏移量和最后一项的 right 偏移量,我们可以使用差异在它们之间找到所有项目的总宽度。

function getTotalItemsWidth(items) {  const { left } = items[0].getBoundingClientRect();  const { right } = items[items.length - 1].getBoundingClientRect();  return right - left;}

在我们的 sliderVisibleWidth 测量之后,写入:

const totalItemsWidth = getTotalItemsWidth(items);

我们现在可以算出我们的轮播应该允许滚动的最大距离。它是所有项目的总宽度,减去可见滑块的整个宽度。这提供了一个数字,允许最右边的项目与滑块的右侧对齐:

const maxXOffset = 0;const minXOffset = - (totalItemsWidth - sliderVisibleWidth);

完成这些测量后,我们就可以开始滚动轮播了。

设置 translateX

Popmotion 附带 CSS 渲染器,用于简单且高效地设置 CSS 属性。它还带有一个值函数,可用于跟踪数字,更重要的是(我们很快就会看到),可用于查询其速度。

在 JavaScript 文件的顶部,像这样导入它们:

const { css, value } = window.popmotion;

然后,在设置 minXOffset 后,为滑块创建一个 CSS 渲染器:

const sliderRenderer = css(slider);

并创建一个 value 来跟踪滑块的 x 偏移量,并在滑块的 translateX 属性发生变化时更新它:

const sliderX = value(0, (x) => sliderRenderer.set('x', x));

现在,水平移动滑块就像编写一样简单:

sliderX.set(-100);

试试吧!

触摸滚动

我们希望轮播在用户 水平拖动滑块时开始滚动,并在用户停止触摸屏幕时停止滚动。我们的事件处理程序将如下所示:

let action;function stopTouchScroll() {  document.removeEventListener('touchend', stopTouchScroll);}function startTouchScroll(e) {  document.addEventListener('touchend', stopTouchScroll);}slider.addEventListener('touchstart', startTouchScroll, { passive: false });

在我们的 startTouchScroll 函数中,我们想要:

停止任何其他为 sliderX 提供动力的操作。找到原点接触点。监听下一个 touchmove 事件,看看用户是垂直拖动还是水平拖动。

在document.addEventListener后添加:

if (action) action.stop();

这将阻止任何其他操作(例如我们将在 stopTouchScroll 中实现的物理动力动量滚动)移动滑块。如果滑块滚动经过他们想要单击的项目或标题,这将允许用户立即“捕获”滑块。

接下来,我们需要存储原点触摸点。这将使我们能够看到用户接下来将手指移动到哪里。如果是垂直移动,我们将允许页面像往常一样滚动。如果是水平移动,我们将滚动滑块。

卡拉OK视频制作 卡拉OK视频制作

卡拉OK视频制作,在几分钟内制作出你的卡拉OK视频

卡拉OK视频制作 178 查看详情 卡拉OK视频制作

我们希望在事件处理程序之间共享此 touchOrigin。所以在 let action; 之后添加:

let touchOrigin = {};

回到我们的 startTouchScroll 处理程序,添加:

const touch = e.touches[0];touchOrigin = {  x: touch.pageX,  y: touch.pageY};

我们现在可以向 document 添加一个 touchmove 事件监听器,以根据此 touchOrigin 确定拖动方向:

document.addEventListener('touchmove', determineDragDirection);

我们的 defineDragDirection 函数将测量下一个触摸位置,检查它是否实际移动,如果是,则测量角度以确定它是垂直还是水平:

function determineDragDirection(e) {  const touch = e.changedTouches[0];  const touchLocation = {    x: touch.pageX,    y: touch.pageY  };}

Popmotion 包含一些有用的计算器,用于测量两个 x/y 坐标之间的距离等内容。我们可以这样导入:

const { calc, css, value } = window.popmotion;

然后测量两点之间的距离是使用 distance 计算器:

const distance = calc.distance(touchOrigin, touchLocation);

现在,如果触摸已移动,我们可以取消设置此事件侦听器。

if (!distance) return;document.removeEventListener('touchmove', determineDragDirection);

使用 angle 计算器测量两点之间的角度:

const angle = calc.angle(touchOrigin, touchLocation);

我们可以通过将其传递给以下函数来确定该角度是水平角度还是垂直角度。将此函数添加到我们文件的最顶部:

function angleIsVertical(angle) {  const isUp = (    angle = -90 - 45  );  const isDown = (    angle = 90 - 45  );  return (isUp || isDown);}

如果提供的角度在 -90 +/- 45 度(垂直向上)或 90 +/-45 度(垂直向下)范围内,此函数将返回 true。因此我们可以添加另一个 return 子句,如果此函数返回 true。

if (angleIsVertical(angle)) return;

指针跟踪

现在我们知道用户正在尝试滚动轮播,我们可以开始跟踪他们的手指。 Popmotion 提供了一个指针操作,可输出鼠标或触摸指针的 x/y 坐标。

首先导入指针:

const { calc, css, pointer, value } = window.popmotion;

要跟踪触摸输入,请将原始事件提供给 pointer:

action = pointer(e).start();

我们想要测量指针的初始 x 位置并将任何移动应用于滑块。为此,我们可以使用名为 applyOffset 的转换器。

转换器是纯函数,它接受一个值,并返回它——是的——转换后的值。例如:const double = (v) => v * 2。

const { calc, css, pointer, transform, value } = window.popmotion;const { applyOffset } = transform;

applyOffset 是一个柯里化函数。这意味着当我们调用它时,它会创建一个新函数,然后可以向该函数传递一个值。我们首先使用要测量偏移量的数字(在本例中为 action.x 的当前值)以及要应用该偏移量的数字来调用它。在本例中,这就是我们的 sliderX。

因此我们的 applyOffset 函数将如下所示:

const applyPointerMovement = applyOffset(action.x.get(), sliderX.get());

我们现在可以在指针的 output 回调中使用此函数,将指针移动应用到滑块。

action.output(({ x }) => slider.set(applyPointerMovement(x)));

停下来,有风格

轮播现在可以通过触摸拖动!您可以使用 Chrome 开发者工具中的设备模拟来测试这一点。

感觉有点笨拙,对吧?您以前可能遇到过这样的滚动感觉:抬起手指,滚动就停止了。或者滚动停止,然后一个小动画接管以假装滚动继续。

我们不会那样做。我们可以使用 Popmotion 中的物理动作来获取 sliderX 的真实速度,并在一段时间内对其施加摩擦力。

首先,将其添加到我们不断增长的导入列表中:

const { calc, css, physics, pointer, value } = window.popmotion;

然后,在 stopTouchScroll 函数的末尾添加:

if (action) action.stop();action = physics({  from: sliderX.get(),  velocity: sliderX.getVelocity(),  friction: 0.2})  .output((v) => sliderX.set(v))  .start();

这里,from 和 velocity 被设置为 sliderX 的当前值和速度。这确保了我们的物理模拟与用户的拖动运动具有相同的初始启动条件。​​

friction 被设置为 0.2。摩擦力设置为从 0 到 1 的值,其中 0 根本没有摩擦力,而 1 是绝对摩擦力摩擦。尝试使用此值来查看当用户停止拖动时它对轮播的“感觉”产生的变化。

数字越小,感觉越轻,数字越大,动作越重。对于滚动动作,我觉得 0.2 在不稳定和迟缓之间取得了很好的平衡。

边界

但是有一个问题!如果您一直在使用新的触摸旋转木马,那么这是显而易见的。我们没有限制移动,因此可以真正扔掉你的旋转木马!

还有另一个变压器可以完成这项工作,clamp。这也是一个柯里化函数,这意味着如果我们使用最小值和最大值调用它,例如 0 和 1,它将返回一个新函数。在此示例中,新函数将限制给定的任何数字在 0 和 1 之间:

clamp(0, 1)(5); // returns 1

首先导入clamp:

const { applyOffset, clamp } = transform;

我们希望在轮播中使用此夹紧功能,因此在定义 minXOffset 后添加此行:

const clampXOffset = clamp(minXOffset, maxXOffset);

我们将使用 pipe 转换器使用一些轻量函数组合来修改我们在操作上设置的两个 output。

管道

当我们调用函数时,我们这样写:

foo(0);

如果我们想将该函数的输出提供给另一个函数,我们可以这样写:

bar(foo(0));

这变得有点难以阅读,而且随着我们添加越来越多的功能,情况只会变得更糟。

使用 pipe,我们可以从 foo 和 bar 组成一个新函数,我们可以重用它:

const foobar = pipe(foo, bar);foobar(0);

它也是按照自然的开始 -> 结束顺序编写的,这使得它更容易理解。我们可以使用它将 applyOffset 和 clamp 组合成一个函数。导入 pipe:

const { applyOffset, clamp, pipe } = transform;

将 output 回调替换为 pointer :

pipe(  ({ x }) => x,  applyOffset(action.x.get(), sliderX.get()),  clampXOffset,  (v) => sliderX.set(v))

并将 physicals 的 output 回调替换为:

pipe(clampXOffset, (v) => sliderX.set(v))

这种函数组合可以非常巧妙地从较小的、可重用的函数中创建描述性的、逐步的流程。

现在,当您拖动并抛出轮播时,它不会移动到其边界之外。

突然停止并不是很令人满意。但这是稍后部分的问题!

结论

这就是第 1 部分的全部内容。到目前为止,我们已经研究了现有的轮播,以了解不同滚动方法的优点和缺点。我们使用 Popmotion 的输入跟踪和物理原理,通过触摸滚动为轮播的 translateX 提供高性能动画。我们还了解了函数组合和柯里化函数。

您可以在此 CodePen 上获取“到目前为止的故事”的评论版本。

在接下来的几期中,我们将介绍:

用鼠标滚轮滚动当窗口大小调整时重新测量轮播分页,支持键盘和鼠标借助弹簧物理原理实现令人愉悦的触感

期待在那里见到您!

以上就是制作理想的旋转木马,第 1 部分的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/532014.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Linux hostname冲突如何解决
上一篇 2025年11月9日 11:06:34
composer如何解决 “The “…” plugin was skipped because it requires a Plugin API version” 插件不兼容问题
下一篇 2025年11月9日 11:06:39

相关推荐

  • 如何在MySQL中创建唯一索引来确保数据唯一性

    如何在MySQL中创建唯一索引来确保数据唯一性如何在MySQL中创建唯一索引来确保数据唯一性如何在MySQL中创建唯一索引来确保数据唯一性如何在MySQL中创建唯一索引来确保数据唯一性

    标题:MySQL中创建唯一索引来确保数据唯一性的方法及代码示例 在数据库设计中,确保数据的唯一性是非常重要的,可以通过在MySQL中创建唯一索引来实现。唯一索引可以保证表中某列(或列组合)的数值是唯一的,如果尝试插入重复值,MySQL会阻止这种操作并报错。本文将介绍如何在MySQL中创建唯一索引,同…

    2026年9月25日 • 用户投稿
    000
  • UC浏览器安全吗会不会有病毒_UC浏览器安全性及病毒风险分析

    UC浏览器安全吗会不会有病毒_UC浏览器安全性及病毒风险分析UC浏览器安全吗会不会有病毒_UC浏览器安全性及病毒风险分析UC浏览器安全吗会不会有病毒_UC浏览器安全性及病毒风险分析UC浏览器安全吗会不会有病毒_UC浏览器安全性及病毒风险分析

    UC浏览器安全风险需通过更新版本、关闭非必要权限、启用安全浏览、避免下载APK及定期清理数据来防范。首先检查并安装最新版本以修复已知漏洞;随后在系统设置中限制其对位置、通讯录等敏感权限的访问,并关闭内部隐私共享选项;开启网址安全提示与下载扫描功能,阻止恶意内容;不通过浏览器下载APK文件,改用官方应…

    2026年9月25日 • 用户投稿
    000
  • sublime怎么解决高分屏下UI过小的问题_sublime界面缩放与高清屏适配方法

    sublime怎么解决高分屏下UI过小的问题_sublime界面缩放与高清屏适配方法sublime怎么解决高分屏下UI过小的问题_sublime界面缩放与高清屏适配方法sublime怎么解决高分屏下UI过小的问题_sublime界面缩放与高清屏适配方法sublime怎么解决高分屏下UI过小的问题_sublime界面缩放与高清屏适配方法

    首先修改配置文件实现高分屏适配,通过Preferences→Settings添加”ui_scale”:1.25可调整整体界面缩放,其次单独设置”font_size”:14提升代码可读性,最后利用Package Control安装Ayu等现代主题优化显示…

    2026年9月25日 • 用户投稿
    500
  • 宏碁掠夺者战斧18评测 机械键盘轴体手感分析

    宏碁掠夺者战斧18评测 机械键盘轴体手感分析宏碁掠夺者战斧18评测 机械键盘轴体手感分析宏碁掠夺者战斧18评测 机械键盘轴体手感分析宏碁掠夺者战斧18评测 机械键盘轴体手感分析

    宏碁掠夺者战斧18的机械键盘手感出色,是笔记本键盘中的惊喜之作。1. 它搭载cherry mx ulp超薄机械轴,提供清晰段落感与触发反馈,按键干脆、响应迅速;2. 键程虽短但手感直接,适合游戏与快速输入,长时间使用不易疲劳;3. 声音清脆带“咔哒”声,适合喜欢听觉反馈的用户,但在安静环境可能稍显明…

    2026年9月25日 • 用户投稿
    200
  • 使用正则表达式判断字符串中字符是否全部唯一

    使用正则表达式判断字符串中字符是否全部唯一使用正则表达式判断字符串中字符是否全部唯一使用正则表达式判断字符串中字符是否全部唯一使用正则表达式判断字符串中字符是否全部唯一

    本文介绍如何使用Java正则表达式来判断一个字符串中的所有字符是否都是唯一的。我们将探讨一种使用正则表达式检测字符串中是否存在重复字符的方法,并提供相应的Java代码示例。通过本文,你将学习如何利用正则表达式的强大功能来解决字符串处理中的常见问题。 在字符串处理中,经常需要判断一个字符串中的字符是否…

    2026年9月25日 • 用户投稿
    000
  • thinkphp和yii2的优缺点是什么?

    thinkphp和yii2的优缺点是什么?thinkphp和yii2的优缺点是什么?thinkphp和yii2的优缺点是什么?thinkphp和yii2的优缺点是什么?

    什么是thinkphp?优缺点是什么? ThinkPHP是免费开源的,快速的,简单的,面向对象的轻量级PHP开发框架,ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,Thi…

    2026年9月25日 • 用户投稿
    200
  • 怎么查询苹果手机的激活日期

    怎么查询苹果手机的激活日期怎么查询苹果手机的激活日期怎么查询苹果手机的激活日期怎么查询苹果手机的激活日期

    通过以下方法查询苹果手机的激活日期:1. 访问苹果支持网站并输入序列号;2. 在“设置”中查看“关于本机”;3. 使用 iTunes 连接计算机并查看“购买日期”;4. 下载第三方应用程序如 PhoneInfo X。 如何查询苹果手机的激活日期 查询苹果手机的激活日期有以下几种方法: 1. 通过苹果…

    2026年9月25日 • 用户投稿
    100
  • 用豆包AI生成Python数据挖掘代码

    用豆包AI生成Python数据挖掘代码用豆包AI生成Python数据挖掘代码用豆包AI生成Python数据挖掘代码用豆包AI生成Python数据挖掘代码

    想用豆包ai生成python数据挖掘代码的关键在于明确任务目标和数据结构。1. 首先明确数据挖掘任务类型,如分类、聚类或回归,并具体描述需求,例如“根据用户年龄、消费金额和购买频率做客户分群”。2. 接着提供清晰的数据格式与来源,比如说明csv文件中的字段信息,以便ai进行数据预处理和建模。3. 要…

    2026年9月25日 • 用户投稿
    900
  • sublime怎么解决许可证密钥(license key)无效问题 _sublime许可证密钥无效修复方法

    sublime怎么解决许可证密钥(license key)无效问题 _sublime许可证密钥无效修复方法sublime怎么解决许可证密钥(license key)无效问题 _sublime许可证密钥无效修复方法sublime怎么解决许可证密钥(license key)无效问题 _sublime许可证密钥无效修复方法sublime怎么解决许可证密钥(license key)无效问题 _sublime许可证密钥无效修复方法

    使用官方购买的正版密钥并清除非法残留可解决Sublime Text许可证无效问题,确保正确输入用户名和多行密钥,删除Local目录下的License.sublime_license文件,检查hosts文件是否屏蔽验证域名,重启软件后即可恢复正常。 Sublime Text 出现许可证密钥无效的问题,…

    2026年9月25日 • 用户投稿
    200
  • 戴尔UltraSharp U2724DE显示器测试 IPS Black对比度

    戴尔UltraSharp U2724DE显示器测试 IPS Black对比度戴尔UltraSharp U2724DE显示器测试 IPS Black对比度戴尔UltraSharp U2724DE显示器测试 IPS Black对比度戴尔UltraSharp U2724DE显示器测试 IPS Black对比度

    戴尔u2724de显示器的最大亮点是其ips black面板带来的对比度提升。1. ips black技术通过优化液晶分子排列和控制背光穿透率,使对比度达到2000:1,显著改善黑色表现和暗部细节;2. 显示器覆盖98% dci-p3和100% srgb色域,出厂校准delta e<2,色彩精…

    2026年9月25日 • 用户投稿
    200
  • 《最终幻想》手游《最终幻想:勇气启示录》官宣停服!之后计划发布纪念版本

    《最终幻想》手游《最终幻想:勇气启示录》官宣停服!之后计划发布纪念版本《最终幻想》手游《最终幻想:勇气启示录》官宣停服!之后计划发布纪念版本《最终幻想》手游《最终幻想:勇气启示录》官宣停服!之后计划发布纪念版本《最终幻想》手游《最终幻想:勇气启示录》官宣停服!之后计划发布纪念版本

    今日,se官方宣布旗下《最终幻想》系列手游《最终幻想:勇气启示录 幻影战争》日服将于2025年10月31日中午11点正式终止运营。 官方表示,在正式停服前将推出“盛大落幕活动”,以此感谢长期以来支持游戏的玩家们。停运后,开发团队计划推出一款纪念版本,仅限Apple和Google平台上线,供玩家留念。…

    2026年9月25日 • 用户投稿
    000
  • 淘宝支付方式无法切换怎么办 支付设置修改与修复方法

    淘宝支付方式无法切换怎么办 支付设置修改与修复方法淘宝支付方式无法切换怎么办 支付设置修改与修复方法淘宝支付方式无法切换怎么办 支付设置修改与修复方法淘宝支付方式无法切换怎么办 支付设置修改与修复方法

    首先检查默认支付设置并更换支付渠道,确认各支付方式状态正常,清除淘宝缓存或重启应用,更新淘宝与支付宝至最新版本,切换网络环境或尝试网页端操作,若仍无法解决则联系客服处理。 淘宝支付方式无法切换,可能是由于账户设置、网络问题或系统缓存导致。别着急,大多数情况下通过简单的设置调整就能解决。以下是几种常见…

    2026年9月25日 • 用户投稿
    000
  • Debian系统OpenSSL漏洞修复

    Debian系统OpenSSL漏洞修复Debian系统OpenSSL漏洞修复Debian系统OpenSSL漏洞修复Debian系统OpenSSL漏洞修复

    确保Debian系统的OpenSSL安全,请遵循以下步骤: 一、系统更新: 首先,更新您的Debian系统至最新版本。使用以下命令更新软件包列表并升级所有已安装软件: sudo apt updatesudo apt upgrade 二、版本确认: 检查当前OpenSSL版本: openssl ver…

    2026年9月25日 • 用户投稿
    000
  • thinkphp函数有哪些

    thinkphp函数有哪些thinkphp函数有哪些thinkphp函数有哪些thinkphp函数有哪些

    thinkphp函数有哪些? thinkphp5.0 助手函数大全 推荐教程:thinkphp教程 load_trait:快速导入Traits,PHP5.5以上无需调用 /** * 快速导入Traits PHP5.5以上无需调用 * @param string $class trait库 * @pa…

    2026年9月25日 • 用户投稿
    200
  • 忘记iphone手机密码如何解决

    通过iCloud恢复备份(需已开启iCloud备份并能正常登录Apple ID) 在电脑浏览器中访问iCloud官网,使用与锁定iPhone关联的Apple ID和密码登录。 登录后,进入“查找我的iPhone”功能页面。 在设备列表中选择已锁定的iPhone,点击“抹掉iPhone”选项。此操作将…

    2026年9月25日
    100
  • RTX 5080整机塞进保时捷911轮毂!通过钥匙开机重启

    RTX 5080整机塞进保时捷911轮毂!通过钥匙开机重启RTX 5080整机塞进保时捷911轮毂!通过钥匙开机重启RTX 5080整机塞进保时捷911轮毂!通过钥匙开机重启RTX 5080整机塞进保时捷911轮毂!通过钥匙开机重启

    10月13日,当汽车与高性能计算相遇,会激发出怎样的创意奇迹?nvidia在最新一期geforce garage节目中揭晓了答案。 这一次,他们携手改装界传奇人物JCustom(Justin Chu),将一台完整的RTX 5080游戏主机巧妙植入保时捷911的轮毂之中,实现了汽车工艺与电脑科技的惊艳…

    2026年9月25日 • 用户投稿
    100
  • 如何在ThinkPHP6中使用Eloquent简化业务层

    随着互联网的发展,web应用程序的开发已经成为现代软件开发的核心。由于业务逻辑的复杂性,开发人员需要很多工具和技术来简化代码,提高效率。在这方面,使用eloquent orm可以大大简化业务层代码。在本文中,我们将介绍如何在thinkphp6中使用eloquent来简化业务层。 什么是Eloquen…

    用户投稿 2026年9月25日
    100
  • 苹果怎么查激活时间

    苹果怎么查激活时间苹果怎么查激活时间苹果怎么查激活时间苹果怎么查激活时间

    您可以通过以下步骤查询 Apple 设备的激活时间:1. 打开设备“设置”;2. 点按“通用”;3. 点按“关于”;4. 查找“激活于”标签即可查看激活时间。 如何查询 Apple 设备的激活时间 想知道您 Apple 设备的激活时间吗?以下是查询该信息的步骤: 步骤 1:访问设备设置 在您的 Ap…

    2026年9月25日 • 用户投稿
    000
  • 外键在MySQL数据库中的重要性和实践意义

    外键在MySQL数据库中的重要性和实践意义外键在MySQL数据库中的重要性和实践意义外键在MySQL数据库中的重要性和实践意义外键在MySQL数据库中的重要性和实践意义

    外键在MySQL数据库中的重要性和实践意义 在MySQL数据库中,外键(Foreign Key)是一种用来建立不同表之间关联关系的重要约束。外键约束确保了表与表之间的数据一致性和完整性,能够有效避免不正确的数据插入、更新或删除操作。 一、外键的重要性: 降重鸟 要想效果好,就用降重鸟。AI改写智能降…

    2026年9月25日 • 用户投稿
    100
  • 亚马逊拟再次向AI创企Anthropic投资数十亿美元

    亚马逊拟再次向AI创企Anthropic投资数十亿美元亚马逊拟再次向AI创企Anthropic投资数十亿美元亚马逊拟再次向AI创企Anthropic投资数十亿美元亚马逊拟再次向AI创企Anthropic投资数十亿美元

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 有消息透露,亚马逊正计划再度向人工智能企业Anthropic注资数十亿美元,旨在深化两家公司的战略合作关系。据悉,此次潜在的投资可能在去年11月承诺的80亿美元基础上进一步加码。 早在2024年…

    2026年9月25日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信