We launched a new IT training category! Check out the 140+ courses now.

Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member

Controlling Spry widget animations with JavaScript

From: Dreamweaver CS3 Beyond the Basics

Video: Controlling Spry widget animations with JavaScript

Customizing widget behaviors does require you to modify a little bit of JavaScript, but you don't have to be a JavaScript hero to start modifying your files. While the default animation looks fine, there might be sometimes where you want to slow it down or speed it up based on the content. So let's first slow our animation down and then we'll see how we can enhance the quality of our animation by actually editing the source JavaScript file. So we slow our animation down by passing along another variable. So, I am going to switch back to Code view and again we are working on the current exercise files. So, if you close that, be sure to open that back up again. And in Code view, I am going to scroll back down to our Line 116. That's where our constructor function is.

Controlling Spry widget animations with JavaScript

Customizing widget behaviors does require you to modify a little bit of JavaScript, but you don't have to be a JavaScript hero to start modifying your files. While the default animation looks fine, there might be sometimes where you want to slow it down or speed it up based on the content. So let's first slow our animation down and then we'll see how we can enhance the quality of our animation by actually editing the source JavaScript file. So we slow our animation down by passing along another variable. So, I am going to switch back to Code view and again we are working on the current exercise files. So, if you close that, be sure to open that back up again. And in Code view, I am going to scroll back down to our Line 116. That's where our constructor function is.

We are already passing in a couple of variable so we are just going to add another variable. So I'll put my cursor right after the defaultpanel variable and I'll type in another comma since we are going to add another one. And we are going to pass another one of those hidden variables, one that doesn't come up as a code hint. We are going to type in duration. Now duration deals with the animation itself and the value and duration is actually passing along in milliseconds. The default is 500, and that's going to be half a second. So those panels are opening and closing in half of a second. So we are going to pass along a value of 1000. We do that by typing in a colon, and then typing in the value of 1000.

Now what that's going to do for us is its slow our animation down and the opening and closing of these panels is now going to take a full one second rather than half a second. So let's save this file and we'll test that functionality in our browser. So go ahead and preview that in a browser. It should open up. I'll scroll down so I can see my entire Accordion and then when I click it, now it's taken a lot longer to animate between them than it did before. Now, you might say to yourself, wow, that's really too slow but that's really not the point of what we're looking at here. What we are looking at is the fact that in addition to being slow, the animation is starting to get a little bit chunky. Now the reason the animation is getting a little bit chunky is because there's more than just duration that goes into calculating the animation.

So what we're going to do, we'll close out of our browser and then we'll actually open up this Source JavaScript file that controls the Accordion widget and we'll learn how to modify that, so that we can really make this animation smooth even at a longer duration. Okay, so we're back in Dreamweaver now and what I am going to do is I am going to close my CSS Styles panel so I can really see my Files panel. Now we're going to point something here that we haven't really seen yet. Let me go ahead and close all the folders inside of my Files panel, so I can really focus on the root level directory.

Now, you are going to see a folder in there that you might not have noticed before. It's a folder called SpryAssets. Anytime you add anything within the Spry framework to your page, Dreamweaver is going to create this folder and then copy over any of the Spry Library JavaScript files into this folder. So all of your pages that are referencing the Spry assets or regions or repeat regions or widgets, they are going to be accessing files in this directory. So it's really important that this directory gets uploaded, and it's really important you don't begin to move this directory around without updating those links. So I am going to open up the SpryAssets folder and expand this out a little bit so that we can see our file names. So let me scroll over just a little bit and resolution size, there we go. So you can see that we have our SpryAccordion.css file. We went ahead and sever the link to that, so we know that our CSS is actually in our own external file. No, not in this one but we're really interested in the SpryAccordion.js file. So let's go ahead and double-click that to open it up.

Hopefully, it goes without saying that if you are going to attempt to modify this file, you might want to go ahead and make a backup prior to modifying it. Anytime you are going to modify a core functionality file, you are going to want to have that back up some place else. So if you want to examine the SpryAccordion file or any of the Spry widget files for that matter, just go ahead and start scrolling down there. They are very well commented as you can see. You are going to find a lot of functions, a lot of variable declarations. And just noticing around a little bit, you can find exactly what you are looking for. Now, we are looking to control our animation. So I will save you some scrolling and I am going to use my Go to Line again. So I am going to click on my Go to Line icon, and again, if you don't have that, we'll just scroll down to where we are going. So we are going to type in Line 402 and we'll click OK.

Now, when we go down to Line 402, we can actually see that this is the Spry.Widget.Accordion.panelAnimator function. So this is the function that controls our panel animation. So let's scroll down a little bit. Notice that it is looking for three variable values. The accordion, and that would be the actual widget that's being controlled. The panel, so which panel is animating, and then any options that are going to be passed into this. Now that's a really important part because that's option's plural. Now, we have only passed duration in and right now that is the only variable that's turned on. But there are two other variables that we can switch on and looking down at the function, it's pretty easy to determine which variables we could also pass in. Look at the second block of code. We have this.fps (frames per second), this.steps, this.duration, and this.onComplete.

So frames per second, steps and duration is where we really want to focus. We have an interval and the interval is being determined, and if I scroll down, we can see this. The interval being determined by first checking to see if frames per second are being used. If frames per second are being used, it converts them into steps. But if frames per second isn't being used, then the interval is actually created by taking the duration time and dividing that by the number of steps. So how many steps am I going to animate and over how long. So we changed the duration, and made the duration longer but we didn't really change the steps.

I am going to scroll back up here. So our initial steps are 10 and our duration is 500. So by increasing our duration to 1000, without also increasing the number of steps. That's why it's getting so chunky. So the same amount of steps over a longer period of time. So we need to increase the steps as well. But if scroll back up, I notice that when the function is being called, it's expecting to pass in the name of the Accordion, the panel that's being animated and then these options. So what we need to define now is where these options are being defined so that we can also pass along the steps. So what we need to do is go up in our code and establish where this function is being called, and see if the variables that are being passed into this function call are being defined.

Once again, I am going to use my Go to Line icon and if you have got that handy, just go ahead and click that; if you don't, you might want to just scroll back on up and we are going to move up to Line 163. So on 163, and we can actually see that there's a call on that line that says Spry.Widget.Accordion.panelAnimator. So, this is where the function is being called. Just to move up briefly to see which function this is, it's a function for opening the panel. So when the panel is opened as part of opening the panel, it calls the animation function, so that it will animate it as well.

Now the part that we are really interested in is right here on Line 163 directly after the function call. It says this. so it's referring to itself because it's called within a function and then it says panelB. Now panelB is identifying which panel somebody is clicking on. So don't assume that that's the second panel. Now, the next value is what we're really looking at, there's a curly brace and it says duration, and the value it is passing is this.duration. Now, because in the constructor function, we passed in a duration value, we're able to change that. If not, it sticks with the default value.

So we can also pass in a value of steps. So what we will do is we'll place our cursor right after the this.duration. So place your cursor right after that, type in a comma, and then define steps is going to be equal to this.steps. Now if we were interested in doing frames per second here, we could just type in another comma, and say fps, and make that value equal to this.fps. Now that doesn't mean that we have to pass in a value for duration or a value for steps. What we're basically doing is we're flagging in and saying, hey, allow the user to pass this variable in. If the user does not pass the variable in it, it will just go ahead and use the default value. So our JavaScript has been modified and now, it will accept the steps parameter as well.

So let's go ahead and save that. We'll go back to our current.htm and on Line 116, let's go ahead and pass this steps value. Since we made the duration twice what it normally is, we'll go ahead and do the same thing for the steps. So on Line 116, right after we call the duration, let's type in a comma and we're going to type in steps, so again because of variable we don't have code hinting for it, because we just turned it on. And then colon, and we are going to pass in a value of 20. So the default value is 10, we will double that and make it 20. So let's save this file and let's test that in our browser again. I'll scroll down and now when we click on our animation, even though it's taking a second, it's a lot smoother than it was before, because it's moving shorter distance over that time in each step. So we get a much nicer, smoother animation, even though it's a lot longer than it was before.

Obviously, this is just one example of taking control of your widgets. If you are comfortable with JavaScript, you will notice how easy it is to affect your widgets' behavior. And if you haven't done a lot of JavaScript work before, I hope this convinces you that you don't have to have a lot of JavaScript experience to tinker and tackle around and play around with the Spry framework. So I want to encourage you to really experiment. Get in there and read the commenting, see what's going on with these functions, see what you can change, see what you can't change and have fun. I mean as long as you make a backup file, you are not really going to break it and you are free to experiment with it as much as you would like.

Show transcript

This video is part of

Image for Dreamweaver CS3 Beyond the Basics
Dreamweaver CS3 Beyond the Basics

102 video lessons · 38792 viewers

James Williamson
Author

 
Expand all | Collapse all
  1. 2m 3s
    1. Welcome
      1m 17s
    2. Using the exercise files
      46s
  2. 1h 23m
    1. Reviewing the Coding toolbar
      8m 42s
    2. Customizing the Coding toolbar
      9m 52s
    3. Taking advantage of Code Hinting
      7m 20s
    4. Using snippets and shortcuts
      11m 10s
    5. Using the Quick Tag Editor
      5m 18s
    6. Using Find and Replace
      9m 50s
    7. Regular expressions
      5m 39s
    8. Using Bridge with Dreamweaver CS3
      8m 28s
    9. Round-trip editing with Photoshop CS3
      3m 40s
    10. Leveraging image variables in Photoshop CS3
      7m 32s
    11. Integrating external variables into your workflow
      6m 16s
  3. 37m 26s
    1. Understanding the CSS Styles panel
      7m 59s
    2. Understanding the Cascade
      5m 50s
    3. Understanding Inheritance
      5m 8s
    4. Understanding Specificity
      7m 5s
    5. Managing CSS styles
      5m 4s
    6. Using Design-Time style sheets
      6m 20s
  4. 2h 19m
    1. Using the new CSS template pages
      5m 59s
    2. Understanding DIV tag structure and layout
      12m 0s
    3. Understanding the CSS box model
      10m 0s
    4. Using absolute and relative positioning
      8m 35s
    5. Understanding floating elements
      7m 9s
    6. Clearing floats
      7m 19s
    7. Using floats to control page layout
      3m 45s
    8. Building structure and assigning IDs
      10m 19s
    9. Applying basic styling to structured content
      11m 14s
    10. Positioning container elements
      11m 4s
    11. Enhancing layouts with background graphics
      11m 48s
    12. Creating faux columns with background graphics
      8m 55s
    13. Creating rounded corners with background graphics
      9m 17s
    14. Building navigation with CSS
      16m 57s
    15. Using Dreamweaver's Browser Check feature
      5m 31s
  5. 53m 22s
    1. Creating properly structured forms
      6m 30s
    2. Creating accessible forms
      6m 41s
    3. Using CSS to lay out form structure
      7m 40s
    4. Creating vertical columns for form elements
      7m 48s
    5. Adding user feedback
      5m 52s
    6. Applying advanced styling to forms
      8m 11s
    7. Client-side form validation
      4m 17s
    8. Validating forms with the Spry Validation tools
      6m 23s
  6. 1h 20m
    1. Understanding the Spry framework
      3m 43s
    2. Defining a data source for use in Spry
      3m 56s
    3. Creating a Spry table
      8m 8s
    4. Using the Spry widgets
      8m 11s
    5. Connecting various data sets
      4m 50s
    6. Understanding Spry widget structures
      7m 1s
    7. Applying custom styles to Spry widgets
      6m 24s
    8. Applying additional custom styles to Spry widgets
      8m 46s
    9. Controlling Spry widget behaviors with JavaScript
      6m 0s
    10. Controlling Spry widget animations with JavaScript
      9m 31s
    11. Creating effects with Spry behaviors
      4m 42s
    12. Hand-coding Spry
      9m 11s
  7. 1h 11m
    1. Creating a base template
      8m 6s
    2. Creating editable attributes
      6m 26s
    3. Creating a new page from a template
      7m 42s
    4. Applying a template to an existing page
      4m 36s
    5. Creating nested templates
      5m 24s
    6. Using repeating regions
      6m 34s
    7. Creating editable and non-editable optional regions
      6m 0s
    8. Using template parameters
      7m 26s
    9. Using template expressions
      9m 59s
    10. Using conditional template expressions
      8m 54s
  8. 54m 40s
    1. Examining XML structure
      2m 44s
    2. Creating an XML document
      9m 9s
    3. Using the CDATA structure
      5m 7s
    4. Creating an XSLT file
      4m 33s
    5. Binding data from an XML to an XSLT document
      5m 6s
    6. Inserting repeating regions into an XSL document
      5m 16s
    7. Creating a client-side XSL transformation
      2m 52s
    8. Styling a remote RSS feed
      7m 29s
    9. Creating a server-side XSL transformation
      5m 31s
    10. Writing XSL expressions
      6m 53s
  9. 1h 2m
    1. Overview of building dynamic websites
      1m 35s
    2. Installing PHP, MySQL, and Apache on Mac
      3m 22s
    3. Installing PHP, MySQL, and Apache on Windows
      3m 54s
    4. Creating a MySQL database
      3m 16s
    5. Defining a testing server and database bindings
      6m 14s
    6. Creating a database recordset
      4m 35s
    7. Adding dynamic content to the page
      5m 14s
    8. Creating repeating regions of dynamic content
      7m 6s
    9. Filtering database records
      7m 39s
    10. Using the Live Preview
      10m 22s
    11. Passing URL parameters
      4m 23s
    12. Dynamically generating links
      5m 18s
  10. 57m 9s
    1. Understanding behaviors
      5m 16s
    2. Installing additional behaviors
      3m 39s
    3. Planning to create a custom behavior
      3m 42s
    4. Examining existing behaviors
      5m 32s
    5. Building a behavior function
      7m 23s
    6. Creating an Action file
      6m 48s
    7. Enabling behavior functions
      9m 1s
    8. Initializing the user interface for a behavior
      3m 9s
    9. Loading behaviors in Dreamweaver
      6m 47s
    10. Testing and debugging behaviors
      5m 52s
  11. 27m 12s
    1. Running reports
      7m 41s
    2. Checking and validating links
      3m 40s
    3. Using cloaking
      5m 42s
    4. Using Check In/Check Out
      4m 3s
    5. Using Design Notes
      6m 6s
  12. 20s
    1. Goodbye
      20s

Start learning today

Get unlimited access to all courses for just $25/month.

Become a member
Sometimes @lynda teaches me how to use a program and sometimes Lynda.com changes my life forever. @JosefShutter
@lynda lynda.com is an absolute life saver when it comes to learning todays software. Definitely recommend it! #higherlearning @Michael_Caraway
@lynda The best thing online! Your database of courses is great! To the mark and very helpful. Thanks! @ru22more
Got to create something yesterday I never thought I could do. #thanks @lynda @Ngventurella
I really do love @lynda as a learning platform. Never stop learning and developing, it’s probably our greatest gift as a species! @soundslikedavid
@lynda just subscribed to lynda.com all I can say its brilliant join now trust me @ButchSamurai
@lynda is an awesome resource. The membership is priceless if you take advantage of it. @diabetic_techie
One of the best decision I made this year. Buy a 1yr subscription to @lynda @cybercaptive
guys lynda.com (@lynda) is the best. So far I’ve learned Java, principles of OO programming, and now learning about MS project @lucasmitchell
Signed back up to @lynda dot com. I’ve missed it!! Proper geeking out right now! #timetolearn #geek @JayGodbold
Share a link to this course

What are exercise files?

Exercise files are the same files the author uses in the course. Save time by downloading the author's files instead of setting up your own files, and learn by following along with the instructor.

Can I take this course without the exercise files?

Yes! If you decide you would like the exercise files later, you can upgrade to a premium account any time.

Become a member Download sample files See plans and pricing

Please wait... please wait ...
Upgrade to get access to exercise files.

Exercise files video

How to use exercise files.

Learn by watching, listening, and doing, Exercise files are the same files the author uses in the course, so you can download them and follow along Premium memberships include access to all exercise files in the library.


Exercise files

Exercise files video

How to use exercise files.

For additional information on downloading and using exercise files, watch our instructional video or read the instructions in the FAQ .

This course includes free exercise files, so you can practice while you watch the course. To access all the exercise files in our library, become a Premium Member.

Join now Already a member? Log in

Are you sure you want to mark all the videos in this course as unwatched?

This will not affect your course history, your reports, or your certificates of completion for this course.


Mark all as unwatched Cancel

Congratulations

You have completed Dreamweaver CS3 Beyond the Basics.

Return to your organization's learning portal to continue training, or close this page.


OK
Become a member to add this course to a playlist

Join today and get unlimited access to the entire library of video courses—and create as many playlists as you like.

Get started

Already a member ?

Become a member to like this course.

Join today and get unlimited access to the entire library of video courses.

Get started

Already a member?

Exercise files

Learn by watching, listening, and doing! Exercise files are the same files the author uses in the course, so you can download them and follow along. Exercise files are available with all Premium memberships. Learn more

Get started

Already a Premium member?

Exercise files video

How to use exercise files.

Ask a question

Thanks for contacting us.
You’ll hear from our Customer Service team within 24 hours.

Please enter the text shown below:

The classic layout automatically defaults to the latest Flash Player.

To choose a different player, hold the cursor over your name at the top right of any lynda.com page and choose Site preferences from the dropdown menu.

Continue to classic layout Stay on new layout
Exercise files

Access exercise files from a button right under the course name.

Mark videos as unwatched

Remove icons showing you already watched videos if you want to start over.

Control your viewing experience

Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.

Interactive transcripts

Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.

Are you sure you want to delete this note?

No

Your file was successfully uploaded.

Thanks for signing up.

We’ll send you a confirmation email shortly.


Sign up and receive emails about lynda.com and our online training library:

Here’s our privacy policy with more details about how we handle your information.

Keep up with news, tips, and latest courses with emails from lynda.com.

Sign up and receive emails about lynda.com and our online training library:

Here’s our privacy policy with more details about how we handle your information.

   
submit Lightbox submit clicked
Terms and conditions of use

We've updated our terms and conditions (now called terms of service).Go
Review and accept our updated terms of service.