跑马灯

GitHub
一个用于创建无限滚动内容的组件。

用法

使用默认插槽和您的内容来创建无限滚动的动画。

<template>
  <UMarquee>
    <UIcon name="i-simple-icons-github" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-discord" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-x" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-instagram" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-linkedin" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-facebook" class="size-10 shrink-0" />
  </UMarquee>
</template>

鼠标悬停时暂停

使用 pause-on-hover 属性,在用户将鼠标悬停在内容上时暂停动画。

<template>
  <UMarquee pause-on-hover>
    <UIcon name="i-simple-icons-github" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-discord" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-x" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-instagram" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-linkedin" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-facebook" class="size-10 shrink-0" />
  </UMarquee>
</template>

反转

使用 reverse 属性来反转动画方向。

<template>
  <UMarquee reverse>
    <UIcon name="i-simple-icons-github" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-discord" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-x" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-instagram" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-linkedin" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-facebook" class="size-10 shrink-0" />
  </UMarquee>
</template>

Orientation

使用 orientation 属性来改变滚动方向。

<template>
  <UMarquee orientation="vertical">
    <UIcon name="i-simple-icons-github" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-discord" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-x" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-instagram" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-linkedin" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-facebook" class="size-10 shrink-0" />
  </UMarquee>
</template>

重复

使用 repeat 属性来指定动画中内容应重复的次数。

<template>
  <UMarquee :repeat="6">
    <UIcon name="i-simple-icons-github" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-discord" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-x" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-instagram" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-linkedin" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-facebook" class="size-10 shrink-0" />
  </UMarquee>
</template>

遮罩层

使用 overlay 属性移除跑马灯边缘的渐变叠加。

<template>
  <UMarquee :overlay="false">
    <UIcon name="i-simple-icons-github" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-discord" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-x" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-instagram" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-linkedin" class="size-10 shrink-0" />
    <UIcon name="i-simple-icons-facebook" class="size-10 shrink-0" />
  </UMarquee>
</template>

示例

客户评价

使用 Marquee 组件为您的客户评价创建无限滚动的动画。

我们曾使用一个SaaS服务来搭建文档站点,但效果不尽如人意。我们投入了精力进行内部开发,使用了UI Pro,不仅收到了潜在客户对我们网站的赞扬,他们还想了解我们的平台。
Anthony Bettini

Anthony Bettini

VulnCheck 首席执行官兼创始人

哇,Nuxt UI Pro 简直是游戏规则的改变者!我对其质量、对细节的关注以及组件的惊人多样性深感 impressed。对于任何开发者来说,这就像中了头奖。我节省了无数个小时,这些时间本可以用来为让我的应用程序看起来漂亮而烦恼,同时还要保证令人惊叹的无障碍用户体验,相反,我能够专注于真正重要的事情——构建应用程序本身。对我来说,这是每一次的即时购买,毫不犹豫!
Yaz Jallad

Yaz Jallad

Ninjaparade Digital 创始人

Nuxt UI Pro 节省了数百小时的开发和设计时间,同时在任何设备上都能呈现出干净专业的外观。
Kevin Olson

Kevin Olson

Fume.app 创始人

我决定用组件库替换我自定义构建的组件,并选择了 Nuxt UI Pro。只花了几个小时,新的 UI 就看起来更专业了。集成库很容易;组件文档齐全且高度可定制。我只能推荐它;这个库是我新SaaS产品的新选择。
Michael Hoffmann

Michael Hoffmann

高级前端开发人员

Nuxt UI Pro 是我首选的组件库。它开箱即用地满足了我提出的所有 UI 需求,同时看起来很棒。它的可定制性非常值得称赞,可以轻松覆盖组件。每次更新中带来的改进也总是让我感到惊叹,团队做得非常出色。
Harlan Wilton

Harlan Wilton

Nuxt 核心团队成员

我一看到 Nuxt 团队的新 UI 工具包,就立刻抓住了购买的机会。虽然我已经很喜欢 Nuxt UI 了,但专业版将其提升到了一个全新的水平,让我可以将整个区块粘贴到我所有的项目中,节省了我大量的时间。
Thomas Sanlis

Thomas Sanlis

自由开发者和设计师

Nuxt UI 让我无需任何事先的线框图就能开发我的 SaaS。其组件的设计质量和智能的 DX 意味着我能够为我的应用程序尝试多种不同的布局,直到找到最适合用户的 UX。Nuxt UI 是我一直梦想自己构建的 UI 工具包,而 Nuxt UI Pro 在您想让您的 SaaS 更进一步时,能让事情变得更加轻松。赞扬团队。
Benjamin Code

Benjamin Code

YouTube 主播和 SaaS 开发者

从 POC 到 Web 平台,Nuxt UI Pro 是我一切的首选。它开箱即用,可以帮助我打造像素完美的 UI。它为我节省了大量时间,同时仍然高度可定制。尝试一下,您不会失望的。
Estéban Soubiran

Estéban Soubiran

Web 开发者和 UnJS 成员

我们曾使用一个SaaS服务来搭建文档站点,但效果不尽如人意。我们投入了精力进行内部开发,使用了UI Pro,不仅收到了潜在客户对我们网站的赞扬,他们还想了解我们的平台。
Anthony Bettini

Anthony Bettini

VulnCheck 首席执行官兼创始人

哇,Nuxt UI Pro 简直是游戏规则的改变者!我对其质量、对细节的关注以及组件的惊人多样性深感 impressed。对于任何开发者来说,这就像中了头奖。我节省了无数个小时,这些时间本可以用来为让我的应用程序看起来漂亮而烦恼,同时还要保证令人惊叹的无障碍用户体验,相反,我能够专注于真正重要的事情——构建应用程序本身。对我来说,这是每一次的即时购买,毫不犹豫!
Yaz Jallad

Yaz Jallad

Ninjaparade Digital 创始人

Nuxt UI Pro 节省了数百小时的开发和设计时间,同时在任何设备上都能呈现出干净专业的外观。
Kevin Olson

Kevin Olson

Fume.app 创始人

我决定用组件库替换我自定义构建的组件,并选择了 Nuxt UI Pro。只花了几个小时,新的 UI 就看起来更专业了。集成库很容易;组件文档齐全且高度可定制。我只能推荐它;这个库是我新SaaS产品的新选择。
Michael Hoffmann

Michael Hoffmann

高级前端开发人员

Nuxt UI Pro 是我首选的组件库。它开箱即用地满足了我提出的所有 UI 需求,同时看起来很棒。它的可定制性非常值得称赞,可以轻松覆盖组件。每次更新中带来的改进也总是让我感到惊叹,团队做得非常出色。
Harlan Wilton

Harlan Wilton

Nuxt 核心团队成员

我一看到 Nuxt 团队的新 UI 工具包,就立刻抓住了购买的机会。虽然我已经很喜欢 Nuxt UI 了,但专业版将其提升到了一个全新的水平,让我可以将整个区块粘贴到我所有的项目中,节省了我大量的时间。
Thomas Sanlis

Thomas Sanlis

自由开发者和设计师

Nuxt UI 让我无需任何事先的线框图就能开发我的 SaaS。其组件的设计质量和智能的 DX 意味着我能够为我的应用程序尝试多种不同的布局,直到找到最适合用户的 UX。Nuxt UI 是我一直梦想自己构建的 UI 工具包,而 Nuxt UI Pro 在您想让您的 SaaS 更进一步时,能让事情变得更加轻松。赞扬团队。
Benjamin Code

Benjamin Code

YouTube 主播和 SaaS 开发者

从 POC 到 Web 平台,Nuxt UI Pro 是我一切的首选。它开箱即用,可以帮助我打造像素完美的 UI。它为我节省了大量时间,同时仍然高度可定制。尝试一下,您不会失望的。
Estéban Soubiran

Estéban Soubiran

Web 开发者和 UnJS 成员

我们曾使用一个SaaS服务来搭建文档站点,但效果不尽如人意。我们投入了精力进行内部开发,使用了UI Pro,不仅收到了潜在客户对我们网站的赞扬,他们还想了解我们的平台。
Anthony Bettini

Anthony Bettini

VulnCheck 首席执行官兼创始人

哇,Nuxt UI Pro 简直是游戏规则的改变者!我对其质量、对细节的关注以及组件的惊人多样性深感 impressed。对于任何开发者来说,这就像中了头奖。我节省了无数个小时,这些时间本可以用来为让我的应用程序看起来漂亮而烦恼,同时还要保证令人惊叹的无障碍用户体验,相反,我能够专注于真正重要的事情——构建应用程序本身。对我来说,这是每一次的即时购买,毫不犹豫!
Yaz Jallad

Yaz Jallad

Ninjaparade Digital 创始人

Nuxt UI Pro 节省了数百小时的开发和设计时间,同时在任何设备上都能呈现出干净专业的外观。
Kevin Olson

Kevin Olson

Fume.app 创始人

我决定用组件库替换我自定义构建的组件,并选择了 Nuxt UI Pro。只花了几个小时,新的 UI 就看起来更专业了。集成库很容易;组件文档齐全且高度可定制。我只能推荐它;这个库是我新SaaS产品的新选择。
Michael Hoffmann

Michael Hoffmann

高级前端开发人员

Nuxt UI Pro 是我首选的组件库。它开箱即用地满足了我提出的所有 UI 需求,同时看起来很棒。它的可定制性非常值得称赞,可以轻松覆盖组件。每次更新中带来的改进也总是让我感到惊叹,团队做得非常出色。
Harlan Wilton

Harlan Wilton

Nuxt 核心团队成员

我一看到 Nuxt 团队的新 UI 工具包,就立刻抓住了购买的机会。虽然我已经很喜欢 Nuxt UI 了,但专业版将其提升到了一个全新的水平,让我可以将整个区块粘贴到我所有的项目中,节省了我大量的时间。
Thomas Sanlis

Thomas Sanlis

自由开发者和设计师

Nuxt UI 让我无需任何事先的线框图就能开发我的 SaaS。其组件的设计质量和智能的 DX 意味着我能够为我的应用程序尝试多种不同的布局,直到找到最适合用户的 UX。Nuxt UI 是我一直梦想自己构建的 UI 工具包,而 Nuxt UI Pro 在您想让您的 SaaS 更进一步时,能让事情变得更加轻松。赞扬团队。
Benjamin Code

Benjamin Code

YouTube 主播和 SaaS 开发者

从 POC 到 Web 平台,Nuxt UI Pro 是我一切的首选。它开箱即用,可以帮助我打造像素完美的 UI。它为我节省了大量时间,同时仍然高度可定制。尝试一下,您不会失望的。
Estéban Soubiran

Estéban Soubiran

Web 开发者和 UnJS 成员

我们曾使用一个SaaS服务来搭建文档站点,但效果不尽如人意。我们投入了精力进行内部开发,使用了UI Pro,不仅收到了潜在客户对我们网站的赞扬,他们还想了解我们的平台。
Anthony Bettini

Anthony Bettini

VulnCheck 首席执行官兼创始人

哇,Nuxt UI Pro 简直是游戏规则的改变者!我对其质量、对细节的关注以及组件的惊人多样性深感 impressed。对于任何开发者来说,这就像中了头奖。我节省了无数个小时,这些时间本可以用来为让我的应用程序看起来漂亮而烦恼,同时还要保证令人惊叹的无障碍用户体验,相反,我能够专注于真正重要的事情——构建应用程序本身。对我来说,这是每一次的即时购买,毫不犹豫!
Yaz Jallad

Yaz Jallad

Ninjaparade Digital 创始人

Nuxt UI Pro 节省了数百小时的开发和设计时间,同时在任何设备上都能呈现出干净专业的外观。
Kevin Olson

Kevin Olson

Fume.app 创始人

我决定用组件库替换我自定义构建的组件,并选择了 Nuxt UI Pro。只花了几个小时,新的 UI 就看起来更专业了。集成库很容易;组件文档齐全且高度可定制。我只能推荐它;这个库是我新SaaS产品的新选择。
Michael Hoffmann

Michael Hoffmann

高级前端开发人员

Nuxt UI Pro 是我首选的组件库。它开箱即用地满足了我提出的所有 UI 需求,同时看起来很棒。它的可定制性非常值得称赞,可以轻松覆盖组件。每次更新中带来的改进也总是让我感到惊叹,团队做得非常出色。
Harlan Wilton

Harlan Wilton

Nuxt 核心团队成员

我一看到 Nuxt 团队的新 UI 工具包,就立刻抓住了购买的机会。虽然我已经很喜欢 Nuxt UI 了,但专业版将其提升到了一个全新的水平,让我可以将整个区块粘贴到我所有的项目中,节省了我大量的时间。
Thomas Sanlis

Thomas Sanlis

自由开发者和设计师

Nuxt UI 让我无需任何事先的线框图就能开发我的 SaaS。其组件的设计质量和智能的 DX 意味着我能够为我的应用程序尝试多种不同的布局,直到找到最适合用户的 UX。Nuxt UI 是我一直梦想自己构建的 UI 工具包,而 Nuxt UI Pro 在您想让您的 SaaS 更进一步时,能让事情变得更加轻松。赞扬团队。
Benjamin Code

Benjamin Code

YouTube 主播和 SaaS 开发者

从 POC 到 Web 平台,Nuxt UI Pro 是我一切的首选。它开箱即用,可以帮助我打造像素完美的 UI。它为我节省了大量时间,同时仍然高度可定制。尝试一下,您不会失望的。
Estéban Soubiran

Estéban Soubiran

Web 开发者和 UnJS 成员

我们曾使用一个SaaS服务来搭建文档站点,但效果不尽如人意。我们投入了精力进行内部开发,使用了UI Pro,不仅收到了潜在客户对我们网站的赞扬,他们还想了解我们的平台。
Anthony Bettini

Anthony Bettini

VulnCheck 首席执行官兼创始人

哇,Nuxt UI Pro 简直是游戏规则的改变者!我对其质量、对细节的关注以及组件的惊人多样性深感 impressed。对于任何开发者来说,这就像中了头奖。我节省了无数个小时,这些时间本可以用来为让我的应用程序看起来漂亮而烦恼,同时还要保证令人惊叹的无障碍用户体验,相反,我能够专注于真正重要的事情——构建应用程序本身。对我来说,这是每一次的即时购买,毫不犹豫!
Yaz Jallad

Yaz Jallad

Ninjaparade Digital 创始人

Nuxt UI Pro 节省了数百小时的开发和设计时间,同时在任何设备上都能呈现出干净专业的外观。
Kevin Olson

Kevin Olson

Fume.app 创始人

我决定用组件库替换我自定义构建的组件,并选择了 Nuxt UI Pro。只花了几个小时,新的 UI 就看起来更专业了。集成库很容易;组件文档齐全且高度可定制。我只能推荐它;这个库是我新SaaS产品的新选择。
Michael Hoffmann

Michael Hoffmann

高级前端开发人员

Nuxt UI Pro 是我首选的组件库。它开箱即用地满足了我提出的所有 UI 需求,同时看起来很棒。它的可定制性非常值得称赞,可以轻松覆盖组件。每次更新中带来的改进也总是让我感到惊叹,团队做得非常出色。
Harlan Wilton

Harlan Wilton

Nuxt 核心团队成员

我一看到 Nuxt 团队的新 UI 工具包,就立刻抓住了购买的机会。虽然我已经很喜欢 Nuxt UI 了,但专业版将其提升到了一个全新的水平,让我可以将整个区块粘贴到我所有的项目中,节省了我大量的时间。
Thomas Sanlis

Thomas Sanlis

自由开发者和设计师

Nuxt UI 让我无需任何事先的线框图就能开发我的 SaaS。其组件的设计质量和智能的 DX 意味着我能够为我的应用程序尝试多种不同的布局,直到找到最适合用户的 UX。Nuxt UI 是我一直梦想自己构建的 UI 工具包,而 Nuxt UI Pro 在您想让您的 SaaS 更进一步时,能让事情变得更加轻松。赞扬团队。
Benjamin Code

Benjamin Code

YouTube 主播和 SaaS 开发者

从 POC 到 Web 平台,Nuxt UI Pro 是我一切的首选。它开箱即用,可以帮助我打造像素完美的 UI。它为我节省了大量时间,同时仍然高度可定制。尝试一下,您不会失望的。
Estéban Soubiran

Estéban Soubiran

Web 开发者和 UnJS 成员

我们曾使用一个SaaS服务来搭建文档站点,但效果不尽如人意。我们投入了精力进行内部开发,使用了UI Pro,不仅收到了潜在客户对我们网站的赞扬,他们还想了解我们的平台。
Anthony Bettini

Anthony Bettini

VulnCheck 首席执行官兼创始人

哇,Nuxt UI Pro 简直是游戏规则的改变者!我对其质量、对细节的关注以及组件的惊人多样性深感 impressed。对于任何开发者来说,这就像中了头奖。我节省了无数个小时,这些时间本可以用来为让我的应用程序看起来漂亮而烦恼,同时还要保证令人惊叹的无障碍用户体验,相反,我能够专注于真正重要的事情——构建应用程序本身。对我来说,这是每一次的即时购买,毫不犹豫!
Yaz Jallad

Yaz Jallad

Ninjaparade Digital 创始人

Nuxt UI Pro 节省了数百小时的开发和设计时间,同时在任何设备上都能呈现出干净专业的外观。
Kevin Olson

Kevin Olson

Fume.app 创始人

我决定用组件库替换我自定义构建的组件,并选择了 Nuxt UI Pro。只花了几个小时,新的 UI 就看起来更专业了。集成库很容易;组件文档齐全且高度可定制。我只能推荐它;这个库是我新SaaS产品的新选择。
Michael Hoffmann

Michael Hoffmann

高级前端开发人员

Nuxt UI Pro 是我首选的组件库。它开箱即用地满足了我提出的所有 UI 需求,同时看起来很棒。它的可定制性非常值得称赞,可以轻松覆盖组件。每次更新中带来的改进也总是让我感到惊叹,团队做得非常出色。
Harlan Wilton

Harlan Wilton

Nuxt 核心团队成员

我一看到 Nuxt 团队的新 UI 工具包,就立刻抓住了购买的机会。虽然我已经很喜欢 Nuxt UI 了,但专业版将其提升到了一个全新的水平,让我可以将整个区块粘贴到我所有的项目中,节省了我大量的时间。
Thomas Sanlis

Thomas Sanlis

自由开发者和设计师

Nuxt UI 让我无需任何事先的线框图就能开发我的 SaaS。其组件的设计质量和智能的 DX 意味着我能够为我的应用程序尝试多种不同的布局,直到找到最适合用户的 UX。Nuxt UI 是我一直梦想自己构建的 UI 工具包,而 Nuxt UI Pro 在您想让您的 SaaS 更进一步时,能让事情变得更加轻松。赞扬团队。
Benjamin Code

Benjamin Code

YouTube 主播和 SaaS 开发者

从 POC 到 Web 平台,Nuxt UI Pro 是我一切的首选。它开箱即用,可以帮助我打造像素完美的 UI。它为我节省了大量时间,同时仍然高度可定制。尝试一下,您不会失望的。
Estéban Soubiran

Estéban Soubiran

Web 开发者和 UnJS 成员

我们曾使用一个SaaS服务来搭建文档站点,但效果不尽如人意。我们投入了精力进行内部开发,使用了UI Pro,不仅收到了潜在客户对我们网站的赞扬,他们还想了解我们的平台。
Anthony Bettini

Anthony Bettini

VulnCheck 首席执行官兼创始人

哇,Nuxt UI Pro 简直是游戏规则的改变者!我对其质量、对细节的关注以及组件的惊人多样性深感 impressed。对于任何开发者来说,这就像中了头奖。我节省了无数个小时,这些时间本可以用来为让我的应用程序看起来漂亮而烦恼,同时还要保证令人惊叹的无障碍用户体验,相反,我能够专注于真正重要的事情——构建应用程序本身。对我来说,这是每一次的即时购买,毫不犹豫!
Yaz Jallad

Yaz Jallad

Ninjaparade Digital 创始人

Nuxt UI Pro 节省了数百小时的开发和设计时间,同时在任何设备上都能呈现出干净专业的外观。
Kevin Olson

Kevin Olson

Fume.app 创始人

我决定用组件库替换我自定义构建的组件,并选择了 Nuxt UI Pro。只花了几个小时,新的 UI 就看起来更专业了。集成库很容易;组件文档齐全且高度可定制。我只能推荐它;这个库是我新SaaS产品的新选择。
Michael Hoffmann

Michael Hoffmann

高级前端开发人员

Nuxt UI Pro 是我首选的组件库。它开箱即用地满足了我提出的所有 UI 需求,同时看起来很棒。它的可定制性非常值得称赞,可以轻松覆盖组件。每次更新中带来的改进也总是让我感到惊叹,团队做得非常出色。
Harlan Wilton

Harlan Wilton

Nuxt 核心团队成员

我一看到 Nuxt 团队的新 UI 工具包,就立刻抓住了购买的机会。虽然我已经很喜欢 Nuxt UI 了,但专业版将其提升到了一个全新的水平,让我可以将整个区块粘贴到我所有的项目中,节省了我大量的时间。
Thomas Sanlis

Thomas Sanlis

自由开发者和设计师

Nuxt UI 让我无需任何事先的线框图就能开发我的 SaaS。其组件的设计质量和智能的 DX 意味着我能够为我的应用程序尝试多种不同的布局,直到找到最适合用户的 UX。Nuxt UI 是我一直梦想自己构建的 UI 工具包,而 Nuxt UI Pro 在您想让您的 SaaS 更进一步时,能让事情变得更加轻松。赞扬团队。
Benjamin Code

Benjamin Code

YouTube 主播和 SaaS 开发者

从 POC 到 Web 平台,Nuxt UI Pro 是我一切的首选。它开箱即用,可以帮助我打造像素完美的 UI。它为我节省了大量时间,同时仍然高度可定制。尝试一下,您不会失望的。
Estéban Soubiran

Estéban Soubiran

Web 开发者和 UnJS 成员

我们曾使用一个SaaS服务来搭建文档站点,但效果不尽如人意。我们投入了精力进行内部开发,使用了UI Pro,不仅收到了潜在客户对我们网站的赞扬,他们还想了解我们的平台。
Anthony Bettini

Anthony Bettini

VulnCheck 首席执行官兼创始人

哇,Nuxt UI Pro 简直是游戏规则的改变者!我对其质量、对细节的关注以及组件的惊人多样性深感 impressed。对于任何开发者来说,这就像中了头奖。我节省了无数个小时,这些时间本可以用来为让我的应用程序看起来漂亮而烦恼,同时还要保证令人惊叹的无障碍用户体验,相反,我能够专注于真正重要的事情——构建应用程序本身。对我来说,这是每一次的即时购买,毫不犹豫!
Yaz Jallad

Yaz Jallad

Ninjaparade Digital 创始人

Nuxt UI Pro 节省了数百小时的开发和设计时间,同时在任何设备上都能呈现出干净专业的外观。
Kevin Olson

Kevin Olson

Fume.app 创始人

我决定用组件库替换我自定义构建的组件,并选择了 Nuxt UI Pro。只花了几个小时,新的 UI 就看起来更专业了。集成库很容易;组件文档齐全且高度可定制。我只能推荐它;这个库是我新SaaS产品的新选择。
Michael Hoffmann

Michael Hoffmann

高级前端开发人员

Nuxt UI Pro 是我首选的组件库。它开箱即用地满足了我提出的所有 UI 需求,同时看起来很棒。它的可定制性非常值得称赞,可以轻松覆盖组件。每次更新中带来的改进也总是让我感到惊叹,团队做得非常出色。
Harlan Wilton

Harlan Wilton

Nuxt 核心团队成员

我一看到 Nuxt 团队的新 UI 工具包,就立刻抓住了购买的机会。虽然我已经很喜欢 Nuxt UI 了,但专业版将其提升到了一个全新的水平,让我可以将整个区块粘贴到我所有的项目中,节省了我大量的时间。
Thomas Sanlis

Thomas Sanlis

自由开发者和设计师

Nuxt UI 让我无需任何事先的线框图就能开发我的 SaaS。其组件的设计质量和智能的 DX 意味着我能够为我的应用程序尝试多种不同的布局,直到找到最适合用户的 UX。Nuxt UI 是我一直梦想自己构建的 UI 工具包,而 Nuxt UI Pro 在您想让您的 SaaS 更进一步时,能让事情变得更加轻松。赞扬团队。
Benjamin Code

Benjamin Code

YouTube 主播和 SaaS 开发者

从 POC 到 Web 平台,Nuxt UI Pro 是我一切的首选。它开箱即用,可以帮助我打造像素完美的 UI。它为我节省了大量时间,同时仍然高度可定制。尝试一下,您不会失望的。
Estéban Soubiran

Estéban Soubiran

Web 开发者和 UnJS 成员

<script setup lang="ts">
const testimonials = [
  {
    user: {
      name: 'Anthony Bettini',
      description: 'CEO and founder of VulnCheck',
      avatar: {
        src: 'https://media.licdn.com/dms/image/v2/C4E03AQEY3pmXsH8hDg/profile-displayphoto-shrink_800_800/profile-displayphoto-shrink_800_800/0/1519741249442?e=1746057600&v=beta&t=dvQfBT9ah03MPNy9cnly30ugreeCdxG4nrxV3lwKAC8',
        loading: 'lazy'
      }
    },
    quote:
      'We were using a SaaS service for the docs site, but were left unfulfilled. We put in the effort to do it in house, with UI Pro and not only did we get complimented by a prospect on our site, but they wanted to know our platform.'
  },
  {
    user: {
      name: 'Yaz Jallad',
      description: 'Founder Ninjaparade Digital',
      avatar: {
        src: 'https://pbs.twimg.com/profile_images/1824690890222485504/lQ7v1AGt_400x400.jpg',
        loading: 'lazy'
      }
    },
    quote:
      "Wow, Nuxt UI Pro is a total game-changer! I'm seriously impressed with the quality, attention to detail, and the insane variety of components you get. It's like hitting the jackpot for any developer. I've saved countless hours that I would've spent stressing over making my apps look good, with amazing accessible UX,  and instead, I've been able to focus on the real deal – building the app itself. It's an instant buy for me, every single time. No second thoughts!"
  },
  {
    user: {
      name: 'Kevin Olson',
      description: 'Founder of Fume.app',
      avatar: {
        src: 'https://ipx.nuxt.com/f_auto,s_40x40/gh_avatar/acidjazz',
        srcset: 'https://ipx.nuxt.com/f_auto,s_80x80/gh_avatar/acidjazz 2x',
        loading: 'lazy'
      }
    },
    quote:
      'Nuxt UI Pro saves 100s of hours of dev and design time while delivering a clean professional look on any device.'
  },
  {
    user: {
      name: 'Michael Hoffmann',
      description: 'Senior Frontend Developer',
      avatar: {
        src: 'https://ipx.nuxt.com/f_auto,s_40x40/gh_avatar/mokkapps',
        srcset: 'https://ipx.nuxt.com/f_auto,s_80x80/gh_avatar/mokkapps 2x',
        loading: 'lazy'
      }
    },
    quote:
      'I decided to replace my custom-built components with a component library and chose Nuxt UI Pro. It only took me a few hours, and the new UI looks more professional. Integrating the library is easy; the components are well-documented and highly customizable. I can only recommend it; this library is my new choice for new SaaS products.'
  },
  {
    user: {
      name: 'Harlan Wilton',
      description: 'Nuxt core team member',
      avatar: {
        src: 'https://ipx.nuxt.com/f_auto,s_40x40/gh_avatar/harlan-zw',
        srcset: 'https://ipx.nuxt.com/f_auto,s_80x80/gh_avatar/harlan-zw 2x',
        loading: 'lazy'
      }
    },
    quote:
      'Nuxt UI Pro is my go to component library. Out-of-the-box it handles all of the UI demands I throw at it while looking great. The customisation is really worth thought out, allowing you to override components in a breeze. Always amazed at the improvements dropped in each update as well, the team is doing an amazing job.'
  },
  {
    user: {
      name: 'Thomas Sanlis',
      description: 'Freelance developer and designer',
      avatar: {
        src: 'https://pbs.twimg.com/profile_images/1374040164180299791/ACw4G3nZ_400x400.jpg',
        loading: 'lazy'
      }
    },
    quote:
      "I jumped at the chance to buy the Nuxt team's new UI kit as soon as I saw it. While I'm already a fan of Nuxt UI, the pro version takes it to a whole new level and lets me paste entire blocks into all my projects, saving me a ton of time."
  },
  {
    user: {
      name: 'Benjamin Code',
      description: 'YouTuber and SaaS builder',
      avatar: {
        src: 'https://pbs.twimg.com/profile_images/1607353032420769793/I8qQSUfQ_400x400.jpg',
        loading: 'lazy'
      }
    },
    quote:
      'Nuxt UI has allowed me to develop my SaaS without any prior mockups. The design quality of their components and the intelligence of the DX meant that I was able to try many different layouts for my application until I found the perfect UX for my users. Nuxt UI is the ui-kit I would have dreamed of building myself, and Nuxt UI Pro makes things even easier when you want to go further with your SaaS. Kudos to the team.'
  },
  {
    user: {
      name: 'Estéban Soubiran',
      description: 'Web developer and UnJS member',
      avatar: {
        src: 'https://pbs.twimg.com/profile_images/1801649350319218689/aS_X_iTm_400x400.jpg',
        loading: 'lazy'
      }
    },
    quote:
      "Nuxt UI Pro is my preferred choice for everything, from a POC to a web platform. It's ready to use out-of-the-box and assists me in crafting pixel-perfect UIs. It saves me a significant amount of time while remaining highly customizable. Give it a try, and you won't be let down."
  }
]
</script>

<template>
  <div class="flex flex-col gap-4 w-full">
    <UMarquee
      pause-on-hover
      :overlay="false"
      :ui="{ root: '[--gap:--spacing(4)]', content: 'w-auto py-1' }"
    >
      <UPageCard
        v-for="(testimonial, index) in testimonials"
        :key="index"
        variant="subtle"
        :description="testimonial.quote"
        :ui="{
          description: 'before:content-[open-quote] after:content-[close-quote] line-clamp-3'
        }"
        class="w-64 shrink-0"
      >
        <template #footer>
          <UUser v-bind="testimonial.user" size="xl" :ui="{ description: 'line-clamp-1' }" />
        </template>
      </UPageCard>
    </UMarquee>
    <UMarquee
      pause-on-hover
      reverse
      :overlay="false"
      :ui="{ root: '[--gap:--spacing(4)]', content: 'w-auto py-1' }"
    >
      <UPageCard
        v-for="(testimonial, index) in testimonials"
        :key="index"
        variant="subtle"
        :description="testimonial.quote"
        :ui="{
          description: 'before:content-[open-quote] after:content-[close-quote] line-clamp-3'
        }"
        class="w-64 shrink-0"
      >
        <template #footer>
          <UUser v-bind="testimonial.user" size="xl" :ui="{ description: 'line-clamp-1' }" />
        </template>
      </UPageCard>
    </UMarquee>
  </div>
</template>

截图

使用 Marquee 组件为您的截图创建无限滚动的动画。

Nuxt UI Screenshot 1Nuxt UI Screenshot 2Nuxt UI Screenshot 3Nuxt UI Screenshot 4
Nuxt UI Screenshot 1Nuxt UI Screenshot 2Nuxt UI Screenshot 3Nuxt UI Screenshot 4
Nuxt UI Screenshot 1Nuxt UI Screenshot 2Nuxt UI Screenshot 3Nuxt UI Screenshot 4
Nuxt UI Screenshot 1Nuxt UI Screenshot 2Nuxt UI Screenshot 3Nuxt UI Screenshot 4
Nuxt UI Screenshot 5Nuxt UI Screenshot 6Nuxt UI Screenshot 7Nuxt UI Screenshot 8
Nuxt UI Screenshot 5Nuxt UI Screenshot 6Nuxt UI Screenshot 7Nuxt UI Screenshot 8
Nuxt UI Screenshot 5Nuxt UI Screenshot 6Nuxt UI Screenshot 7Nuxt UI Screenshot 8
Nuxt UI Screenshot 5Nuxt UI Screenshot 6Nuxt UI Screenshot 7Nuxt UI Screenshot 8
<template>
  <div class="relative w-full h-[400px] bg-muted overflow-hidden">
    <UMarquee
      reverse
      orientation="vertical"
      :overlay="false"
      :ui="{
        root: '[--duration:40s] absolute w-[460px] -left-[100px] -top-[300px] h-[940px] transform-3d rotate-x-55 rotate-y-0 rotate-z-30'
      }"
    >
      <img
        v-for="i in 4"
        :key="i"
        :src="`/blocks/image${i}.png`"
        width="460"
        height="258"
        :alt="`Nuxt UI Screenshot ${i}`"
        class="aspect-video border border-default rounded-lg bg-white"
      />
    </UMarquee>
    <UMarquee
      orientation="vertical"
      :overlay="false"
      :ui="{
        root: '[--duration:40s] absolute w-[460px] -top-[400px] left-[480px] h-[1160px] transform-3d rotate-x-55 rotate-y-0 rotate-z-30'
      }"
    >
      <img
        v-for="i in [5, 6, 7, 8]"
        :key="i"
        :src="`/blocks/image${i}.png`"
        width="460"
        height="258"
        :alt="`Nuxt UI Screenshot ${i}`"
        class="aspect-video border border-default rounded-lg bg-white"
      />
    </UMarquee>
    <UMarquee
      reverse
      orientation="vertical"
      :overlay="false"
      :ui="{
        root: 'hidden md:flex [--duration:40s] absolute w-[460px] -top-[300px] left-[1020px] h-[1060px] transform-3d rotate-x-55 rotate-y-0 rotate-z-30'
      }"
    >
      <img
        v-for="i in [9, 10, 11, 12]"
        :key="i"
        :src="`/blocks/image${i}.png`"
        width="460"
        height="258"
        :alt="`Nuxt UI Screenshot ${i}`"
        class="aspect-video border border-default rounded-lg bg-white"
      />
    </UMarquee>
  </div>
</template>

API

属性

属性默认值类型
as

'div'

any

此组件应渲染为的元素或组件。

pauseOnHover

false

boolean

鼠标悬停时暂停跑马灯。

reverse

false

boolean

反转跑马灯的方向。

orientation

'horizontal'

"horizontal" | "vertical"

跑马灯的方向。

repeat

4

number

跑马灯应重复的次数。

叠加层

true

boolean

在跑马灯上显示叠加层。

ui

{ root?: ClassNameValue; content?: ClassNameValue; }

插槽

插槽类型
default

{}

主题

app.config.ts
export default defineAppConfig({
  ui: {
    marquee: {
      slots: {
        root: 'group relative flex items-center overflow-hidden gap-(--gap) [--gap:--spacing(16)] [--duration:20s]',
        content: 'flex items-center shrink-0 justify-around gap-(--gap) min-w-max'
      },
      variants: {
        orientation: {
          horizontal: {
            content: 'w-full'
          },
          vertical: {
            content: 'h-full'
          }
        },
        pauseOnHover: {
          true: {
            content: 'group-hover:[animation-play-state:paused]'
          }
        },
        reverse: {
          true: {
            content: '![animation-direction:reverse]'
          }
        },
        overlay: {
          true: {
            root: 'before:absolute before:pointer-events-none before:content-[""] before:z-2 before:from-default before:to-transparent after:absolute after:pointer-events-none after:content-[""] after:z-2 after:from-default after:to-transparent'
          }
        }
      },
      compoundVariants: [
        {
          orientation: 'horizontal',
          class: {
            root: 'flex-row',
            content: 'flex-row animate-[marquee_var(--duration)_linear_infinite] rtl:animate-[marquee-rtl_var(--duration)_linear_infinite] backface-hidden'
          }
        },
        {
          orientation: 'horizontal',
          overlay: true,
          class: {
            root: 'before:inset-y-0 before:left-0 before:h-full before:w-1/3 before:bg-gradient-to-r after:inset-y-0 after:right-0 after:h-full after:w-1/3 after:bg-gradient-to-l backface-hidden'
          }
        },
        {
          orientation: 'vertical',
          class: {
            root: 'flex-col',
            content: 'flex-col animate-[marquee-vertical_var(--duration)_linear_infinite] rtl:animate-[marquee-vertical-rtl_var(--duration)_linear_infinite] h-[fit-content] backface-hidden'
          }
        },
        {
          orientation: 'vertical',
          overlay: true,
          class: {
            root: 'before:inset-x-0 before:top-0 before:w-full before:h-1/3 before:bg-gradient-to-b after:inset-x-0 after:bottom-0 after:w-full after:h-1/3 after:bg-gradient-to-t backface-hidden'
          }
        }
      ]
    }
  }
})
vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'

export default defineConfig({
  plugins: [
    vue(),
    ui({
      ui: {
        marquee: {
          slots: {
            root: 'group relative flex items-center overflow-hidden gap-(--gap) [--gap:--spacing(16)] [--duration:20s]',
            content: 'flex items-center shrink-0 justify-around gap-(--gap) min-w-max'
          },
          variants: {
            orientation: {
              horizontal: {
                content: 'w-full'
              },
              vertical: {
                content: 'h-full'
              }
            },
            pauseOnHover: {
              true: {
                content: 'group-hover:[animation-play-state:paused]'
              }
            },
            reverse: {
              true: {
                content: '![animation-direction:reverse]'
              }
            },
            overlay: {
              true: {
                root: 'before:absolute before:pointer-events-none before:content-[""] before:z-2 before:from-default before:to-transparent after:absolute after:pointer-events-none after:content-[""] after:z-2 after:from-default after:to-transparent'
              }
            }
          },
          compoundVariants: [
            {
              orientation: 'horizontal',
              class: {
                root: 'flex-row',
                content: 'flex-row animate-[marquee_var(--duration)_linear_infinite] rtl:animate-[marquee-rtl_var(--duration)_linear_infinite] backface-hidden'
              }
            },
            {
              orientation: 'horizontal',
              overlay: true,
              class: {
                root: 'before:inset-y-0 before:left-0 before:h-full before:w-1/3 before:bg-gradient-to-r after:inset-y-0 after:right-0 after:h-full after:w-1/3 after:bg-gradient-to-l backface-hidden'
              }
            },
            {
              orientation: 'vertical',
              class: {
                root: 'flex-col',
                content: 'flex-col animate-[marquee-vertical_var(--duration)_linear_infinite] rtl:animate-[marquee-vertical-rtl_var(--duration)_linear_infinite] h-[fit-content] backface-hidden'
              }
            },
            {
              orientation: 'vertical',
              overlay: true,
              class: {
                root: 'before:inset-x-0 before:top-0 before:w-full before:h-1/3 before:bg-gradient-to-b after:inset-x-0 after:bottom-0 after:w-full after:h-1/3 after:bg-gradient-to-t backface-hidden'
              }
            }
          ]
        }
      }
    })
  ]
})

更新日志

0cd0c— chore: 改进 tsdoc

a9fe7— 修复:为保持一致性,添加缺少的 data-orientation

18460— fix: 处理 RTL 模式 (#4887)

b6edc— feat!: 从 PageMarquee 重命名 (#4741)