Monday, 24 April 2017

Five Freelance Client Red Flags

I've often mentioned that doing side-projects is a nifty way to hone your craft and earn some extra cash. Many web developers I've worked with, do it in some form or other. Through this, we also gain valuable experience; in particular, what kind of clients to avoid.

You see, there are some clients, whom, shall we say, aren't exactly ideal for your bank balance and sanity. Freelancers sometimes don't get much respect. These clients tend to forget that freelance does not equal less professional. In fact, a fair number of those doing freelance projects, like myself, hold a day job in the web industry. Also, and I may be speaking the obvious when I say this, some clients are just cheap. And clueless. Sometimes on an epic scale.

Here are some things to watch out for when speaking to a prospective client, red flags that should send your Spider-sense a-tingling and warn you to stay the hell away.

1. Denigration tactics

Some clients are openly dismissive of your value to the project. Coding isn't that hard, they claim, your price shouldn't be that high. I can hire foreigners to do it at half what you're quoting me. Yadda, yadda. And if you have the temerity to suggest that, since coding is so damn easy, they could do it themselves and not pay anyone to do it at all, they'll invariably claim that their time is better spent elsewhere.

So easy a baby could do it?

They are partially correct. To the seasoned professional, coding isn't that hard. But since when has the difficulty of a task determined its monetary value? I daresay the average roadsweeper sweats a great deal more than the average CEO sitting in a comfy air-conditioned room signing checks. Who gets paid more?

Such clients are not only cheap, they are insulting. Avoid. Better yet, burn the fucking bridge and don't look back. Once the prospective client starts asking me to justify my price, my typical response is to flatly refuse to do so, and wish them luck in finding someone who will do it at a price they deem reasonable.


2. The Equity Monster

There are the clients who try to offer you equity in place of cold hard cash. I'm not going to even attempt to sugar-coat this - ideas are worth nothing. Ideas implemented well are worth something. And until that idea is implemented, even if it is staggeringly original or groundbreaking, it is worth precisely that - nothing. It's easy to promise you a percentage of nothing. 10% equity of what amounts to so much hot air, is still pretty much jackshit.

Do the math. Still zero!

Sure, there could be ideas that hold so much potential that you think it's worth the risk of doing a whole lot of work for the mere promise of greater fortunes down the road. I've been in that position. But you are a web developer, not a businessman. This isn't your area of expertise. Know your limits.

Also, if the client is so damn sure his idea will be such a humongous cash cow, why would he be so hasty to offer you equity instead of money? Money's cheaper in the long run, right?

3. Exposure Dollars

Stop me if you've heard this one - actually, I'm just going to say it anyway. You may have come across this breed of client, a close cousin to the first point, who thinks you should be grateful to be doing this for him. It's a great opportunity to gain exposure and add to your portfolio, he says.

How's this for exposure, jackass?

This mofo would be right - if his brand is so well-known and so visible that working for him would instantly catapult you to the top echelons of the web industry. Chances are, he's been buying too hard into his own press. If the brand was so ironclad, he wouldn't be depending on freelancers to do this for free, would he? How would it look?

Again, hot air. Not just cheap, but condescending to boot. Avoid like the plague. The Oatmeal has a great comic about this. I've got nothing against people who can't pay. What I can't stand is people who can't pay and still want to yaya papaya.

4. As-and-when

And then there's the dude who does not seem to understand what software development entails. He'll agree on a fixed price for a vague concept of the final product, but doesn't want to give you all the requirements right away. Just get working first, I'll let you know if I think of anything else, he tells you. He doesn't realize that changes can and should come with additional charges.

Oops, I forgot to tell
you the last time...

Trust me, in most cases, you'll want to steer clear of this disaster waiting to happen. Every presentation, there'll be a couple more details which he just oh-so-conveniently forgot to mention the last time, some of which incorporating would mean redoing a sizeable chunk of whatever work you've done so far. Working for this guy will be a lifelong affair because the project will never be finished. A client like this could be deliberately pushing his luck, in which case you should avoid taking up the job. Or he could be genuinely unaware of the necessity of giving you all relevant details right from the start, in which case you definitely should avoid taking up the job.

Either insist on a deposit and make it clear that any changes requested not mentioned in the initial product specification will cost him, or just save yourself the trouble and dump this client pronto. Software development is a serious business. Unless you're getting paid for the changes you have to implement, this is a no-win situation.

5. Refusal to commit

You know the type - you name your price and he balks. You ask for a deposit and he tries to wriggle his way out of it. This may be genuinely not within his budget. Perhaps he's got his teenage nephew working on design, his wife doing the marketing, and so on. And no, not having money is not a crime.

Can't pay.

But honestly, if you're not confident enough in your business model to commit money to getting your ideas implemented right, maybe your business model just isn't as solid as you'd undoubtedly like to believe. A couple thousand dollars for code - if your idea is so damn awesome, wouldn't you earn it back in no time at all?

When a client displays such a lack of confidence, it goes without saying that you, too, should have your reservations.

Your Mileage May Vary

Sometimes these clients are your best mates, or people whose goodwill you value. If so, educate them. Friends don't let friends become the kind of clueless douchebags mentioned above.

But if that's not the case, these are clients you don't want to have. These are the clients you need to watch out for if you ever take the freelance route.

Be free of such freelance jobs!
T___T

Wednesday, 19 April 2017

The Fine Art of Leaving (Part 3/3)

So you've tendered your resignation and your last day draws near. The deed is done. What next?

Clean-up

Well, this depends on whether you actually have a notice period to fulfill. And even if not, a lot of this still applies. This part is called the Clean-up because this is traditionally where most people delete their browser histories in the office and incriminating emails from their inboxes. Though, in all honesty, this should be done on a regular basis, not just when you're about to leave.

Handing over

Any clients you may be facing will need to know that you are leaving, and who to contact in your permanent absence. If you're permitted to draft an auto-reply in your email, do it. Even so, try to make a personal effort to inform these clients that they will no longer be having the pleasure of your assistance. Some of them may try to wrangle freelance work out of you; if so, check if it's something that conflicts with the company's interest. True, you don't owe them shit. But it's still bad form.


Hand over like a pro.

There's also doing whatever you can to ensure that those taking over your duties have an easier time of it. Keep yourself available to assist even after leaving. Provide documentation for your work so others can take over it.

Farewell Message

The last day is here. You'll want to say your goodbyes, and if you're popular, people will want to seek you out to say their goodbyes.

Saying bye.

This could come in the form of a company-wide email. Sure, go ahead. But please, stay classy. No one wants to hear, or be involved in the beef you have with Management. No one wants to know what you hate about the company that you'll be leaving by the end of the day. It's probably tempting to get witty and throw out some snarky comments on the way out. Frustration will to that to you.

Sorry, you're an adult and a professional (there's that word again). That kind of behavior doesn't cut it. You're leaving them to their misery and heading for greener pastures. You've won; no need to rub it in. Be gracious. Be a good winner.

Some will want to write a long, drawn-out email thanking everybody one by one. My personal style is to leave a box of cookies in the pantry, write two lines informing the company that it's my last day, and then fuck right off. Your mileage may vary.

Don't dwell on trivialities

There will be inevitable discrepancies between what you think you are owed, and what the company thinks you are owed. Sometimes it's just a misunderstanding or a failure to read the terms of your contract carefully. Sometimes the company really is out to screw you. You can argue, haggle, cry up a storm... and maybe you'll win. Maybe the company will pay you the extra few days you were owed before you tendered your resignation. Maybe you'll be allowed to process the claims you made before tendering your resignation. And then you'll get what is quaintly known as a "moral victory".

To what end?


Don't be petty.

You're leaving. It's just a few hundred dollars, maybe a thousand. Give it to them. If it's all that important to them, let them have it. And let them know that you're letting them have it. Come on, considering all the time and energy they undoubtedly sucked out of you over the years, a bit of money is nothing. The refusal to lose out even in small matters does you no good.

I wouldn't preach it if I haven't done it myself. Sometimes, HR is gonna be like "oh, we need to take away a few days' pay because at this point, you're no longer entitled to Paid Leave" even though it was a retrenchment and I was put on gardening leave after I applied for annual leave. And my response was basically, "You know what? This doesn't make sense to me, but whatever, take it." The message was, "Geez, if you're that hard up...".

Make friends

Finally, you can add your ex-colleagues on Facebook! What, you already have them on Facebook? Fool. Don't ever do that again.

You can be buddies now!

But seriously, ex-colleagues are some of the best additions to your network. No professional survives in a vacuum. At the very least, add them to your LinkedIn account. Unless they're useless wastes of space. Then don't.

There may be some ex-colleagues whom you really get along famously with and want to befriend. Well, now you can, and should. No more conflict of interest!

That's it, we're done!

Preparation, Follow-through, Clean-up. There's an art to leaving. Believe that. Because, like it or not, the company you are leaving will be part of your employment history. Exit like a pro.

Just gonna leave this here,
T___T

Sunday, 16 April 2017

The Fine Art of Leaving (Part 2/3)

Now that you've made up your mind, done your homework and everything is in place for your exit, it's time to put your money where your mouth is. It's time to follow through on that resolve.

Follow-through

This entails the actual act of tendering your resignation. The standard way of tendering one's resignation is to draft a letter of resignation for the record, sign it, date it, and hand it to your immediate superior. In fact, as far as I know, that is the only way. But, trust me on this, there are multiple ways to royally fuck up that deceptively simple enterprise.

During this very delicate operation, any slip-ups on your part can derail what would have been a painless and beautiful exit. Don't fuck it up. Nobody likes messy. Everyone likes it clean.

Remember that as far as employment termination goes, companies generally prefer to be the ones doing the terminating - either via firing, "requesting" that you resign, or making life so unpleasant that your position becomes untenable. Because that puts them in control, and that means they are prepared with a replacement and prepared to go on without you. Having you do the terminating is a spanner in the works because now they're the ones having to adjust to your impending and unexpected absence. This is just business; there's nothing evil or wicked about it.

Keeping that secret

This may sound like common sense, but you need to keep your intentions secret. Or, at least, tell them to someone who isn't in a position to rat on you. Because once management learns of your intentions before you even get a chance to resign, this gets messy really quickly.

Psst...

It's one thing to be on friendly terms with your colleagues. It's quite another to treat them like your best pals and entrust them with your plans to quit.

I've made that very elementary mistake before. Get this - I told my Tech Lead I was considering an offer from another company. Next day, I was hauled in for a talk by the Director, and told to resign with immediate effect. I got unfriended on Facebook by the owner of the company (boo fucking hoo), and relations remained strained for a long time afterword.

Was the Tech Lead to blame? No, this was my fault. I was so buddy-buddy with him that I forgot that he wasn't actually my friend, and that someone in his position was obliged to inform Management of my intentions.

Your colleagues are not your friends. Even if they are, putting them in a position where they have to choose between their professional duty to the company and their personal loyalty to you, is just poor form.

Resignation Letter

I probably shouldn't have to teach anyone how to write a resignation letter, but what the hell. These are the essentials...

Typing that letter.

Name and IC: An identifier to ensure that the person expressing his intention to resign, is unambiguously you.

Date With Effect From: As a gesture of goodwill, you can even peg this to the following day. But this day is important because it determines when your notice period begins and when your employment contract with the company officially expires.

Signature: Kind of a moot point in a paper-less environment, but put it there anyway.

Hand-over: Anything the company requires you to return? Office keys? Privilege cards? Write down the serial numbers (if applicable) and include the items in your letter.

The above are the must-haves. Anything else, including well wishes, are extraneous. Include them if you must, but try to avoid getting fancy. It's a resignation letter, not a goddamn essay. You have nothing to prove.

But, if you really want to sound like a pro, there are plenty of resources on the internet. I really wish I didn't have to spell all this out, but I have actually encountered Technical Directors in MNCs who couldn't draft a resignation letter worth a damn. Go figure.

Stick with your decision

Once you have tendered your resignation, there may be events that will tempt you to consider. Stay the course. You've tendered your resignation; for better or ill, there is no going back.

Nope.
Back in 2011, I accepted an offer from another company with better pay and benefits, and tendered my resignation. My soon-to-be-former boss offered me the same if I were to stay on. I declined. Why? I liked the job; it was simply that the pay sucked. Why wouldn't I take that counteroffer? The reasons were twofold. Firstly, it was too little, too late. If he had actually valued me that much, he should have given me that pay from the start. Secondly, the damage was done. Even if I somehow stayed on, he would remember me as the guy who almost left for greener pastures. There would be a certain amount of lingering resentment. The level of trust was gone. Our working relationship would no longer be healthy.

In 2014, I tendered my resignation at another company. One of the managers advised me that the CEO had declared bonus time to be a month after my resignation, and I would be missing out if I left now, because the CEO had also declared that any personnel leaving around this time would not be eligible for the bonus. Honestly, the CEO was a cheap bastard. I had expected that from the start. Staying on for another month just to get the bonus (which was likely to be miserable anyway) just seemed really stupid. I already had another job lined up. Why should I give that up?

That is why, in the previous part to this blogpost, I emphasized the need to prepare, and the need to avoid resigning on the spur of the moment. Once you've tendered, that's it. No takebacks.

Perform your duties

Oh, you plan to slack off? Why? Because you're no longer going to be working here? Buddy, you're still getting paid. You will do your best, not because you have anything left to prove, nor because you owe them shit; but because you are a goddamn professional and you need to act like it.

Don't slack off, pal.
Few things leave a worse (and justifiably so) impression than someone who leaves a ton of shit behind for his soon-to-be ex-colleagues to clear. I get it - everybody gets it - you're in what those in the SAF traditionally refer to as the "ORD Mood", where you find that you no longer have any fucks to give. It's natural to ease up. Nobody is saying you still need to be giving 110% at the job. But try your darnedest to avoid totally goofing off. It's a dangerous habit. If anything, try to keep yourself as sharp as possible, and in the right frame of mind to tackle your next job.

Next

The Clean-up

Thursday, 13 April 2017

The Fine Art of Leaving (Part 1/3)

Most of us have thought about leaving our jobs at one point or other. And if you haven't, I have cause to either intensely envy (or profoundly pity) you. And having left quite a number of jobs myself, I think it's safe to say that leaving a job requires a certain amount of finesse. And courage. And above all, strategy.

What's that, you say - leaving a job is merely a matter of typing up a resignation letter?

That's a gross oversimplification. And honestly, if you consider yourself a professional, you might want to at least entertain the possibility that leaving a job is a little more complex than that. I've made certain mistakes while making my exit. We all have.

The Fine Art of Leaving can be condensed into three parts: Preparation, Follow-through, Clean-up.

Preparation

This sounds like a no-brainer, but many people don't. Prepare, that is. Not adequately, anyway. No, they suck it up till they can't suck it up any more, and then they resign in a glorious explosion of pent-up frustration. They don't secure new jobs before leaving, they don't scope out new opportunities. They don't prepare.

And that's what I'm going to talk about in the first part - planning. Remember, you don't want to do anything you might regret later. And the most obvious way for that, is to prepare.

Prepare well in advance. In fact, I would go so far as to say that you should begin preparing your exit the very first day you step into any company.

Now, just for the record, I am not advocating that you should enter the company intending to leave, which is just a waste of everybody's time; rather, you should enter the company prepared to leave. You should accept the reality that no working relationship lasts forever, and it is better to be prepared in the event of it ending, than not.

Nurturing that resolve

The process of leaving a job begins from a moment of resolve.

Avoid resigning out of a moment of frustration. That's usually a really bad idea. People rarely make good decisions in a moment of angst-driven haste. Instead, take that unhappiness and nurture it while doing your job the best you can. As the days pass, allow it to simmer till it coalesces into cold, hard determination. In the meantime, prepare. Ideally, by the time you're fed up to here with all that crap, you're financially, professionally and emotionally ready to leave.

Blowing up is not cool.

Back in 2013, I was working in a publications firm and at some point, I found myself at odds with the CEO. I was under the impression that he wasn't altogether happy about my presence, but lacked a plausible excuse to get rid of me. He hired a younger (and prettier) developer and promoted her as my Manager. The message seemed to be: You're old and decrepit. Leave. I left in April 2014, one month after she was promoted, and this led some of my ex-colleagues to speculate that I'd finally had enough. They, of course, didn't know that I'd already had enough half a year before that. My preparation to leave had started as early as November 2013.

Fast forward to 2015. I was working for a company dealing in education software. The management was constantly on the lookout to cut costs, and eventually this came in the form of a company-wide wage cut. You bet your ass I was unhappy. Some of my colleagues quit on the spot. Countless friends urged me to follow, but His Teochewness is not a man driven by impulse. Sure, I was going to leave. But again, only on my own terms.

I can't stress this enough - tendering your resignation due to a moment of frustration may look as cool and dramatic as it does in the movies. It is also the mark of a complete amateur. Yes, you're human and you have feelings. Master those feelings.

Build yourself up

Do not take it for granted that you can simply take the skillset you came into the company with, and walk into another company. Sure, you could accomplish that. You could even wrangle a higher salary. But ultimately, all that is unsustainable unless you have something to show for the time you spent in this company. Pick up new skills. Build stuff. Hone your craft. Make sure you're leaving this company a more accomplished developer than when you came in.

Work on those skills.

I've detailed the time I spent in desktop support back in the early 2000s. In 2007, the process of leaving took me a year - a year to obtain an additional Diploma which I used to restart my career, this time in web development.

In 2013, leaving the publications firm took several months - some of which I used to up my front-end game, skills I used to obtain my next job.

In 2015, I was working on this blog, and on my site at www.teochewthunder.com. I built up my GitHub profile, putting in tons of research and work after office hours so that I would have something to show to prospective employers. You'll notice this blog was set up in 2014. Yep, I was preparing even then.

Opportunities

It's mostly common sense that it would be better to already have a job lined up before you quit your current one. But even if you don't intend to quit, you should always be looking out for those opportunities.

Keep a look out.

Firstly, you're a professional and it is your professional duty to have a finger on the pulse of your industry and understand what your industry requires. Compare those requirements to what you have, and build your skillset accordingly. People will want to push your asking price down by denigrating your skillset. Expect that. Don't let them.

Secondly, exploring these opportunities can only be a good thing. Attend interviews. Get used to strutting your stuff presenting yourself. Know what to expect. Know the mind games interviewers play.

By the time you actually do want to leave, you know where you stand.

Money

Being unemployed (or even transitioning between jobs) for any amount of time requires resources. And by that, I mean money.

I like to maintain what I call a Fuck You Fund. Crudely speaking, it is a certain amount of disposable income that will enable you to survive for some time without a job, that will give you the confidence to tell your employer "fuck you, I quit" when you deem it necessary. Not that I recommend that course of action. Firstly, quitting in a moment of angst, as mentioned earlier, is not the mark of a seasoned pro. Secondly, even if you must quit, hurling vulgarities and insults on your way out is, well, childish.

Keep your disposable
income healthy.

But, in principle, that is the purpose of the Fuck You Fund. Classically, that amount is 6 months of your monthly expenditure. Some would recommend 12 months... but buddy, if it takes you that long to secure a job, money is the least of your problems.

So yes, put money aside. Monitor your monthly expenditure and ensure that your Fuck You Fund is healthy.

If you're going to spend every cent you make, it'll make leaving your job that much harder. In essence, you'll become your employer's bitch. Don't.

Next

The Follow-through

Sunday, 9 April 2017

Web Tutorial: Easter Parallax Site

Howdy, folks. Easter's a-coming, so get ready for the traditional TeochewThunder Easter web tutorial!

Today's web tutorial will be center around creating a Parallax website. We'll use text content from http://www.wikipedia.org to populate placeholders.

What is a Parallax website?

In very simple terms, a Parallax website is a site whose background changes as you scroll through it, providing a multi-dimensional effect. We did something akin to this last Christmas!

Let's get started...

First, we get the basic HTML up. It'll consist of three main div blocks, each with a nested div containing text content.
<!DOCTYPE html>
<html>
    <head>
        <title>Easter 2017</title>
    </head>

    <body>
        <div>
            <div>
                <h1>Easter</h1>
                          <p>
                    Easter, also called Pascha (Greek/Latin) or Resurrection Sunday, is a festival and holiday celebrating the resurrection of Jesus from the dead, described in the New Testament as having occurred on the third day of his burial after his crucifixion by the Romans at Calvary c. 30 AD. It is the culmination of the Passion of Jesus, preceded by Lent (or Great Lent), a forty-day period of fasting, prayer, and penance.
                          </p>

                          <p>
                    Most Christians refer to the week before Easter as "Holy Week" - it contains the days of the Easter Triduum, including Maundy Thursday, commemorating the Maundy and Last Supper, as well as Good Friday, commemorating the crucifixion and death of Jesus. In Western Christianity, Eastertide, or the Easter Season, begins on Easter Sunday and lasts seven weeks, ending with the coming of the fiftieth day, Pentecost Sunday. In Eastern Christianity, the season of Pascha begins on Pascha and ends with the coming of the fortieth day, the Feast of the Ascension.
                          </p>

                          <p>
                    Easter and the holidays that are related to it are moveable feasts which do not fall on a fixed date in the Gregorian or Julian calendars which follow only the cycle of the sun; rather, its date is determined on a lunisolar calendar similar to the Hebrew calendar. The First Council of Nicaea (325) established two rules, independence of the Jewish calendar and worldwide uniformity, which were the only rules for Easter explicitly laid down by the council. No details for the computation were specified; these were worked out in practice, a process that took centuries and generated a number of controversies. It has come to be the first Sunday after the ecclesiastical full moon that occurs on or soonest after 21 March, but calculations vary.
                          </p>
            </div>
        </div>

        <div>
            <div>
                <h1>Easter Eggs</h1>
                        <p>
                    The practice of decorating eggshells as part of spring rituals is ancient, with decorated, engraved ostrich eggs found in Africa which are 60,000 years old. In the pre-dynastic period of Egypt and the early cultures of Mesopotamia and Crete, eggs were associated with death and rebirth, as well as with kingship, with decorated ostrich eggs, and representations of ostrich eggs in gold and silver, were commonly placed in graves of the ancient Sumerians and Egyptians as early as 5,000 years ago. These cultural relationships may have influenced early Christian and Islamic cultures in those areas, as well as through mercantile, religious, and political links from those areas around the Mediterranean.
                        </p>

                        <p>
                    The Christian custom of Easter eggs, specifically, started among the early Christians of Mesopotamia, who stained eggs with red colouring "in memory of the blood of Christ, shed at His crucifixion". The Christian Church officially adopted the custom, regarding the eggs as a symbol of the resurrection of Jesus, with the Roman Ritual, the first edition of which was published in 1610 but which has texts of much older date, containing among the Easter Blessings of Food, one for eggs, along with those for lamb, bread, and new produce. The blessing is for consumption as a food, rather than decorated.
                        </p>

                        <p>
                    Sociology professor Kenneth Thompson discusses the spread of the Easter egg throughout Christendom, writing that "use of eggs at Easter seems to have come from Persia into the Greek Christian Churches of Mesopotamia, thence to Russia and Siberia through the medium of Orthodox Christianity. From the Greek Church the custom was adopted by either the Roman Catholics or the Protestants and then spread through Europe." Both Thompson, as well as British orientalist Thomas Hyde state that in addition to dying the eggs red, the early Christians of Mesopotamia also stained Easter eggs green and yellow.
                        </p>
            </div>
        </div>

        <div>
            <div>
                <p>
                    T___T wishes all readers a happy and promise-filled Easter!
                </p>
            </div>
        </div>
    </body>
</html>


This is what you should have now - a very bare-bones layout.


Let's start styling. Make the following changes. The content CSS class styles the div to have ample spacing at the top and bottom. We then set all divs within elements styled using content, to have a width of 80% of its parent and positioned in the center.
<html>
    <head>
        <title>Easter 2017</title>

        <style>
            .content
            {
                z-index:10;
                padding-top:2em;
                padding-bottom:2em;
            }

            .content div
            {
                width:80%;
                margin:0 auto 0 auto;
            }
        </style>
    </head>

    <body>
        <div class="content">
            <div>
                <h1>Easter</h1>
                          <p>
                    Easter, also called Pascha (Greek/Latin) or Resurrection Sunday, is a festival and holiday celebrating the resurrection of Jesus from the dead, described in the New Testament as having occurred on the third day of his burial after his crucifixion by the Romans at Calvary c. 30 AD. It is the culmination of the Passion of Jesus, preceded by Lent (or Great Lent), a forty-day period of fasting, prayer, and penance.
                          </p>

                          <p>
                    Most Christians refer to the week before Easter as "Holy Week" - it contains the days of the Easter Triduum, including Maundy Thursday, commemorating the Maundy and Last Supper, as well as Good Friday, commemorating the crucifixion and death of Jesus. In Western Christianity, Eastertide, or the Easter Season, begins on Easter Sunday and lasts seven weeks, ending with the coming of the fiftieth day, Pentecost Sunday. In Eastern Christianity, the season of Pascha begins on Pascha and ends with the coming of the fortieth day, the Feast of the Ascension.
                          </p>

                          <p>
                    Easter and the holidays that are related to it are moveable feasts which do not fall on a fixed date in the Gregorian or Julian calendars which follow only the cycle of the sun; rather, its date is determined on a lunisolar calendar similar to the Hebrew calendar. The First Council of Nicaea (325) established two rules, independence of the Jewish calendar and worldwide uniformity, which were the only rules for Easter explicitly laid down by the council. No details for the computation were specified; these were worked out in practice, a process that took centuries and generated a number of controversies. It has come to be the first Sunday after the ecclesiastical full moon that occurs on or soonest after 21 March, but calculations vary.
                          </p>
            </div>
        </div>

        <div class="content">
            <div>
                <h1>Easter Eggs</h1>
                        <p>
                    The practice of decorating eggshells as part of spring rituals is ancient, with decorated, engraved ostrich eggs found in Africa which are 60,000 years old. In the pre-dynastic period of Egypt and the early cultures of Mesopotamia and Crete, eggs were associated with death and rebirth, as well as with kingship, with decorated ostrich eggs, and representations of ostrich eggs in gold and silver, were commonly placed in graves of the ancient Sumerians and Egyptians as early as 5,000 years ago. These cultural relationships may have influenced early Christian and Islamic cultures in those areas, as well as through mercantile, religious, and political links from those areas around the Mediterranean.
                        </p>

                        <p>
                    The Christian custom of Easter eggs, specifically, started among the early Christians of Mesopotamia, who stained eggs with red colouring "in memory of the blood of Christ, shed at His crucifixion". The Christian Church officially adopted the custom, regarding the eggs as a symbol of the resurrection of Jesus, with the Roman Ritual, the first edition of which was published in 1610 but which has texts of much older date, containing among the Easter Blessings of Food, one for eggs, along with those for lamb, bread, and new produce. The blessing is for consumption as a food, rather than decorated.
                        </p>

                        <p>
                    Sociology professor Kenneth Thompson discusses the spread of the Easter egg throughout Christendom, writing that "use of eggs at Easter seems to have come from Persia into the Greek Christian Churches of Mesopotamia, thence to Russia and Siberia through the medium of Orthodox Christianity. From the Greek Church the custom was adopted by either the Roman Catholics or the Protestants and then spread through Europe." Both Thompson, as well as British orientalist Thomas Hyde state that in addition to dying the eggs red, the early Christians of Mesopotamia also stained Easter eggs green and yellow.
                        </p>
            </div>
        </div>

        <div class="content">
            <div>
                <p>
                    T___T wishes all readers a happy and promise-filled Easter!
                </p>
            </div>
        </div>
    </body>
</html>


Looking better already.


So next, we'll add some graphics. For this example, we'll use the following two Easter-y images.

The first two divs are given ids - home and eastereggs. Then we add styling to give them background images, and set their heights and widths to 100%.
<html>
    <head>
        <title>Easter 2017</title>

        <style>
            .content
            {
                z-index:10;
                padding-top:2em;
                padding-bottom:2em;
            }

            .content div
            {
                width:80%;
                margin:0 auto 0 auto;
            }

            #home
            {
                background:url(bg_rainbow.jpg) no-repeat center center;
                height:100%;
                width:100%;
                background-size:cover;
            }

            #eastereggs
            {
                background:url(bg_eggs.jpg) no-repeat center center;
                height:100%;
                width:100%;
                background-size:cover;
            }
        </style>
    </head>

    <body>
        <div class="content" id="home">
            <div>
                <h1>Easter</h1>
                          <p>
                    Easter, also called Pascha (Greek/Latin) or Resurrection Sunday, is a festival and holiday celebrating the resurrection of Jesus from the dead, described in the New Testament as having occurred on the third day of his burial after his crucifixion by the Romans at Calvary c. 30 AD. It is the culmination of the Passion of Jesus, preceded by Lent (or Great Lent), a forty-day period of fasting, prayer, and penance.
                          </p>

                          <p>
                    Most Christians refer to the week before Easter as "Holy Week" - it contains the days of the Easter Triduum, including Maundy Thursday, commemorating the Maundy and Last Supper, as well as Good Friday, commemorating the crucifixion and death of Jesus. In Western Christianity, Eastertide, or the Easter Season, begins on Easter Sunday and lasts seven weeks, ending with the coming of the fiftieth day, Pentecost Sunday. In Eastern Christianity, the season of Pascha begins on Pascha and ends with the coming of the fortieth day, the Feast of the Ascension.
                          </p>

                          <p>
                    Easter and the holidays that are related to it are moveable feasts which do not fall on a fixed date in the Gregorian or Julian calendars which follow only the cycle of the sun; rather, its date is determined on a lunisolar calendar similar to the Hebrew calendar. The First Council of Nicaea (325) established two rules, independence of the Jewish calendar and worldwide uniformity, which were the only rules for Easter explicitly laid down by the council. No details for the computation were specified; these were worked out in practice, a process that took centuries and generated a number of controversies. It has come to be the first Sunday after the ecclesiastical full moon that occurs on or soonest after 21 March, but calculations vary.
                          </p>
            </div>
        </div>

        <div class="content" id="eastereggs">
            <div>
                <h1>Easter Eggs</h1>
                        <p>
                    The practice of decorating eggshells as part of spring rituals is ancient, with decorated, engraved ostrich eggs found in Africa which are 60,000 years old. In the pre-dynastic period of Egypt and the early cultures of Mesopotamia and Crete, eggs were associated with death and rebirth, as well as with kingship, with decorated ostrich eggs, and representations of ostrich eggs in gold and silver, were commonly placed in graves of the ancient Sumerians and Egyptians as early as 5,000 years ago. These cultural relationships may have influenced early Christian and Islamic cultures in those areas, as well as through mercantile, religious, and political links from those areas around the Mediterranean.
                        </p>

                        <p>
                    The Christian custom of Easter eggs, specifically, started among the early Christians of Mesopotamia, who stained eggs with red colouring "in memory of the blood of Christ, shed at His crucifixion". The Christian Church officially adopted the custom, regarding the eggs as a symbol of the resurrection of Jesus, with the Roman Ritual, the first edition of which was published in 1610 but which has texts of much older date, containing among the Easter Blessings of Food, one for eggs, along with those for lamb, bread, and new produce. The blessing is for consumption as a food, rather than decorated.
                        </p>

                        <p>
                    Sociology professor Kenneth Thompson discusses the spread of the Easter egg throughout Christendom, writing that "use of eggs at Easter seems to have come from Persia into the Greek Christian Churches of Mesopotamia, thence to Russia and Siberia through the medium of Orthodox Christianity. From the Greek Church the custom was adopted by either the Roman Catholics or the Protestants and then spread through Europe." Both Thompson, as well as British orientalist Thomas Hyde state that in addition to dying the eggs red, the early Christians of Mesopotamia also stained Easter eggs green and yellow.
                        </p>
            </div>
        </div>

        <div class="content">
            <div>
                <p>
                    T___T wishes all readers a happy and promise-filled Easter!
                </p>
            </div>
        </div>
    </body>
</html>


Still a little (OK, a lot) ugly at this point. Let's remove the top margins.


Add this to the CSS. This ensures that the html and body tags don't have any extra spaces at the tops and sides. At the same time, we'll just set the default font to Verdana and the default background color to a lovely yellow.
            html,body
            {
                margin:0;
                padding:0;
            }

            body
            {
                background-color:#FFFF00;
                font-family:verdana;
            }

            .content
            {
                z-index:10;
                padding-top:2em;
                padding-bottom:2em;
            }


Now we're getting somewhere.


See how the footer changes color? That's because we never specified a background for it.


You'll notice that the text content clashes with the pictorial backgrounds. Let's fix that. We set the nested divs in the divs with pictorial backgrounds, to the class of highlighted. Then we create a CSS class highlighted, to have round borders and a translucent white background. And a bit of padding.
<html>
    <head>
        <title>Easter 2017</title>

        <style>
            html,body
            {
                margin:0;
                padding:0;
            }

            body
            {
                background-color:#FFFF00;
                font-family:verdana;
            }

            .content
            {
                z-index:10;
                padding-top:2em;
                padding-bottom:2em;
            }

            .content div
            {
                width:80%;
                margin:0 auto 0 auto;
            }

            .highlighted
            {
                border-radius:1em;
                padding:2em;
                background-color:rgba(200,200,200,0.8);
            }

            #home
            {
                background:url(bg_rainbow.jpg) no-repeat center center;
                height:100%;
                width:100%;
                background-size:cover;
            }

            #traditions
            {
                background:url(bg_eggs.jpg) no-repeat center center;
                height:100%;
                width:100%;
                background-size:cover;
            }
        </style>
    </head>

    <body>
        <div class="content" id="home">
            <div class="highlighted">
                <h1>Easter</h1>
                          <p>
                    Easter, also called Pascha (Greek/Latin) or Resurrection Sunday, is a festival and holiday celebrating the resurrection of Jesus from the dead, described in the New Testament as having occurred on the third day of his burial after his crucifixion by the Romans at Calvary c. 30 AD. It is the culmination of the Passion of Jesus, preceded by Lent (or Great Lent), a forty-day period of fasting, prayer, and penance.
                          </p>

                          <p>
                    Most Christians refer to the week before Easter as "Holy Week" - it contains the days of the Easter Triduum, including Maundy Thursday, commemorating the Maundy and Last Supper, as well as Good Friday, commemorating the crucifixion and death of Jesus. In Western Christianity, Eastertide, or the Easter Season, begins on Easter Sunday and lasts seven weeks, ending with the coming of the fiftieth day, Pentecost Sunday. In Eastern Christianity, the season of Pascha begins on Pascha and ends with the coming of the fortieth day, the Feast of the Ascension.
                          </p>

                          <p>
                    Easter and the holidays that are related to it are moveable feasts which do not fall on a fixed date in the Gregorian or Julian calendars which follow only the cycle of the sun; rather, its date is determined on a lunisolar calendar similar to the Hebrew calendar. The First Council of Nicaea (325) established two rules, independence of the Jewish calendar and worldwide uniformity, which were the only rules for Easter explicitly laid down by the council. No details for the computation were specified; these were worked out in practice, a process that took centuries and generated a number of controversies. It has come to be the first Sunday after the ecclesiastical full moon that occurs on or soonest after 21 March, but calculations vary.
                          </p>
            </div>
        </div>

        <div class="content" id="eastereggs">
            <div class="highlighted">
                <h1>Easter Eggs</h1>
                        <p>
                    The practice of decorating eggshells as part of spring rituals is ancient, with decorated, engraved ostrich eggs found in Africa which are 60,000 years old. In the pre-dynastic period of Egypt and the early cultures of Mesopotamia and Crete, eggs were associated with death and rebirth, as well as with kingship, with decorated ostrich eggs, and representations of ostrich eggs in gold and silver, were commonly placed in graves of the ancient Sumerians and Egyptians as early as 5,000 years ago. These cultural relationships may have influenced early Christian and Islamic cultures in those areas, as well as through mercantile, religious, and political links from those areas around the Mediterranean.
                        </p>

                        <p>
                    The Christian custom of Easter eggs, specifically, started among the early Christians of Mesopotamia, who stained eggs with red colouring "in memory of the blood of Christ, shed at His crucifixion". The Christian Church officially adopted the custom, regarding the eggs as a symbol of the resurrection of Jesus, with the Roman Ritual, the first edition of which was published in 1610 but which has texts of much older date, containing among the Easter Blessings of Food, one for eggs, along with those for lamb, bread, and new produce. The blessing is for consumption as a food, rather than decorated.
                        </p>

                        <p>
                    Sociology professor Kenneth Thompson discusses the spread of the Easter egg throughout Christendom, writing that "use of eggs at Easter seems to have come from Persia into the Greek Christian Churches of Mesopotamia, thence to Russia and Siberia through the medium of Orthodox Christianity. From the Greek Church the custom was adopted by either the Roman Catholics or the Protestants and then spread through Europe." Both Thompson, as well as British orientalist Thomas Hyde state that in addition to dying the eggs red, the early Christians of Mesopotamia also stained Easter eggs green and yellow.
                        </p>
            </div>
        </div>

        <div class="content">
            <div>
                <p>
                    T___T wishes all readers a happy and promise-filled Easter!
                </p>
            </div>
        </div>
    </body>
</html>


Better. Way better.


Now you'll realize by now we haven't started making this site Parallax yet. The background scrolls as per normal and it's a bit boring. Change your CSS slightly. Rerun the code. See the difference?
            html,body
            {
                height:100%;
                width:100%;
                margin:0;
                padding:0;
            }

            body
            {
                background-color:#FFFF00;
                font-family:verdana;
            }

            .content
            {
                z-index:10;
                padding-top:2em;
                padding-bottom:2em;
            }

            .content div
            {
                width:80%;
                margin:0 auto 0 auto;
            }

            .highlighted
            {
                border-radius:1em;
                padding:2em;
                background-color:rgba(200,200,200,0.8);
            }

            #home
            {
                background:url(bg_rainbow.jpg) no-repeat center center fixed;
                height:100%;
                width:100%;
                background-size:cover;
            }

            #eastereggs
            {
                background:url(bg_eggs.jpg) no-repeat center center fixed;
                height:100%;
                width:100%;
                background-size:cover;
            }


Now that html and body tags have been set to 100% height, any div with height set to 100% will fill the entire screen. And since your background properties were set to fixed it creates a very nice scrolling effect!


Let's add a nav bar to the page.
    <body>
        <div id="nav">
            <a href="#home">Home</a> |
            <a href="#eastereggs">Easter Eggs</a>
        </div>

        <div class="content" id="home">


The links should direct you to whatever section they indicate. But it's pretty ugly right now...


Style the nav bar. The styling for the links is purely cosmetic. It's the CSS for the navbar div itself that bear watching. The position and z-index properties keep it floating in front and at the top, while the translucent black background and white text ensures that the text is legible.
            .highlighted
            {
                border-radius:1em;
                padding:2em;
                background-color:rgba(200,200,200,0.8);
            }

            #nav
            {
                background-color:rgba(0,0,0,0.8);
                height:auto;
                width:100%;
                position:fixed;
                color:#FFFFFF;
                z-index:100;
                text-align:center;
            }

            #nav a{color:#FFFFFF;text-decoration:none}

            #home
            {
                background:url(bg_rainbow.jpg) no-repeat center center fixed;
                height:100%;
                width:100%;
                background-size:cover;
            }


Now, no matter where you scroll, the nav bar follows! Sweet, eh?


Let's implement a special effect!

Add another div between the home and eastereggs divs. Let's give it an id of about. Don't forget to add that to the nav bar!
        <div id="nav">
            <a href="#home">Home</a> |
            <a href="#about">About</a> |
            <a href="#eastereggs">Easter Eggs</a>
        </div>

        <div class="content" id="home">
            <div class="highlighted">
                <h1>Easter</h1>
                          <p>
                    Easter, also called Pascha (Greek/Latin) or Resurrection Sunday, is a festival and holiday celebrating the resurrection of Jesus from the dead, described in the New Testament as having occurred on the third day of his burial after his crucifixion by the Romans at Calvary c. 30 AD. It is the culmination of the Passion of Jesus, preceded by Lent (or Great Lent), a forty-day period of fasting, prayer, and penance.
                          </p>

                          <p>
                    Most Christians refer to the week before Easter as "Holy Week" - it contains the days of the Easter Triduum, including Maundy Thursday, commemorating the Maundy and Last Supper, as well as Good Friday, commemorating the crucifixion and death of Jesus. In Western Christianity, Eastertide, or the Easter Season, begins on Easter Sunday and lasts seven weeks, ending with the coming of the fiftieth day, Pentecost Sunday. In Eastern Christianity, the season of Pascha begins on Pascha and ends with the coming of the fortieth day, the Feast of the Ascension.
                          </p>

                          <p>
                    Easter and the holidays that are related to it are moveable feasts which do not fall on a fixed date in the Gregorian or Julian calendars which follow only the cycle of the sun; rather, its date is determined on a lunisolar calendar similar to the Hebrew calendar. The First Council of Nicaea (325) established two rules, independence of the Jewish calendar and worldwide uniformity, which were the only rules for Easter explicitly laid down by the council. No details for the computation were specified; these were worked out in practice, a process that took centuries and generated a number of controversies. It has come to be the first Sunday after the ecclesiastical full moon that occurs on or soonest after 21 March, but calculations vary.
                          </p>
            </div>
        </div>

        <div class="content" id="about">
            <div>

            </div>
        </div>

        <div class="content" id="eastereggs">
            <div class="highlighted">
                <h1>Easter Eggs</h1>
                        <p>
                    The practice of decorating eggshells as part of spring rituals is ancient, with decorated, engraved ostrich eggs found in Africa which are 60,000 years old. In the pre-dynastic period of Egypt and the early cultures of Mesopotamia and Crete, eggs were associated with death and rebirth, as well as with kingship, with decorated ostrich eggs, and representations of ostrich eggs in gold and silver, were commonly placed in graves of the ancient Sumerians and Egyptians as early as 5,000 years ago. These cultural relationships may have influenced early Christian and Islamic cultures in those areas, as well as through mercantile, religious, and political links from those areas around the Mediterranean.
                        </p>

                        <p>
                    The Christian custom of Easter eggs, specifically, started among the early Christians of Mesopotamia, who stained eggs with red colouring "in memory of the blood of Christ, shed at His crucifixion". The Christian Church officially adopted the custom, regarding the eggs as a symbol of the resurrection of Jesus, with the Roman Ritual, the first edition of which was published in 1610 but which has texts of much older date, containing among the Easter Blessings of Food, one for eggs, along with those for lamb, bread, and new produce. The blessing is for consumption as a food, rather than decorated.
                        </p>

                        <p>
                    Sociology professor Kenneth Thompson discusses the spread of the Easter egg throughout Christendom, writing that "use of eggs at Easter seems to have come from Persia into the Greek Christian Churches of Mesopotamia, thence to Russia and Siberia through the medium of Orthodox Christianity. From the Greek Church the custom was adopted by either the Roman Catholics or the Protestants and then spread through Europe." Both Thompson, as well as British orientalist Thomas Hyde state that in addition to dying the eggs red, the early Christians of Mesopotamia also stained Easter eggs green and yellow.
                        </p>
            </div>
        </div>


It'll appear yellow because we didn't specify a background. But that's OK, we don't intend to. However, we need to set the overflow property to hidden. I'll explain why soon.


Here's the styling.
            #home
            {
                background:url(bg_rainbow.jpg) no-repeat center center fixed;
                height:100%;
                width:100%;
                background-size:cover;
            }

            #about
            {
                overflow:hidden;
            }


Now, we're going to add some content. This time, there'll be two different nested divs within the div, both styled using highlighted and styled using left and right respectively. They also have ids of about_left and about_right respectively.
        <div class="content" id="about">
            <div>
                <div class="highlighted left" id="about_left">
                    <h2>Western</h2>
                              <p>
                    In Western Christianity, Easter is preceded by Lent, a period of fasting and penitence in preparation for Easter, which begins on Ash Wednesday and lasts forty days (not counting Sundays). The week before Easter, known as Holy Week, is very special in the Christian tradition. The Sunday before Easter is Palm Sunday, with the Wednesday before Easter being known as Spy Wednesday. The last three days before Easter are Maundy Thursday, Good Friday and Holy Saturday (sometimes referred to as Silent Saturday).
                              </p>
                </div>
                <div class="highlighted right" id="about_right">
                             <h2>Eastern</h2>
                              <p>
                    In Eastern Christianity, the spiritual preparation for Easter begins with Great Lent, which starts on Clean Monday and lasts for 40 continuous days (including Sundays). The last week of Great Lent (following the fifth Sunday of Great Lent) is called Palm Week, and ends with Lazarus Saturday. The Vespers which begins Lazarus Saturday officially brings Great Lent to a close, although the fast continues through the following week. After Lazarus Saturday comes Palm Sunday, Holy Week, and finally Easter itself, and the fast is broken immediately after the Paschal Divine Liturgy.
                              </p>
                </div>
            </div>
        </div>


This is what it looks like now.


Style the divs. We'll use the float properties to ensure that they align correctly. The margin properties are set here because we'll be altering them via JavaScript later. The transition property is set as well because we're planning for some animation.
            #about
            {
                overflow:hidden;
            }

            .left,.right
            {
                width:35%;
                position:relative;
                transition:all 1s;
            }

            .left
            {
                float:left;
                margin-left:0%;
            }

            .right
            {
                float:right;
                margin-right:0%;
            }


Uh oh, what happened here?


This is because all div elements within the CSS class content are styled a certain way. Let's create an exception using the not pseudoselector.
            .content div:not(.left):not(.right)
            {
                width:80%;
                margin:0 auto 0 auto;
            }


There you go!


Now make this change to your HTML. We'll set up the scrolling() function soon.
    <body onscroll="scrolling();">


Now for some JavaScript. The scrolling() function first runs the isScrolledTo() function.
        <style>
            html,body
            {
                height:100%;
                width:100%;
                margin:0;
                padding:0;
            }

            body
            {
                background-color:#FFFF00;
                font-family:verdana;
            }

            .content
            {
                z-index:10;
                padding-top:2em;
                padding-bottom:2em;
            }

            .content div:not(.left):not(.right)
            {
                width:80%;
                margin:0 auto 0 auto;
            }

            .highlighted
            {
                border-radius:1em;
                padding:2em;
                background-color:rgba(200,200,200,0.8);
            }

            #nav
            {
                background-color:rgba(0,0,0,0.8);
                height:auto;
                width:100%;
                position:fixed;
                color:#FFFFFF;
                z-index:100;
                text-align:center;
            }

            #nav a{color:#FFFFFF;text-decoration:none}

            #home
            {
                background:url(bg_rainbow.jpg) no-repeat center center fixed;
                height:100%;
                width:100%;
                background-size:cover;
            }

            #about
            {
                overflow:hidden;
            }

            .left,.right
            {
                width:35%;
                position:relative;
                transition:all 1s;
            }

            .left
            {
                float:left;
                margin-left:0%;
            }

            .right
            {
                float:right;
                margin-right:0%;
            }

            #eastereggs
            {
                background:url(bg_eggs.jpg) no-repeat center center fixed;
                height:100%;
                width:100%;
                background-size:cover;
            }
        </style>

        <script>
            function scrolling()
            {
                if (isScrolledTo("about"))
                {

                }
                else
                {

                }
            }

            function isScrolledTo(elementid)
            {

            }
        </script>


isScrolledTo() takes in a string parameter. In this case, the id of the element, which is about, is passed in as an argument. It checks the number of pixels the window is scrolled by, and subtracts that from the number of pixels that the about div is from the top of the document. If the result is less than 0, that means you have scrolled to that element.
            function isScrolledTo(elementid)
            {
                return (document.body.scrollTop-document.getElementById(elementid).getBoundingClientRect().top)>0;
            }


So if you've scrolled to that about div, set the margin properties of the about_left and about_right divs. If not, set them to appear outside of the screen's boundaries.
            function scrolling()
            {
                if (isScrolledTo("about"))
                {
                    document.getElementById("about_left").style.marginLeft="0%";
                    document.getElementById("about_right").style.marginRight="0%";
                }
                else
                {
                    document.getElementById("about_left").style.marginLeft="-100%";
                    document.getElementById("about_right").style.marginRight="-100%";  
                }
            }

            function isScrolledTo(elementid)
            {
                return (document.body.scrollTop-document.getElementById(elementid).getBoundingClientRect().top)>0;
            }


Now alter the CSS.
            .left
            {
                float:left;
                margin-left:-100%;
            }

            .right
            {
                float:right;
                margin-right:-100%;
            }


Presto! They're gone! That's because for the about div, overflow is set to hidden, and with their margins set to be outside of the parent div, that renders them effectively invisible.


Scroll to the about div. And they appear back in! That's one of the things about Parallax design - the content is supposed to change as you scroll.


Let's implement another special effect!

Create the basket div inside the home div. Put in some content.
        <div class="content" id="home">
            <div class="highlighted">
                <h1>Easter</h1>
                  <p>
                Easter, also called Pascha (Greek/Latin) or Resurrection Sunday, is a festival and holiday celebrating the resurrection of Jesus from the dead,

described in the New Testament as having occurred on the third day of his burial after his crucifixion by the Romans at Calvary c. 30 AD. It is the culmination of the Passion of Jesus,

preceded by Lent (or Great Lent), a forty-day period of fasting, prayer, and penance.
                  </p>

                  <p>
                Most Christians refer to the week before Easter as "Holy Week" - it contains the days of the Easter Triduum, including Maundy Thursday, commemorating the Maundy and Last Supper, as well as Good Friday, commemorating the crucifixion and death of Jesus. In Western Christianity, Eastertide, or the Easter Season, begins on Easter Sunday and lasts seven weeks, ending with the coming of the fiftieth day, Pentecost Sunday. In Eastern Christianity, the season of Pascha begins on Pascha and ends with the coming of the fortieth day, the Feast of the Ascension.
                  </p>

                  <p>
                Easter and the holidays that are related to it are moveable feasts which do not fall on a fixed date in the Gregorian or Julian calendars which follow only the cycle of the sun; rather, its date is determined on a lunisolar calendar similar to the Hebrew calendar. The First Council of Nicaea (325) established two rules, independence of the Jewish calendar and worldwide uniformity, which were the only rules for Easter explicitly laid down by the council. No details for the computation were specified; these were worked out in practice, a process that took centuries and generated a number of controversies. It has come to be the first Sunday after the ecclesiastical full moon that occurs on or soonest after 21 March, but calculations vary.
                  </p>
            </div>

            <div id="basket">
                <div>
                    <h2>The Easter Bunny</h2>
                    <p>
                        The Easter Bunny is a folkloric figure and symbol of Easter, depicted as a rabbit bringing Easter eggs.
                    </p>
                </div>
            </div>
        </div>


As expected...


Now style the div.
            #eastereggs
            {
                background:url(bg_eggs.jpg) no-repeat center center fixed;
                height:100%;
                width:100%;
                background-size:cover;
            }

            #basket
            {
                height:200px;
                width:100%;
            }

            #basket div
            {
                width:70%;
                padding:1em;
                float:right;
            }


The width is set to 70% and floated right. We're leaving that space for something.


Now let's use a cute bunny image with a transparent background.

Style the basket div like so.
            #basket
            {
                background:url(bg_basket.png) no-repeat;
                background-position:right bottom;
                height:200px;
                width:100%;
                background-size:contain;
                z-index:50;  
                position:absolute;
                bottom:0;
                margin-bottom:-6em;
                transition:all 1s;
            }

            #basket div
            {
                width:70%;
                padding:1em;
                float:right;
            }


The div's background-position property is set to the right. The background-size is set to contain so that you'll see the image fill the height. The position and bottom properties are set so that the div is stuck at the bottom of the home div. The transition property, again, is used to plan for some animation. And the margin-bottom property is set so that it'll appear to overlap the about div.


Now alter the CSS so that the text is totally transparent.
            #basket
            {
                background:url(https://2.bp.blogspot.com/-

MUSzI9EHNp8/WNaTviuixrI/AAAAAAAACDM/6Ees3nwsExY2aARdqAQCVHhJzOS7Xah_wCLcB/s1600/easter2017_04.png) no-repeat;
                background-position:right bottom;
                height:200px;
                width:100%;
                background-size:contain;
                z-index:50;  
                position:absolute;
                bottom:0;
                margin-bottom:-6em;
                color:rgba(0,0,0,0);
                transition:all 1s;
            }


So far so good...


Add to the scrolling() function. We'll use the isScrolledTo() function to see if the basket div has been scrolled to.
                if (isScrolledTo("basket"))
                {

                }
                else
                {
  
                }

                if (isScrolledTo("move_in"))
                {
                    document.getElementById("about_left").style.marginLeft="0%";
                    document.getElementById("about_right").style.marginRight="0%";
                }
                else
                {
                    document.getElementById("about_left").style.marginLeft="-100%";
                    document.getElementById("about_right").style.marginRight="-100%";  
                }


And if it has, set the text to 100% transparency... (and if not, set it to 0%)
                if (isScrolledTo("basket"))
                {
                    document.getElementById("basket").style.color="rgba(0,0,0,1)";
                }
                else
                {
                    document.getElementById("basket").style.color="rgba(0,0,0,0)";  
                }


And shift the background of the basket div to the far left! (far right if not)
                if (isScrolledTo("basket"))
                {
                    document.getElementById("basket").style.backgroundPosition="left bottom";
                    document.getElementById("basket").style.color="rgba(0,0,0,1)";
                }
                else
                {
                    document.getElementById("basket").style.backgroundPosition="right bottom";
                    document.getElementById("basket").style.color="rgba(0,0,0,0)";  
                }


Scroll to the bunny, and the bunny moves left and the text appears!


Now for the final special effect!
We'll be using the following images, again with transparent backgrounds.




Alter your HTML with the addition of four div elements. Each of these will use the styling jumper, and have its own unique id.
            <div id="basket">
                <div>
                    <h2>The Easter Bunny</h2>
                    <p>
                        The Easter Bunny is a folkloric figure and symbol of Easter, depicted as a rabbit bringing Easter eggs.
                    </p>
                </div>
            </div>
        </div>

        <div class="jumper" id="jumper0">

        </div>

        <div class="jumper" id="jumper1">

        </div>

        <div class="jumper" id="jumper2">

        </div>

        <div class="jumper" id="jumper3">

        </div>


Style these divs. Each div will have the position property set to fixed, with z-index of 20 to make them float on top of the screen content. Many background properties will be the same as well. However, the top, left, width, height, z-index and transition properties will vary.
            #basket div
            {
                width:70%;
                padding:1em;
                float:right;
            }

            .jumper
            {
                position:fixed;
                z-index:20;
                background-size:contain;
                background-position:center center;
                background-repeat:no-repeat;
            }

            #jumper0
            {
                background-image:url(00.png);
                left:80%;
                top:5%;
                transition:all 1s;
                width:80px;
                height:120px;
            }

            #jumper1
            {
                background-image:url(01.png);
                left:70%;
                top:5%;
                transition:all 2.5s;
                width:150px;
                height:150px;
            }

            #jumper2
            {
                background-image:url(02.png);
                left:80%;
                top:5%;
                transition:all 3s;
                width:150px;
                height:250px;
            }

            #jumper3
            {
                background-image:url(03.png);
                left:75%;
                top:5%;
                transition:all 1.5s;
                width:160px;
                height:300px;
            }          


Ta-da...


Of course, we want the jumpers to be out of sight, so adjust the top properties...
            #jumper0
            {
                background-image:url(00.png);
                left:80%;
                top:200%;
                transition:all 1s;
                width:80px;
                height:120px;
            }

            #jumper1
            {
                background-image:url(01.png);
                left:70%;
                top:200%;
                transition:all 2.5s;
                width:150px;
                height:150px;
            }

            #jumper2
            {
                background-image:url(02.png);
                left:80%;
                top:200%;
                transition:all 3s;
                width:150px;
                height:250px;
            }

            #jumper3
            {
                background-image:url(03.png);
                left:75%;
                top:200%;
                transition:all 1.5s;
                width:160px;
                height:300px;
            }


Now go on to your JavaScript and update the scrolling() function with a For loop that iterates through each element styled by the jumper CSS class.
            function scrolling()
            {
                var jumper=document.getElementsByClassName("jumper");
                var scollPercentage = (document.body.scrollTop/window.innerHeight)*100;
                var jumperTop;
                var inc;

                for (var i=0;i<jumper.length;i++)
                {

                }

                if (isScrolledTo("basket"))
                {
                    document.getElementById("basket").style.backgroundPosition="left bottom";
                    document.getElementById("basket").style.color="rgba(0,0,0,1)";
                }
                else
                {
                    document.getElementById("basket").style.backgroundPosition="right bottom";
                    document.getElementById("basket").style.color="rgba(0,0,0,0)";  
                }

                if (isScrolledTo("move_in"))
                {
                    document.getElementById("about_left").style.marginLeft="0%";
                    document.getElementById("about_right").style.marginRight="0%";
                }
                else
                {
                    document.getElementById("about_left").style.marginLeft="-100%";
                    document.getElementById("about_right").style.marginRight="-100%";  
                }
            }


Use JavaScript to update the top property of these divs relative to the scrolling position.
                var jumper=document.getElementsByClassName("jumper");
                var scollPercentage = (document.body.scrollTop/window.innerHeight)*100;
                var jumperTop;
                var inc;

                for (var i=0;i<jumper.length;i++)
                {
                    jumperTop=jumper[i].style.top.replace("%","");
                    inc=50-scollPercentage;
                    jumper[i].style.top=(0+inc)+"%";
                }


Now when you scroll, the jumpers jump! Since we set the transition property of each div differently, they'll jump at different speeds. Well, OK... soar, more like.


Conclusion

This concludes the Easter web tutorial. Hope you had fun.

Happy Easter! Let the good times (sc)roll!
T___T