Really fun CSS hover effects

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
- In this video we're gonna be looking at using transforms and specifically transform origin to do really cool and fun stuff like this. I think, maybe it's just me, but I think that's pretty cool. (light music) Hi there, my name is Kevin and welcome to my channel where we learn how to make the web and how to make it look good with weekly tips, tricks, and tutorials. If you're new here I just love CSS. I love having fun with CSS. I love pushing and doing cool stuff with CSS. And I really want to instill this love of CSS in everybody. Like I want people to realize that it doesn't have to be frustrating. And in this video I do a lot of things where we can see that there's problems you can run into that are really easily solvable, if you really understand how it's working, 'cause we're using transforms and transform origin, but we're also gonna get into the deeper things with a little bit of stacking context and just how suit elements work. I sort of gloss over those a little bit. But I mentioned throughout that I have other videos that do deep dives into them, so but you'll see a little bit of how they're working as we're going through it all. Because those were the types of things that can really solve your problems and make CSS fun 'cause you understand how it's working. And just help you level up your CSS, and I think it's gonna be a really good video, and we're gonna do some cool stuff with it. Before we get to that cool stuff, though, I just wanna say a really big thank you to Skillshare for once again sponsoring one of my videos. If you don't know about Skillshare, how do you not know about Skillshare. Skillshare is, I'm sure you've heard of them before, whether it's on my channel or another one or just through your friends telling you that Skillshare is awesome because it's a really cool platform to learn on. You're watching this video because you wanna learn something, so that means that they're the right place for you as well, don't leave here. I still want you to watch my videos, but they have a lot of really awesome content over there as well. They have stuff on CSS. I've talked about Rachel Andrews' grid series that's on there. But also, a lot of people here always want me to do more JavaScript. They have lots of courses on JavaScript, whether it's specific for beginners, they have some advanced stuff, they have all sorts of JavaScript goodness. It's a massive huge learning platform. It's not just about coding. It's about a whole bunch of other stuff. I've done a whole bunch of Photoshop classes, like I mentioned last time. There's Illustrator stuff, there's how to run a business stuff. There's just lots and lots of things that you can take advantage of. Not only are they being generous by sponsoring this video, they're also being generous by giving you a two-month free trial to check it out and see what type of awesome stuff is in there. That's how much they trust their product. So you just have to use the link down in the description below and be one of the first 500 people to do so and you get those first two months for free. So finish watching this video. Don't run off right away, but when we get to the end I'm gonna give you a reminder, click that link, and get your two free months. So thank you very much to Skillshare. Now it's time to start talking once again about transitions and transforms. Now if you're not already familiar with transforms and transitions, I'd encourage you to check out an article that I wrote a little while ago. It was a few weeks ago, maybe a month ago now where I took a look at just the basics of it, and there's actually a video embedded in that using a cool platform called Scrimba, 'cause it just worked out really well for looking at the basics of transform. So if you're not familiar with transforms, check out that article that's linked in the description below. It's going to go through the basics of how transforms work. And again, there is a video that's in there if you're not a reading person, you're more of a video person, just scroll down a bit and you will run into that video. But that's just gonna sorta get your feet wet. But if you already know how transforms work but you're just like, well how did he do that stuff in the intro? I want that. Well, that's, you're in the right place, 'cause we're going there right now. All right, so I already do have some styling here as you might notice. What I've done, though, is I have included a link in the description below that has the exact starting place I am here. So if you wanna follow along you can. I just did this to help speed things up so we can really focus on those transition effects that we wanna be doing. So the very first one I wanna take a look at is these little links here, 'cause that's really gonna lead into everything else I ended up doing on here. I'm actually, I'm gonna do a little zoom in on this. We can make this a little bit bigger for what we're doing just to make it a little bit easier to see. So I've created these fancy looks here, fancy looks, fancy-links. If we come to my code you can just see I just have a class fancy-link, is all I've done for that. So what we can do on these fancy-links is I wanna add a pseudo-element to them. Now if you don't know about pseudo-elements, I'm gonna be using them a lot in this video. I do have another video, or I have a three-part series, actually, that does take a look at pseudo-elements in a lot more detail and there should be a card popping up for that now. So I'd encourage you to check that out first and then maybe come back to this. But I think you could follow along either way. So what we want to start with is our fan, I gotta spell it right, fancy-link. And I want the after pseudo-element on there, and I'm gonna be using a display of absolute on here. So that means I am gonna come up on the original and do a display of relative just to make sure that the positioning of this is relative. It's gonna get positioned within reference to the original link and not of the entire body, which would happen if I did not have that. So with that I am going to start with giving it a content because we need to have content on a pseudo-element or it will never appear. And I'll give it a position of absolute, like I just said. Next, we want to set it up. So let's just do a left of zero. I'm gonna do width 100%. I'm gonna give this a height as well. Say two pixels so it's big enough that we can actually see it. And I'm gonna give it a background color of current, currentColor like that 'cause then it's gonna steal the text color. Whoa look at that. Clearly did something wrong. I did display relative here instead of position relative, which is something I do all the bloody time. But we can actually see that sort of fix things a little bit. So my left of zero is working. I'm also gonna say a bottom of zero. Not sure why it went so far down. But that's why the position absolute does eventually get us to the right place there. So we have these underlines that are coming out underneath. Now what we want to do, and we're not gonna do the entire thing. 'Cause I wanna sort of explain how this is gonna work, but I'm gonna put a scale on here. But when they do scale you can see I have scale. We actually have 3D scales and X, Y, and Zed axis. And for this I'm gonna use the X axis. And I'm just gonna put 0.5 for a second so you can see what it's actually doing. So I'm gonna hit save on this. And you can see it shrank down to half of the original size like that. So that's really cool. We can control the scale on the X or the Y axis. So Y we wouldn't be able to see 'cause it's really small. We're gonna play around a little bit more with the regular scale, the scale X and the scale Y when we get to our buttons here. But you can see it has scaled it down. So now what I can do is transform-origin and set this to left. So right now it was shrinking the center. It shrank on this side and on that side or it scaled down. Now if I do a transform-origin on the left side you can see it is switched over to only be on the left instead of, so if I make this a bit of a smaller number, it's always sticking to the left side. Whereas if I don't have this, it's always gonna be stuck in the middle. So really, really cool. And now, what we can do is our fancy. Let me just move down a little. Fancy-link hover after. And what we can do is transform scaleX and put it up to 1. So now when I hover on top you can see it's going to the full size. Now it doesn't look so good when we do that. So I'm gonna come back up to my regular fancy-link here and I'm gonna add in a transition for transform, we'll say 250 milliseconds and we'll do an ease-in. Now one of the other advantages with this is scaling is a nice performant way to do transitions. Let's just save that. Yeah, there we go. We can see it's working. So transforms, or scale is one of the more performant options we have for doing transitions. So you could get away with doing the same thing here, with playing with your left and right positioning. The left could be, or the right could be at 100% and then we could have it grow and shrink. But this is actually gonna be a little bit better for performance. So we can see it is growing and shrinking. But what I did is my original scaleX was actually to 0. So when I do that it looks like there's nothing, but then when we come on and off we can see it growing and shrinking away. So that's a nice start but, you might have noticed in the finished version we can go look. It comes in but then it leaves on the other side, which I think is a lot of fun. So we can do that same thing. We can have it come and go on different sides. But what we wanna do for that is come and change the transform origin on hover origin. I want this to start on left. So this is when I hover I want it start on the left and move toward the right. But then when I take it off of hover I want it to switch. So I want it to move toward the right when I move my mouse away from it. So let's go and check that out. You can see it moves in but then it's moving off in the other side. So you get this cool little like sneaking type of action. I think it looks really fun and really cool. The one thing is you will notice that the longer link, it does go a little bit faster, and with a short link it does go a little bit slower. There's nothing you can really do about that 'cause it has to do the entire thing in 250 milliseconds. So if it's really long it's gonna have to go really fast. And then if it's just one word or really, like the letter A or something, it's gonna go a lot slower 'cause it has less distance to cover. But I still think it looks pretty awesome and I really like that effect. So we can use the same principle to worry about our buttons over here. And because we can use the same principles here, what I'd encourage you to do is hit pause on this, go to those files that I've given you in the link down below, set them up so you're using my starter CSS and see if you can do it on your own from what we've just learned 'cause I think putting it into practice will be a really good thing to do. Once you've done that you can come back, or if you get stuck along the way you can come and see how I did things at the, how I ended up doing it, whether you managed to do it, if you wanna see I did it differently, or if you just get stuck and you wanna see what I did 'til you get past whatever is blocking you. So I've already done a little bit of basic styling on my buttons just so they don't look terrible. But now I'm gonna come down and here I'm just adding my margin in between those buttons. Those come down and actually start doing it. Now for my buttons there's a couple things that are important is they all have a class of button, but I have my button-one, button-two, and button-three, so we can do things a little separately as well. So what I'm gonna start with is my button after. And once again we do have to give this a content. And position absolute. I'm gonna give it a width of 100% 'cause I want it to be the full size. A height of 100% 'cause I want it to be the full size. Now height is a funny thing 'cause normally it will calculate based on the width of the parent. But if it's positioned absolute it will actually use the height of the parent then. Let's give it a background color. I'm gonna do rgba so we can actually see it. Now I'm doing rgba and let's do like a 0.5 or something. Because what that's going to do is you see, it's gonna keep the color of my box a little bit. So I don't have to come up with a dark orange shade. I can just use an rgba value, and it's gonna darken it by itself. Now the problem is they're gigantic because I forgot on my button, position, I didn't do display this time, relative. And now, there we go, they're the same size. The only problem is they're not positioned properly. So up in here and say top 0 and left 0. So they should be lining up right on top. Now the only problem is they're also on top of the text. You might wanna check another video of mine, 'cause what I'm gonna do here is I'm actually gonna give it a z-index of -1. Which is going to push it to the back, but the problem is it was in the back of everything. It's now hiding behind this white box over here. Interesting thing, though, is once you've given something a position you can give it a z-index. So this is position relative. I'm gonna give this a z-index of 1 and hit save. And then my black border's where I want it to be. And you might be going, what just happened? As soon as I give my button a z-index it's giving a new stacking context. So this -1 is now within this button and not within the page in general anymore. So it cannot go behind my button 'cause it's living in my button stacking context. And if that's really confusing to you, there is a card popping up now or soon, that will pointing to my video on stacking context because it's an important thing to understand and sometimes once you know how to manipulate it, can make your life a lot easier. 'Cause if this is confusing I would encourage you to figure out how zed, or how stacking context works. Now obviously I don't want the to fill up the entire space like this. So what I'm going to do is let's come on and do my, we'll start with one of them at a time. So do my button-one before, I did after, not before. And we can control the after on this one separately. So we can do our transform scaleX and we'll stick this one the same as what we did on the last one. I'll start with a 0.5 just so we can see that it kicks in. I can say that my transform-origin, transform-origin is left. So it's growing out the left side. And then just like before, we can do my button-one hover after has a transform scaleX of 1. So when I hover on top we can see that it is working. Now what I'm gonna do is instead of having to do a transition on my button-one, my button-two, my button-three, I'm just gonna come up here on my button after. So this is for all of them. And we need to put my transition on here. So transition transform, we'll say 200 milliseconds this time, and an ease-in. And now we can see we have my little animation there. But just like before I'll go ahead and search that woops, not a 1, we want that to be a 0. And now we can slide in and out or we can do just like before where this was right, let's just copy this whole line of code here and paste it and switch that one over to left. And now it slides in one side and goes off on the other like that. So nice and cool. So we can take a lot of the same things here, and I think what we'll do is actually just copy this whole thing and paste it but switch these two over to a button-two. So with the button-two, instead of doing a scaleX I'm gonna do a scaleY. So X is on the X axis, so we're scaling our box. Actually, you know what, I'm just gonna do, yeah let's do that. The only thing is now we're working up and down. So this one I'm gonna switch to top and this one I'm gonna switch to bottom and hit save. And now it comes up and then that way, and actually I think I'd like that if it was the other way around more, bottom and top. And there we go. We can have it come in on one side and go down on the other side. So I think that's pretty fun that we can do sort of two different effects like that. And the last one we'll do here. So that would be, we have it all saved already. So this will be my button-three. So on my button-three this one I can just do a regular scale like that. So I'm actually gonna put this to like a 0.5, take that off for a second. So this scale, 0.5, it's gonna scale on the X and the Y axis. And take that off. So you could even have it grow out the middle like that if you wanted to. So you can see that I'm scaling both ways, not just on the X or the Y, but I'm doing both, whereas if this was scaleX it's only shrinking it one way. And if it was scaleY you can see it's only shrinking it the other way. So if we just do that it's doing both at the same time. So if that was a 0 we can have it grow and shrink right from the middle, 'cause the default transform-origin is center. So we can have it growing and shrinking from the center. But we could take advantage here, and we could do a, I'm gonna say bottom right. 'Cause this is where it's leaving from and this is where it's entering from. So this could be a top left and hit save. And then we can have it come in and leave on the diagonal like that. Not my favorite, I think I like this one the most, but you know, go with the one you think or play around with it. You definitely don't have to leave it at that. You can do a whole bunch more with this, I think. All right, so that is awesome. Now it's time to get onto the really fun one now that we have our little buttons there done. So just really fast, I haven't done very much in our card here. I've added a margin bottom there just so I could scroll down. But on my class I have my content card. I have just a card_title, a card_body, nothing too fancy. Just in case you're asking, this is with the BEM naming convention, which I have done a video on, so it's why I have a double underscore there, 'cause I usually get questions about that. So nothing too fancy apparent, h3, a paragraph, and nothing else going on. And what we wanna be doing is making it so we have a little thing like that. So I think that's pretty fun. And with this we're gonna have to explore one other thing. If not done just with transforms, well it is done with just transforms actually, but it also has a little bit of extra in there. So once again, I'd encourage you to see if you can figure out how to do that or how I did it. So pause the video, jump into the starting file that I gave and see what you can do with it. And if you can manage to figure it out, but then when you get stuck you can follow along. Or if you managed to finish it and you wanna see how I did it differently, you can check that out as well. So you can see here I've already had my card that has some padding on there. Has the background image. The background image, I'm just using a random placeholder from Unsplash It. I also put a background color with the background blend mode 'cause without that probably won't be able to read the text. There, see you can't read the text at all. So that just takes, I'm blending the background with this dark gray color and multiply keeps the darkest pixels, so you can see it's darkening it and all there. I left the card_title here empty just so I'd remember to, this is where we want to do most of our work at the beginning anyway. And at the very beginning, I think, I don't actually need, we're gonna come back. Actually, no, we do need to do one thing, because once again, we will be using pseudo-elements. So position relative. It's almost a masterclass as much in pseudo-elements here as with the transitions. So a couple things. So let's come down and do my card_title after, as you probably guessed. And once again we need a content on there with no content in it. And I'm gonna give it a position of absolute. We'll give it, in this case I want the height to be a little bit more, like I don't want it to be flush with the text. I want it to be a little bit bigger. So with the top of like -.25 I'm actually gonna use rem. Usually I use m for this but we'll see why in a minute. And I'll explain my decision to use rem here. And actually, yeah, you'll notice here on my card my padding, I also sit with rem. So if you saw last week's video where I looked at the difference between m and rem. So if you're not sure about those, that could help you out. But I do say usually with padding margins I'm using m's. But in this case the rem is going to help us out as we'll see in a second. We'll give this a width of 100% to start with. And the background is my, that orange color which just happens to be ee6352. So let's see, do we get anything? Width. There it is. So top is there. Let's give it a left of 0 just so. Now we're running into that same problem that we ran in before. So I can do a z-index of -1 on this to push it backwards, but now it goes behind everything. Do you remember how to fix that? Here where I set the position of relative, that means I can also set a z-index on here. Index of 1. And the number here doesn't actually matter, but what matters is I'm creating a new stacking context, which now puts this -1 can't escape outside of my title. It's just all the way on the back of anything that happens to be in here. Now what I wanna do is I actually want this to start all the way flush on the side there. And because my padding is set to 2rem I know that what I want my left to actually be is -2rem. So that should pull it perfectly flush. That's perfect. The other thing, you'll notice that the width. I actually want it to be closer to the total size of my text. So instead of a width of 100%, what we can do on here is use a calc. And on my calc what we can do is 100% plus, oh actually one thing I'm gonna change here, too, 'cause 100% it's doing 100% width, which is, it's a block level element. So even though it's a short text it's taking up all this space. So if we come on to my card_title, we can also give this a display of inline-block. So the 100% is based on the content and not based on the size of the parent. So then this 100%, and then we can add a little bit to this, so I added 2rem to this side. So just to balance it we could do +4rem. So now I have 2rem on that side, 2rem on this side right there, and it balances out pretty much perfectly. So that is looking pretty good. But obviously I don't want it to be stretching that whole size just like that. We want it to be a bit smaller. So we can use my transform and, you guessed it, scale, scaleX. I'm going to do it at like a .1, see what that looks like. It's probably pretty good. We're stuck in the middle. And now my transform-origin would be left. There we go. So it's on the left like that. And actually that's pretty good. Maybe this could be like half that. I don't know, you could play with the number a little bit to get exactly what you want. We'll go with that one. So it's sort of highlighting my title which is nice, but whenever I hover not only on the title itself, but if I hover on the card I do want that to grow. So we can come here and say card hover card_title after. And what is it we wanna change. We want the transform scaleX 1. Let's just see that out. There we go. Boom, and it's anywhere on the card I hover it's working. We just need to add in our transition note. Transition transform 250 milliseconds ease-in. Let's see what that looks like. Perfection. I think that looks pretty good. Now the real fun part comes with this text here. So what we want is that grows out. Once that stops the white part comes and reveals this text that's underneath. So a few little fun things we can do for that. So first that's my card_body. So the first thing is I'm actually gonna choose my color. I don't wanna use black or a dark color, 'cause we can still see it, right? Or even, except we add the 333 on there, but I can still see that. It's really hard to see. It's getting pretty close to disappearing, but we can do one step better and say it's transparent. So it's literally invisible and we can't see it. So that's step number one. But I think actually before we keep going I'm gonna leave that as transparent for now just because, I'm gonna leave it off, I mean, while we style it, but that's what we're going to be doing. So we can turn that back on in a second after. Content is nada. Position once again is absolute, position, I spelled it right, that means my card_body needs a position of relative. And then we wanna position it where we need it. So let's just do a top of, I'm just gonna do top 0, bottom 0 left, left of 0 and right of 0. Background is white. Okay, good. So we can see that it's there, which is nice. Once again we need to (voice muffled) back so z-index is -1. We need a new stacking context so we can come back up to here, z-index is 1. There's other ways of creating stacking context that's not just through z-index, but again if you wanna know more about that check out the video on there. Actually, let's just make sure we can see my text, black. Okay, so we can se the text. So that's a good sign. Now one problem I have is this giant space in between them in general, I think. So let's come on to my card_title itself and set a margin-bottom of 1rem, so I know exactly what that is. We still have too much. Card_body, let's just give it a margin of 0. Make it a little bit easier. There we go. So we know, so my top. My top here. My top, it's not going to be 1, 'cause I can probably tell that space, -1, I think it's gonna be too much because you can see it's overlapping a little bit. It's overlapping because I have my bottom of -0.25 here. So we're sucking down by 0.25. So we just have to make that 0.75. And I think, there we go. It'll line up perfectly. If I'm doing that on the top I want this same thing on my bottom, just to balance everything out that way. I think it's ugly that it's touching here. So on the left we might as well just stick with the same number. And this is where having like a custom property could come in handy, but I just made all these changes. Eww, I don't like that they're the same. It won't matter 'cause this is gonna disappear. It's all good, it's all good. And the right 0 I think is fine. Or actually, I think a custom property would go good there. Just, we have like here, this space, this space, and this space all being equal. I think looks little bit nicer. So we'll stick with all those being the same. So once again I can move my z-index and let's do our transform scale. But this time I'm gonna do a scaleY, just like with this button, cause we want it to be going, moving up and down. So scaleY will be 0. So it should disappear when I hit save there, super. And then when we card hover, the card_body after transform scaleY 1. There we go. So now we need a transition on that. Transition transform 250 milliseconds ease-in. And transform-origin top. Ha, look at that, it's already pretty cool. I like what it's doing, but we want this to grow and then we want that bottom thing to sort of slide out afterwards, 'cause I think that makes it a lot more interesting. So the way we can do that is we can use a transition delay. So I don't want this transform to happen until this one on the top has finished. So it's actually really easy to do. I'm gonna keep this here with my transition. We can add, you can do a transition delay like this with it's own, so it'd be 250ms, because I'm not worried about this timing. It has nothing to do with that. It's going back up to this one here. So I'm looking at, when the orange box is growing it's taking 250 milliseconds. So it's saying when this finishes pretty much we can start that one there. So let's save that and see if it works. Here we go. Cool, right? Now if you want to, the transition delay can also come in, I think it's here. Yeah, there we go. So you can add it all in with the shorthand here instead of having to have a whole bunch of properties. So that's cool. Now the only problem, as I said, we can see our text even when we are not, when it's not there. Before it's supposed to come in we can still see the text, which is a problem. So we can come back up and, where is my, so we can come to here and make this transparent again. So hit save on that so it disappears. And my card, I guess we can do it right here. Card_body, no, card, doo doo doo, I'm actually gonna leave that there and we'll do it right here. Card hover card_body color is black. I guess we should stick with my, still dark enough. Still nice and high contrast. We'll go with that one. So right away that's sort of working. But the only problem is now when I start, if you have really good eyes let's make this red. Just so you can, I think it'll make it a little easier to see. As soon as my mouse goes on top the text appears. And as soon as my mouse leaves it disappears. So it looks a little weird, right. So let's go back to 333, and you can see it even though it's super subtle. But it's really obvious when this leaves that it's disappearing. So what can we do to fix that? It's not that complicated. What we can do is actually, and this is not as performant as I was thinking. With everything else I was sticking with transitions that are performant, which is on the scale. You can also do opacity and, is it rotates? But color isn't necessarily the most performant. But hey, we can cheat a little bit here. It's not something I don't think they would put a big slow down, and if it doesn't move at a smooth 60 frames per second nobody's gonna notice anyway. And I think on most people's computers this won't cause any issues. So we will want to actually transition this color. So transition color. And let's do it a little bit faster, 150 milliseconds. And doesn't really matter what ease-in, ease-out 'cause we want it to be a little bit hidden. So you can see it's sort of glowing in and glowing out now. Like it's slowly fades out when my mouse leaves, which is really, really cool. But I'm also gonna add in. I don't know, should I do a whole 250-millisecond delay? Let's see what happens. That works out pretty good actually. What if it was actually longer? Ah, look at that. That's even better. The reason that's working is 'cause, is because the delay, it's this is running, when I first go on it's 250 milliseconds for this to grow and then the other one's starting. And that's, so it's, we're starting this one. So we're starting this fast transition after 350 milliseconds. So it's after this has started to come down. And then when it starts coming up it is taking, if you have really good eyes I'm sure if that was actually red instead maybe you'd see it a little bit, but the color's blending in enough that we're not noticing it. If we really needed to, or if your text was standing out, you could set that to 250 and it would disappear just at the perfect time as well. But it's already faded off enough and with the faster transition I think we're sort of making up for the difference along the way, and there we have it. I just, I had fun doing that. That was one of those videos where when I was planning everything out and just playing around I got a little frustrated at first 'cause I didn't know, there's too many like, let's just look in, that's sort of what my article was, looking at the basics of it. Oh we can rotate something around. That's cool but how do you use that in real life? And so I think here we're getting a better idea of how we could use it in real life, and that's always a good thing. That's what I wanna do here. And I hope you learned a little bit along the way and saw what I meant by falling in love with CSS. I just think things like this are so cool. The type of stuff you can do is so cool and so fun, and when you know how CSS works it's not hard to do. So if you did like it, if you did learn something along the way, please let me know what it was in the description below. If you've already done a cool project with transitions or transforms 'cause I keep saying transition when I should be saying transform. If you've done cool stuff with the two of them together or whatever it is, leave a link down there and let me know about it. 'Cause that'd be really cool to know about and learn about. On another note, I'm gonna strongly encourage you to also come and check out my newsletter. So there is a link to it in the description below. I think at the end of the video it's gonna show up in a little box as well. And my newsletter, I've transformed it a little bit. It's so you can keep up to date. So I'm sure you're subscribed. You're subscribed here right? You've clicked the little subscribe button. But even when you're subscribed you miss videos sometimes. And maybe you didn't know I had articles and you heard me talking about that at the beginning. You're like, oh crap, Kevin's doing articles and stuff like that, too, cool. So if you never wanna miss out on any of that, subscribe to my newsletter. The link is in the description below, and then you'll just every week, once a week, one email only, every Sunday. You'll get a nice little recap of all the stuff that I've been up to. And if it sounds cool to you just click the link and you get to watch my video or read my article. And that's it. Just a nice way to keep up to date with everything I'm doing and I try every now and then to throw little bonus quickies in there that are fun 'cause say thank you for being part of my newsletter. And speaking of thank yous, thank you so much for watching this video all the way to the end. I really do hope that you liked it. Also a big massive, huge thank you to my patrons for helping me support my channel and everything I do here with a bonus shout out to John, Lauren, and Fernando for being my supporters of awesome. You guys are amazing. Thank you very, very much. That is it for today. Thank you one last time 'cause I'm all just exploding with thank yous right now. And of course I look forward to seeing you next week, but until then, don't forget to make your corner of the internet just a little bit, just a little, tiny, nothing, little, little bit, more awesome.
Info
Channel: Kevin Powell
Views: 121,778
Rating: 4.959003 out of 5
Keywords: Kevin Powell, tutorial, html, css, css hover effects, hover effect, killer css hover effects, css transofrm, css transform-origin, transform-origin, css transform animation, transform hover, advanced css hover, advanced hover effects, awesome css hover effects
Id: ceNMP-aQkQ4
Channel Id: undefined
Length: 34min 53sec (2093 seconds)
Published: Wed May 29 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.