Загрузка видео...

Не удалось загрузить видео

На главную

Design Engineering Tip: Separate the object from its shadow. When an element lifts away from a surface, the shadow doesn't always need to move with it. Keeping the shadow grounded and fading it based on distance can create a stronger sense of depth and physicality. Used carefully, this can...

69,659 просмотров • 3 месяцев назад •via X (Twitter)

Комментарии: 0

Нет доступных комментариев

Здесь появятся комментарии из оригинального поста

Похожие видео

The Fourier transform runs inside every MRI machine, every audio compressor, every signal processor on earth. JPMorgan pays $350K to engineers who can derive it from scratch. There is one professor alive who explains it the way nobody else can. His name is Gilbert Strang. MIT. The most brilliant mathematical mind of his generation. His textbook sits in over 10 million homes. No other person on earth holds this combination of depth and clarity in one head. He opens with one confession. The Fourier transform is unreasonably effective. It solves problems it was never designed for. The goal is not to compute it. The goal is to understand why it works at all. Then the core idea. A periodic signal breaks into pure sine waves. Each with a frequency, amplitude, and phase. The transform finds all three simultaneously. A complicated signal in time becomes a simple picture in frequency. Then 1807. Fourier invented the transform not for sound but for heat. How does warmth spread through a metal rod? In time the equation is a partial differential equation - hard. In frequency space it becomes ordinary - easy. Transform in, solve it, transform back. Then convolution. Convolution in time equals multiplication in frequency. Filtering a signal, removing noise, compressing audio - all multiplication in frequency space. Without the transform: thousands of computations. With it: a few multiplications. Then the delta function. Zero everywhere except one point where it is infinite. Integral equals one. Every mathematician in 1900 said it was not a function. Dirac used it anyway. It took 40 years to justify what engineers had been doing the whole time. Watch the moment Strang shows that the Fourier transform of a delta function is a constant - every frequency in equal measure. The more concentrated in time, the more spread in frequency. This is the uncertainty principle. Not quantum physics. A theorem about any signal at all. A signal processing engineer I know rewatched this before their first project at Apple. Said it was the first time the Fourier transform felt like a change of coordinates rather than a formula to memorize. Free on YouTube, MIT OpenCourseWare. bookmark this and watch later - after this lecture every sound, every image, and every signal will feel like a sum of sine waves waiting to be separated

Zyphor

123,452 просмотров • 1 месяц назад

It is my considered view that the monumental problems that Zimbabwe faces today now require the main opposition CCC to appoint a shadow cabinet from its parliamentary cohort. Someone needs to articulate healthcare issues, corruption issues, energy sector issues and so on. You can’t have anyone and everyone speaking on what they choose to speak on at any given day. Since they are having their parliamentary committees organised, a shadow cabinet is critical because it shows that they are a credible alternative driven by competent people. In the past the opposition has appointed people who have failed to articulate issues and were just there carrying titles that they don’t know how to use, this must change. I have posted a video below on water to illustrate the importance of what needs to be addressed and how it should be addressed. It is important that shadow ministers appointed by CCC are able to articulate such issues with easy clarity. ZANUPF must be made to account for its actions daily, this hasn’t been happening, slogans are not enough. What is needed is substance that is explained with clarity and easy to understand to for the ordinary citizens. Dre Ibbo Mandaza said what many are saying quietly that the opposition doesn’t have capable people, Nelson Chamisa must demonstrate that he has these people and only a shadow cabinet. The opposition must give confidence to business, churches, civil society, students, international community and the media that it is capable and not another Chakwera if it wants to be taken seriously. This can only be done through a shadow cabinet, we await and hope that the wait will not be in vain. Opposing a bad system doesn’t make you a democrat, how you run your affairs is what makes you a democrat or an autocrat! We need a shadow cabinet urgently, and we hope we will get one soon!

Hopewell Chin’ono

144,456 просмотров • 3 лет назад

CSS Tip! 🐳 You can add little details like this scale down on scroll effect with scroll-driven animations and some sticky positioning 🤙 section { animation: scale-down; animation-timeline: view(); animation-range: exit; } @​keyframes scale-down { to { scale 0.8; } ] In this smaller example, you can lean into using the position to drive an animation that scales itself down as it leaves the viewport (Seen on the Apple Vision Pro site 🍏) The nice thing here is that if you don't have scroll-driven animations, the user still gets a good experience ✨ So how do you do it? There isn't much to it header { transform-origin: 50% 0%; animation: scale-down both ease-in; animation-timeline: view(); animation-range: exit; view-timeline: --header; } @​keyframes scale-down { to { scale: 0.8 0.8; } } That's it. The layout makes use of position: sticky so that the element stays in the shot whilst you scroll the page. As it leaves the page, it scales down inside the 🫶 The other smol animation here is fading the overlay on the video out 😎 Real easy. You may notice the view-timeline you defined above for the 👀 header { view-timeline: --header; } You have a pseudoelement on the text content of the header that lives inside a header > section::before { background: hsl(0 0% 0% / 0.75); opacity: 1; animation: fade both linear; animation-timeline: --header; animation-range: exit-crossing 0% exit 0%; } @​keyframes fade { to { opacity: 0; } } You use a slightly smaller range on this with exit-crossing to fade it out before you start the scale down animation 🤏 That's it! Thought this smaller example would be easier to grok for people 🙏 It's also covered with JavaScript if you really want it for your sites 🤙 CodePen.IO link below 👇

jhey ʕ•ᴥ•ʔ

146,270 просмотров • 2 лет назад

CSS Trick 🍏 You can create that Apple-style blowout text effect with CSS scroll animations and fixed positioning ⚡️ .word { animation: blowout; animation-timeline: --section; } @​keyframes blowout { 0%, 95% { background: transparent; } to { transform: translateZ(99vh); background: #000; } } The trick here is to fix the position of some things in your layout and then animate them based on their non-fixed containers ⭐️ The .word is position: fixed within a that has a height of 200vh section { view-timeline: --section; } section:first-of-type { height: 200vh; } Every section has a view-timeline: --section that creates a scoped ViewTimeline for each section's children 🤙 As that first section scrolls out of view, you increase its opacity and move it on the z-axis towards you. That gives it the impression of scaling up 🆙 .word { animation: blowout, fade-in; animation-timing-function: ease-in; animation-fill-mode: both; animation-timeline: --section; animation-range: exit-crossing 10% exit 0%; } You can use the exit-crossing range combined with the exit range to get a timing you like ✨ Definitely experiment with these ranges to see how they play. The timing function creates interesting effects too! At the same time as the text scales up, you need to fade in the video and the text that goes with it. Again, you can use the parent container's ViewTimeline --section p, video { animation: fade-in, fade-out; animation-timing-function: ease-in; animation-fill-mode: both; animation-timeline: --section; } p { animation-range: entry 10% entry 35%, exit 0% exit 25%; } video { animation-range: entry 0% entry 25%, exit 10% exit 35%; } The timings are slightly different here. Again, you can play with them to get something that feels right for you! @​keyframes fade-in { to { opacity: 1; }} @​keyframes fade-out { to { opacity: 0; }} Theoretically, you should be able to do something with animation-direction: reverse/alternate like yesterday's demo video { animation: fade 2 both linear alternate-reverse; } The trick with this effect is all about timing and creating containers that are bigger than the content and using them to drive the animations 🏎️ The scroll-driven signature is a bonus! ✍️ Perhaps a follow-up on that one 🤙 As always, any questions, requests, etc. Hit me up! With this demo, the GreenSock ScrollTrigger code is included where the CSS scroll-driven animations API is not supported 🙌 That means you could use this demo today! CodePen.IO link below! 👇

jhey ʕ•ᴥ•ʔ

270,144 просмотров • 2 лет назад

Russian shadow fleet not just allows Russia to earn money for its war on Ukraine but is also an environmental catastrophe waiting to happen. In a September video by Yle. fi, experts explain that about 70% of the tankers used in the Russian shadow fleet are at least 15 years old. They do not go through proper servicing which increases the risk of technical issues and malfunctions. A lot of these vessels have been blacklisted in the first place because their condition is so bad (meaning they are not allowed to sail) but they still continue voyaging through the Gulf of Finland, for example. Many of them sail under the jurisdictions of different countries, which makes them harder to track. The risk of an oil spill is getting more and more likely - and the shadow vessels carry tens of thousands tons of oil. The environmental disaster that would follow would have an unprecedented scale. It will affect all forms of wildlife and sea life, destroy the business of fishermen and coastal tourism for years, if not decades. Its aftermath for the environment would be indescribable, and the costs to mitigate such a disaster will be exorbitant. Since Russian shadow fleet tankers mostly don't have proper insurance, there is very little chance that any payments will follow that will cover the costs. These expenses will have to be borne by the country/countries near which this will happen, combined with future economic losses caused by damage to the environment. Moreover, Russian shadow fleet tankers are an extra burden for the coast guards as they have to check more vessels (again, many of them are in very poor condition) and have extra training, working on scenarios of possible environmental disasters. According to experts quoted by Yle. fi, from January 2022 to August 2024, 380 million tons of Russian oil and other petroleum products went through the Gulf of Finland, earning Russia more than $220 billion for the war in Ukraine. It is obvious at this point that tackling Russian shadow fleet and cutting off or substantially decreasing Russian oil profits is a top priority towards ending the war and ensuring lasting peace. However, as with almost everything in this war, stopping Russia is also very important for the environment - globally and locally. Currently, this fleet is a ticking bomb that can explode tens of thousand of oil into water at any moment.

Anton Gerashchenko

198,984 просмотров • 1 год назад

CSS Tip! 🎠 You can create a responsive infinite marquee animation with container queries and no duplicate items 🤙 li{ animation: slide; } @​keyframes slide { to { translate: 0% calc(var(--i) * -100%);}} The trick is animating the items, not the list 😎 More tricks 👇 To get this one working, you need to animate the items and not the list (Watch the video first?). Each item needs to know its row index (--i) in the list and the parent needs to know how many rows are in the list: ul { --count: 12; } li:nth-of-type(1), li:nth-of-type(2) { --i: 0; } li:nth-of-type(3), li:nth-of-type(4) { --i: 1; } Once you have that, translate each item based on its row index in the list li { translate: 0% calc((var(--count) - var(--i)) * 100%); } Now for the animation. The key here is that each row has an animation-delay calculated from its index (--i). That number is offset to make it negative so the animation start is offset ✨ ul { --duration: 10s; } li { --delay: calc((var(--duration) / var(--count)) * (var(--i) - 8)); animation: slide var(--duration) var(--delay) infinite linear; } Make sure to wrap that animation in: @​media (prefers-reduced-motion: no-preference) { ... } Lastly, the fun parts! 🤓 To create the "vignette" mask. Use a layered mask on the container 😷 .scene { --buff: 3rem; height: 100%; width: 100%; mask: linear-gradient(transparent, white var(--buff) calc(100% - var(--buff)), transparent), linear-gradient(90deg, transparent, white var(--buff) calc(100% - var(--buff)), transparent); mask-composite: intersect; } To create the 3D skewed effect, use a chained transform (Try toggling it in the demo ⚡️): .grid { transform: rotateX(20deg) rotateZ(-20deg) skewX(20deg); } As for the responsive part, use container queries! 🔥 article { container-type: inline-size; } When the article (card) is narrower than 400px update the grid and animation settings 🤙 Double the rows means double the duration! @​container (width < 400px) { .grid { --count: 12; grid-template-columns: 1fr; } li:nth-of-type(1) { --i: 0; } li:nth-of-type(2) { --i: 1; } li:nth-of-type(3) { --i: 2; } li:nth-of-type(4) { --i: 3; } li { --duration: 20s; } } CSS has the magic to be able to update those animations at runtime based on your custom property values 😎 An added bonus in this demo is that it doesn't require any JavaScript at all, for any of it 🤯 We can use CSS :has() for those toggles that update the styles, even the theme toggle! 🫶 Any questions, let me know! Make sure to check out the video. Will do a walkthrough one to follow-up 🤙 CodePen.IO link below! 👇

jhey ʕ•ᴥ•ʔ

542,671 просмотров • 2 лет назад

CSS Tip! 💫 You can create this responsive perspective warp animation with 3D CSS and container queries ✨ (Video reveals trick 👀) .warp { container-type: size; perspective: 100px; transform-style: preserve-3d; resize: both; overflow: hidden; } Couple of tricks in this one 🤓 The main idea is to create a tunnel (an open-ended cube). On each side of the tunnel, use linear-gradient to create the grid lines ✨ .side { background: linear-gradient(#​fff 0 1px, transparent 1px 5%) 50% 0 / 5% 5%, linear-gradient(90deg, #​fff 0 1px, transparent 1px 5%) 50% 50% / 5% 5%; } To position each side, you rotate on the x-axis by 90deg. Each side would become invisible at this point. So you give the scene perspective 😉 .warp__side--top { width: 100cqi; height: 100cqmax; transform-origin: 50% 0%; transform: rotateX(-90deg); } The cool part here is that you want to make each side the same height. But the container is responsive. So you can use a container query and make sure each side is 100cqmax tall 🫶 Then the "beams". Each side contains "beams". They have different colors, sizes, and positions, and move at different speeds ⚡️ We can control that through scoped custom properties. .beam { width: 5%; position: absolute; top: 0; left: calc(var(--x, 0) * 5%); aspect-ratio: 1 / 2; background: linear-gradient( hsl(var(--hue) 80% 60%), transparent ); translate: 0 100%; animation: warp calc(var(--speed, 0) * 1s) calc(var(--delay, 0) * -1s) infinite linear; } The magic here is though that a beam's animation is as basic as translating it from the top of the side to the bottom. And you can get that distance with a container query again 🔥 @​keyframes warp { 0% { translate: -50% 100cqmax; } 100% { translate: -50% -100%; } } And that is pretty much it! A cool warp animation effect using 3D CSS and container queries ⚡️ If you have any questions, let me know ᵔᴥᵔ CodePen.IO link below! 👇

jhey ʕ•ᴥ•ʔ

187,474 просмотров • 2 лет назад

consistency ≠ uniformity: for those who haven't lived through this era – we used to have beautiful, precision interfaces. now they're replaced by a design language that originated from the Apple Watch, with icons that only fit in squircles. but that's not even the point. the point is we used to design the whole stack – the technology, the concepts, the interfaces. when designers only care about superficial consistency, platforms lose their uniqueness. apple used to design systems. skeuomorphism wasn't just about leather textures – it was about teaching people new mental models. the trash can empties because you understand what a trash can does. aqua's lickable buttons and sheets had depth because the OS had layers you could understand. the old apple designed the whole stack – from metal to pixels to concepts. teams weren't just shipping features in the same box, they were building coherent platforms each with opinions about what computing should feel like for the medium. liquid glass is fine on a phone. but on macOS it's unusable – lack of precision, visual noise everywhere. this is what happens when UI language designed for fingers bleed into macOS. we went from interfaces designed for a 27" cinema display with a precise cursor to interfaces designed for a 1.5" screen you tap with one finger. the Mac is for creation and precision work. it needs information density. it needs chrome you can grab. it needs UI that gets out of your way but gives you power when you need it. instead we got padding and whitespace and translucent blurs optimized for touch targets nobody's touching. the squircle icon mandate is a symptom. when you force every icon into the same shape, you're saying "brand consistency" matters more than "each app icon needs to communicate its function instantly." we traded clarity for uniformity. we traded precise design for cross-platform sameness. consistency means your system has coherent rules within itself. uniformity means everything looks the same regardless of context. the hardware team still gets it – that macbook pro + M-series chips, chef's kiss. but software design feels like it's chasing fat fingers instead of remembering what people do on a Mac.

Ryo Lu

718,768 просмотров • 10 месяцев назад

🎬Whimsical Reverie | Preview: White Night's Ballet >> Main Attribute: Cool 🩰Outfit Details [White Night's Ballet] can be evolved into the following outfits: [White Night's Ballet: Awakening] (Stage 1), [White Night's Ballet: Undercurrent] (Stage 2), and [White Night's Ballet: Flamewake] (Stage 3). Fully glow it up to obtain the [White Night's Ballet: First Glow] outfit. 🩰Outfit Ability [Spinning Reflections]: After using the ability, Nikki bursts through the shattered mirror and begins an elegant dance amid blooming shards of light, with her movement speed greatly increased. If approaching a wall, Nikki can slide over the wall's surface and continue moving seamlessly. Sliding continuously consumes energy. When energy is depleted, Nikki will exit the sliding state. Wall sliding consumes more energy. While sliding across a wall, Nikki can jump over obstacles. She can also enter the floating state to disengage from the wall. When using the ability during [Companion Journey], Nikki and her companion will have a special movement effect. After equipping the [Spinning Reflections] ability, Nikki can also summon the Lucent Mirror and Mirror Shadow and activate the Brightnight Mirror Realm. The Brightnight Mirror Realm can be placed on water, allowing Nikki to slide within it. Within the Brightnight Mirror Realm, select [Airy Dance] from the sidebar to switch movement posture. Approach and remain near a Mirror Shadow to light it up. Interact with the lit Mirror Shadow to change its outfit, check its styling, try on its outfit, or invite friends to try it on. Note: The ability [Spinning Reflections] cannot be used in uncleared dungeons. The Brightnight Mirror Realm cannot be placed in certain stages or in the Mira Crown Merit Arena. 🩰Resonance Rewards Based on your number of Resonance attempts in [Through Songbound Night], you can earn rewards such as [White Night's Ballet: Makeup], [Momo's Cloak: Night Dance], and [Ocean's Radiance Gift Box], which includes the item [Dance of Golden Days] and the dance move [Flourishing Steps]. The item [Dance of Golden Days] can be used to dance gracefully in the open world. The dance move [Flourishing Steps] can be used in Momo's Camera. 🩰Evolution Rewards Reaching Evolution Stage 1 unlocks the pose [Graceful Leap]. Reaching Evolution Stage 2 unlocks [Eternal Ballet] for Momo's Camera: Framed Moment, the item [Dance of Golden Days: Illusory Dance], and the dance move [Flourishing Steps: Illusory Dance]. The Illusory Dance version features new music, special effects, and spectacular moments. Reaching Evolution Stage 3 unlocks [The Final Dance: Makeup], a new idle animation, the poses [Lightfooted Dance], [Unfolding Elegance], and [Elegant Pirouette], plus enhanced special effects and alternative details for certain pieces. —— ➤ Infinity Nikki Version 2.8 Golden Dust launches globally on July 16 (UTC-7)! ➤ Download Now: ➤ Join us on Facebook Group: #InfinityNikki #GoldenDust #GoldenCity

Infinity Nikki

94,493 просмотров • 2 месяцев назад