CSS Mouse Tracking 3D Tilting Card

Поделиться
HTML-код
  • Опубликовано: 2 июн 2024
  • While there are handy JS libraries that make this easy, we can do it with CSS only! It is a little hacky, but it’s a fun exercise in selectors, plus we can simplify things a little with the :has() selector. Support isn’t great there yet, so we’ll start without it, then look quickly at how it simplifies things.
    🔗 Links
    ✅ The original version: codepen.io/kevinpowell/pen/rN...
    ✅ The :has() version: codepen.io/kevinpowell/pen/Yz...
    ✅ 3D flipping card: • Create a 3D flipping a...
    ✅ Join the Discord! / discord
    ✅ nth-master that I mentioned in the video is no longer around ☹️ - I'll be working on some content around this in the not too distant future though!
    ⌚ Timestamps
    00:00 - Introduction
    1:04 - writing the HTML
    2:52 - styling the content itself
    3:55 - setting up the card wrapper
    7:24 - setting up the mouse position trackers
    14:25 - adding the hover
    24:26 - cleaning things up and making it look better
    26:14 - using :has()
    #css
    --
    Come hang out with other dev's in my Discord Community
    💬 / discord
    Keep up to date with everything I'm up to
    ✉ www.kevinpowell.co/newsletter
    Come hang out with me live every Monday on Twitch!
    📺 / kevinpowellcss
    ---
    Help support my channel
    👨‍🎓 Get a course: www.kevinpowell.co/courses
    👕 Buy a shirt: teespring.com/stores/making-t...
    💖 Support me on Patreon: / kevinpowell
    ---
    My editor: VS Code - code.visualstudio.com/
    ---
    I'm on some other places on the internet too!
    If you'd like a behind the scenes and previews of what's coming up on my RUclips channel, make sure to follow me on Instagram and Twitter.
    Twitter: / kevinjpowell
    Codepen: codepen.io/kevinpowell/
    Github: github.com/kevin-powell
    ---
    And whatever you do, don't forget to keep on making your corner of the internet just a little bit more awesome!

Комментарии • 54

  • @marl3x
    @marl3x Год назад +19

    That is such a simple solution that I would have never been able to come up with it. Nice.

  • @reegiromar
    @reegiromar Год назад +2

    I swear to God kevin you made me fallen in love with CSS a long ago and still am the big listener to you man 😍 thank you for giving us the best time spending with CSS 👏
    I love you to the God man ♥️😍
    Keep going

  • @aviralvikram9431
    @aviralvikram9431 Год назад +8

    Hello Kevin i am one of your Students.
    And I just want to Thank you from the Deepest part of my heart for all this Juicy CSS and Html Knowledge.
    YOU ARE MY FAVOURITE MENTOR for frontend.
    And You Successfully made me FALL IN LOVE WITH CSS. I Just LOVE all Your Videos, the way you teach makes everything Really easy to Understand.i Just wanna say I Love you(as a person).
    And you helped me a lot in my life, i am still learning a lot from you, and I hope you keep doing this.I REALLY REALLY APPRECIATE All The knowledge you are sharing with us.
    Thank you very much.

    • @KevinPowell
      @KevinPowell  Год назад +3

      Thanks so much for the kind words! I'm so happy that my content has been able to help out in your journey :D

  • @marklnz
    @marklnz Год назад +8

    I mean, you can do *everything* "without Javascript". If I'm doing "no-js" web stuff personally, I like to build with WASM, for example.
    However, the fun part of watching these videos is seeing a CSS wizard do it with *just CSS* which is a MUCH bigger deal than just doing it "without javascript". Nice job as always, Kevin.

    • @randomdev4246
      @randomdev4246 Год назад +1

      but how do you do DOM manipulations with wasm

  • @zarkasias
    @zarkasias Год назад +4

    Very cool!! I always learn new css tricks when watching your videos!!

  • @felixc.programs8209
    @felixc.programs8209 Год назад +1

    Great tutorial, I'm looking into posting HTML/CSS tutorials on my channel too but its still quite far in my schedule. In the meantime, little tutorials like this one are great to remind me of all the possibilities you have with just CSS. Can't wait for the next tutorial!

  • @CastleShield
    @CastleShield Год назад

    This looks splendid!

  • @pavanrao2965
    @pavanrao2965 Год назад

    Kevin back with interesting stuff as always 😍

  • @simenhagen86
    @simenhagen86 Год назад +1

    And here i struggle with making an regular card look good😅 this was awsome

  • @KOBE42__
    @KOBE42__ Год назад +3

    Neat little trick and really liked your logic behind making it work using pure CSS.
    I need to put all of this stuff into practice. While I absolutely love your tutorials, I’m finding it difficult to learn just by watching. I think I need to start building things with some of these more advanced CSS properties/selectors.
    Thank you Kevin

    • @KevinPowell
      @KevinPowell  Год назад +4

      Implementing things is so important. Watching is sort of like learning that things are possible, building stuff is how we learn how to actually do it though :)

  • @theman7050
    @theman7050 Год назад

    This is a brilliant use of Grid, my man ✌🏽😁

  • @minhduc8a21
    @minhduc8a21 11 месяцев назад

    Thank you so much, Kevin

  • @djol3336
    @djol3336 Год назад +2

    Cool video. Thanks

  • @YurijVolkov
    @YurijVolkov Год назад

    Oh, I love clever stuff! It's indeed a simple solution but you have to crack your brain to come up with it) Thanks!!

  • @Deadgray
    @Deadgray Год назад

    Haha, today I learned from this .something to turn into div in VSCode after so long using it, thanks 😀

  • @VipulAnand751
    @VipulAnand751 Год назад

    Thanks Kevin

  • @komakaze1
    @komakaze1 Год назад

    Another great video Kevin. I found it tricky to follow along at home. Here's my minor nitpicks while debugging my code - You renamed a variable to --rotateX in the video, but in the codepen it's labelled --rotationX. Sometimes you reference Y before X, where consistently X before Y would help readability. You include a rotationZ but don't use/need it. I couldn't get the sections of the grid to change colour on hover until i'd found i'd used a different class name for tilting-card-body.

  • @securefolder4548
    @securefolder4548 Год назад +1

    Last night fell asleep watching ur vidoe and had a css dream I was trying to make a animated navigation bar in my dream 😄

    • @KevinPowell
      @KevinPowell  Год назад

      Here you go: ruclips.net/video/FeJEEE3zc4U/видео.html

  • @tate_rs
    @tate_rs Год назад

    Hello Kevin, i'm an Embedded dev and web things like HTML, CSS and JS have always been a pain for me.
    I bumped into you few days ago when i was searching for some videos about CSS and honestly, you are actually changing the perspective on how i look at CSS. It's not aversion anymore, i'd say it's more of a curiosity now. I haven't started with practicing HTML and CSS yet but i still enjoy watching your videos. So i'd like to thank you for that !

  •  Год назад +2

    u r awesome !!

  • @The-Dev-Ninja
    @The-Dev-Ninja Год назад +2

    very cool :)

  • @mirimjam
    @mirimjam Год назад +2

    Maybe I'm wrong, but couldn't you set up the grid hovers the same as you did the rows and columns? Meaning rows 1-3 always tilt upwards, column 3n always tilts to the right, through combination, nth-child(3) tilts to the top and to the right.
    Then apply the transform on hover.

  • @duckyboy53
    @duckyboy53 Год назад

    kevin is css god

  • @AlexDBaxter
    @AlexDBaxter Год назад +2

    Great video! Of course in practice you would probably do this with JS, but it's nice to know this and similar effects can be managed with CSS only. I managed to trim the CSS a bit using a combination of the grid technique and the :has selector - so. you don't need to position the trackers explicitly (the grid does that for you), and you only need 4 rules to control the transforms (2 for the top and bottom rows, 2 for the left and right columns). I've done a codepen at alexbaxter-the-selector (seems like RUclips does not let you do links in comments?)

  • @SelmanIsHere
    @SelmanIsHere Год назад

    My thoughts from this video, grid simplified the html and complicated the css, while flex boxes were the other way around.

  • @ryanfiller
    @ryanfiller Год назад +1

    With the z-index being the way it is on the mouse tracker, would it be possible to put a link or button in the card? it seems like that would overlap the hovered div, I guess it would need to be confined to the center most grid area to not break the tilt effect?

    • @KevinPowell
      @KevinPowell  Год назад

      There might be a workaround, but if I had to implement this in an actual project that went beyond something very simple, I'd probably use a JS library tbh.

  • @rickardelimaa
    @rickardelimaa Год назад +1

    Was going to skip this video, because you show-cased this solution when you looked at others amazing CSS tricks ... but as usual I learned something new. Never thought about being able to select ranges with nth-child like that.
    Too bad _nth-master_ is gone.

    • @KevinPowell
      @KevinPowell  Год назад

      It's *just* gone down too. It was up around 2 weeks ago :\

  • @outpost31737
    @outpost31737 Год назад

    Sod that it's easier using JS. Interesting concept though.

  • @8bitlikadam920
    @8bitlikadam920 Год назад

    This is actually a mapping. Wow...

  • @theZ3r0CooL
    @theZ3r0CooL Год назад

    Mac is option+shift

  • @zachjensz
    @zachjensz Год назад

    At 23:00 I would just declare --negative-angle: calc(var(--angle) * -1); and use var(--negative-angle) thereafter

  • @ginga4eva
    @ginga4eva Год назад

    Does anyone know if this works in Wix Editor X?

  • @parekhnirajj123
    @parekhnirajj123 Год назад +1

    Npm install Tilt :)

  • @anthoniG
    @anthoniG Год назад +1

    Anyone know where the Code Pen link please?

    • @KevinPowell
      @KevinPowell  Год назад +1

      I've just added them to the description, sorry about that!

    • @anthoniG
      @anthoniG Год назад

      @@KevinPowell Thanks. Keep up the good work, really enjoying your tutorials

  • @dabbopabblo
    @dabbopabblo Год назад

    aspect ratio is new?

    • @KevinPowell
      @KevinPowell  Год назад

      Been around for a little while now 🙂

    • @dabbopabblo
      @dabbopabblo Год назад

      @@KevinPowell So is it supported by most browsers? Because I'm using it all across my website, and that caught me off guard

    • @KevinPowell
      @KevinPowell  Год назад

      @@dabbopabblo it has pretty good support caniuse.com/?search=aspect-ratio

  • @mikkolukas
    @mikkolukas Год назад

    Why are my comments being deleted?

  • @AgainPsychoX
    @AgainPsychoX Год назад

    What's the point with using so large font and having browser bar visible? Try full-screen mode (F11)!

    • @KevinPowell
      @KevinPowell  Год назад

      I can't full-screen, my screen is bigger than the area I'm recording :\

  • @Rxplys
    @Rxplys Год назад

    You never heard of flex?

  • @mody-nd8cu
    @mody-nd8cu Год назад +2

    first😍

  • @FdWebdesign
    @FdWebdesign Год назад

    Very cool