Video wird geladen...

Video konnte nicht geladen werden

Zur Startseite

The new version of React Native Bottom Tabs is out! 🎉 A new highly anticipated feature: Custom JavaScript Tabs! ✨ Provide your custom tab bar while leveraging native navigation underneath 🚀 Here is a demo of it in the 🦋 app! This demonstrates smooth screen transitions using native animations...

35,725 Aufrufe • vor 1 Jahr •via X (Twitter)

11 Kommentare

Profilbild von Fabrizio
Fabriziovor 1 Jahr

That was the missing piece on the React Native ecosystem, nice to see it working

Profilbild von Weather, Maps and some AI
Weather, Maps and some AIvor 2 Jahren

Don't you need a new weather widget?

Profilbild von Michał Pierzchała
Michał Pierzchałavor 1 Jahr

damn that's smooth

Profilbild von DrAriu
DrAriuvor 1 Jahr

Now the only missing part: Web support

Profilbild von Oskar Kwaśniewski
Oskar Kwaśniewskivor 1 Jahr

As mentioned in another comment: On web you should use `@⁠react-navigation/bottom-tabs` this can be done conditionally using .web.tsx extensions. I will make sure to add examples of this in the docs.

Profilbild von maxi
maxivor 1 Jahr

LFG

Profilbild von Olowoyo
Olowoyovor 1 Jahr

What’s the difference between this and expo tab(expo-router/ui) ?

Profilbild von Oskar Kwaśniewski
Oskar Kwaśniewskivor 1 Jahr

You can read more about the differences here:

Profilbild von Giovanni Padova
Giovanni Padovavor 1 Jahr

Awesome work ! Now I don't see any reason why not making the default for Expo Router.

Profilbild von DrAriu
DrAriuvor 1 Jahr

Fantastic!

Profilbild von MONARCH
MONARCHvor 1 Jahr

Can this be used in tandem with expo router, ie expo router’s components for everything else, then this for a bottom navigator

Ähnliche Videos

CSS Trick 🤙 You can create these tab bar controls by using :has() to count the number of tabs ⭐️ .tabs:has(input:nth-of-type(3)){--count: 3;} .tabs:has(:checked:nth-of-type(3)){--active: 200%;} .tabs::after{ translate:var(--active) 0;} Let's break it down in this ! 📼 Couple of CSS :has() tricks here combined with custom properties 😎 First things first, lay out the tabs using display: grid. This gives you a way to create equal-width tabs 🙏 .tabs { display: grid; grid-auto-flow: column; } Then you use :has() to count the number of tabs and store that in a custom property 🤓 .tabs:has(input:nth-of-type(3)) { --count: 3; } .tabs:has(input:nth-of-type(4)) { --count: 4; } Using the cascade, the last valid :has() gives you the number of tabs 🫶 Using the tab count, you can size the tab indicator. For the tab indicator, use the tabs pseudoelement: .tabs::after { content: ""; position: absolute; height: 100%; width: calc(100% / var(--count)); } See how you can use --count to determine its size 📏 Next, use :has() to determine which tab is active or :checked with input [type=radio] .tabs:has(:checked:nth-of-type(2)) { --active: 1; } .tabs:has(:checked:nth-of-type(3)) { --active: 2; } You can use a zero-indexed translation here. If the second input is :checked, set --active: 1, then translate the pseudoelement on the tabs to that position 👉 .tabs::after { translate: calc(var(--active, 0) * 100%) 0; } Or you could set active to the translation: .tabs:has(:checked:nth-of-type(2)) { --active: 100%; } Setting the custom property allows you to use the index elsewhere if you need it 🤙 The final piece is using mix-blend-mode 👀 The tabs have a black background-color, the pseudoelement is white, and the label text is white. When you use mix-blend-mode: difference on the pseudoelement it will give this effect that the text transitions from white to black sliding across 😎 .tabs::after { color: hsl(0 0% 100%); mix-blend-mode: difference; } You can totally mix up the colors here though and go with a different effect. The mechanics of how you can use CSS :has() is the main point here 🙏 As always, any questions, suggestions, etc. let me know CodePen.IO link below! 👇 (There's even a Tailwind CSS play for this one too 👀)

jhey ʕ•ᴥ•ʔ

70,670 Aufrufe • vor 2 Jahren