Our application is looking pretty good and it works well, but I think we could spice it up with some CSS3 animations. So, this won't necessarily work in some older browsers, but I think it adds a little bit of pizzazz to our application and makes it degrade nicely in older browsers. So at the very bottom of our CSS, we're going to add some animation keyframes. We'll need to add them with different browser prefixes. The prefixes are pretty similar, so we'll just do one prefix and copy and paste and then modify it for the other prefixes. So I'll start with webkit, because I'm in a WebKit browser.
The way this works is you defined a set of keyframes and then you give them a name, inside this keyframes keyword. So what we want to do here is start our animation at the beginning position, or the 0% position, with the opacity of the object being at 30%. And then at the end of our animation, which is 100% of the keyframe, our opacity will be set up to 1.0, which is full opacity. So what this will do is it will just fade in the elements that I am targeting with this animation.
So I have the webkit prefix going. Now, all I need to do is copy that and paste some other copies and modify the prefix for other browsers. So now that we have these keyframes, we can call this animation sequence within our list item. So I'm going to scroll up a little bit and find the place where I do the list items and add some code right here that call in our animation. So, for that, I'll do webkit- animation and then I'll call in my animation (my anim) and make it run for one second, and I'll need to do that with other prefixes.
So let me go ahead and save that, and I'll refresh this page, and you can see that these elements right here are fading in as I'm typing in some of these search fields. So, another thing that I want to do is make this expanding animation be little more fluid, so for that, I'm going to use something called transitions. And transitions work sort of like animations, except that they happen when an element changes.
So I have got a hover event here, and I want to set a transition that happens when the element, it's in its normal state, and when somebody hovers over the element. Now, I need to just put the transition here in the original version of the element, so I'll do webkit and not animation, but transition. I only want to animate the height element of the transition, so I'll need to tell it how long I want that to last-- that'll be 0.3 seconds--and then an easing-in and easing-out function. I'll just to use ease-out, so that makes it slow at the end of that transition. And let me delete this and just paste this a few times and add the other browser prefixes here. So I'll save that.
Let me refresh this, and I'll type in this name here. You can see that when I type in a search that results in multiple fields, you can see that when I roll over some of these elements my transitions, are a lot smoother. If you want to learn more about transitions and transforms, make sure you check out this course from Joseph Lowery in the library.
- What is AJAX?
- Making requests asynchronous
- Updating the DOM with getElementById
- Reading JSON files
- Working with jQuery and AJAX
- Sending and searching JSON data
- Incorporating CSS transitions