如何在没有滚动条的情况下在 Tailwind 中创建可滚动元素

vin*_*nce 1 css bootstrap-4 tailwind-css bootstrap-5

我正在尝试像这个例子一样重新创建一个带有顺风的水平滚动导航栏,底部没有滚动条(减少屏幕的宽度以便能够滚动)

https://getbootstrap.com/docs/5.0/examples/blog/

我使用 Tailwind 尝试了以下操作,但我无法弄清楚如何删除与上面的引导程序示例类似的水平滚动条。有人可以帮忙吗?

<ul class="flex overflow-x-auto whitespace-nowrap p-4">
  <li><a href="/" class="p-2">Nav Item</a></li>
  <li><a href="/" class="p-2">Nav Item</a></li>
  <li><a href="/" class="p-2">Nav Item</a></li>
  <li><a href="/" class="p-2">Nav Item</a></li>
  <li><a href="/" class="p-2">Nav Item</a></li>
  <li><a href="/" class="p-2">Nav Item</a></li>
  <li><a href="/" class="p-2">Nav Item</a></li>
  <li><a href="/" class="p-2">Nav Item</a></li>
  <li><a href="/" class="p-2">Nav Item</a></li>
  <li><a href="/" class="p-2">Nav Item</a></li>
  <li><a href="/" class="p-2">Nav Item</a></li>
  <li><a href="/" class="p-2">Nav Item</a></li>
  <li><a href="/" class="p-2">Nav Item</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

jas*_*ard 59

将其添加到您的全局 css 文件(global.cssstyle.css或您拥有的任何文件)中:

/*
    https://github.com/tailwindlabs/tailwindcss/discussions/2394
    https://github.com/tailwindlabs/tailwindcss/pull/5732
*/
@layer utilities {
    /* Chrome, Safari and Opera */
    .no-scrollbar::-webkit-scrollbar {
      display: none;
    }

    .no-scrollbar {
      -ms-overflow-style: none; /* IE and Edge */
      scrollbar-width: none; /* Firefox */
    }
}
Run Code Online (Sandbox Code Playgroud)

no-scrollbar然后,您只需添加您通常喜欢的类,请注意,我添加了 Overflow-y-auto 来自动保持滚动条的正确大小。

<div className="no-scrollbar overflow-y-auto">
Run Code Online (Sandbox Code Playgroud)

或者:

你可以尝试这个tailwindcss插件来隐藏滚动条

https://github.com/reslear/tailwind-scrollbar-hide

  • 从这个答案中我无法推断出我应该将这个类定义放在哪个文件中 (5认同)

Mic*_*eal 20

要回答@wataru 在评论中的问题,将这些类添加为插件的语法如下tailwind.config.js

const plugin = require('tailwindcss/plugin')

module.exports = {
  content: [
    "./pages/**/*.{js,ts,jsx}",
    "./components/**/*.{js,ts,jsx}",
  ], 
  theme: {
    extend: {},
  },
  plugins: [
    plugin(function ({ addUtilities }) {
      addUtilities({
        '.scrollbar-hide': {
          /* IE and Edge */
          '-ms-overflow-style': 'none',

          /* Firefox */
          'scrollbar-width': 'none',

          /* Safari and Chrome */
          '&::-webkit-scrollbar': {
            display: 'none'
          }
        }
      }
      )
    })
  ],
}
Run Code Online (Sandbox Code Playgroud)

要检查的行是const pluginplugins: []数组

我通过检查上面 @jasonleonhard 链接的https://github.com/reslear/tailwind-scrollbar-hide包的源代码了解到了这一点。


小智 11

使用 Tailwind v3,您可以使用任意值来实现此目的。

[&::-webkit-scrollbar]:hidden在您的 HTML 元素 classList 上使用。


Tho*_*yne 6

Tailwind v3 有一个强大的功能,称为arbitrary values. 您可以在此处找到如何使用它,使用任意值。慢慢读,因为你可能会错过它。我是第一次做。无需使用实用程序。

class="[&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]"

这适用于三大浏览器:

/* Safari 和 Chrome */

/* IE 和 Edge */

/* 火狐 */


Ste*_*e O 5

要隐藏滚动条,您需要直接为其设置样式:

/* Hide scrollbar for Chrome, Safari and Opera */
.no-scrollbar::-webkit-scrollbar {
    display: none;
}

/* Hide scrollbar for IE, Edge and Firefox */
.no-scrollbar {
    -ms-overflow-style: none;  /* IE and Edge */
    scrollbar-width: none;  /* Firefox */
}
Run Code Online (Sandbox Code Playgroud)

您可以使用配置中的插件轻松将这些添加为 Tailwind 实用程序:https : //tailwindcss.com/docs/plugins#adding-utilities


进一步阅读:

https://css-tricks.com/almanac/properties/s/scrollbar/ https://www.w3schools.com/howto/howto_css_hide_scrollbars.asp

  • 有趣的是,在 bootstrap 示例中,它只是通过隐藏滚动条的外部 div 上定义的高度来实现!我花了几分钟才到达那里。 (2认同)