Showing posts with label Web Desine. Show all posts

Monday, 7 January 2013

Tips for Creating a Great Website

Think of the websites you visit the most — chances are they are clean, professional, and easy to navigate. This is no coincidence: the human mind takes just a millisecond to make a definitive decision as to a site’s credibility, and this initial judgment is based entirely on aesthetics which means a good web design is critical for retaining visitors. So before you get going, consider these 6 design tips:
1) Plan Your Site: Before turning on your computer, consider the layout, page structure and how users will move from one page to another (navigation). Then, sketch out your site on paper.
2) Understand Your Audience: Knowing your audience will help set the tone for your content and layout, as you identify what visitors will be looking for on your site. It’s also important to consider popular web browsers and your visitor’s screen resolution size so that they see your site the way you intended; you can find this data in most site analytics tools. If you’re not sure how wide to make your site, 960px is a great place to start.
3) Allow for Easy Navigation: Since people often read from left to right and top to bottom, the upper left-hand corner of your site is the first place your visitors will look. Place your navigation buttons here and keep them consistent, along with font and color choices, for easy reading and fluid movement from page to page.
4) Choose a Color Scheme: If you’re designing your site around an image, try uploading it to a color palette tool, like DeGraeve.com‘s, for example, for complementary color suggestions. Be sure to remain consistent with your design patterns, and stick to no more than three font types and colors.
5) Use High Quality Photos: In order to give your site a more professional appearance, all images should be clear, focused, and of high resolution. An alternative to taking your own photos is buying them fromistockphoto.com; at about five-dollars an image it’s an inexpensive way to visually take your website to the next level.
6) Test Your Site, Then Test Again: When you’ve created or redesigned your site, ask friends and family to test it for you. They may find things you’ve missed, or point out areas of confusion.
When paired with quality content, executing these tips appropriately will help retain first-time visitors and transform them into regulars.
Read More

Friday, 23 November 2012

Making web pages extend to the bottom of the browser window

Introduction

If you ever made a web site with the content in a center column and a different background for the body, or with a short lateral navigation bar, probably you experienced the problem of some elements not extending to the bottom of the browser window when the height of the content is lesser than the document area of the browser window.
For simple designs, like pages with a side navigation bar and the rest of the page for contents, faking the layout with a background image can be enough to fix the problem, but for more complex layouts real full height element usually are required. For that cases we can resort to JavaScript to perform some DOM manipulation magic.

The CSS layout

I'm going to use a layout with one fixed-width centered content area, a menu at the top of it and some decorations at the top and bottom of the content area. Let's take a look to the CSS code:
body {
  padding: 0;
  margin: 0;
  background: White url(img/img_116.gif);
  text-align: center; /* IE 5.x */
}

#menu {
  width: 650px; /* IE 5.x */
  width/**/:/**/ 610px;
  margin: 0 auto;
  padding: 10px 20px;
  background: transparent url(img/sample-menu-border.gif) repeat-y left top;
  text-align: left;
}

#contents {
  position: relative;
  width: 650px; /* IE 5.x */
  width/**/:/**/ 500px;
  margin: 0 auto;
  padding: 50px 75px 30px;
  background: transparent url(img/sample-contents-border.gif) repeat-y left top;
  text-align: justify;
}
The layout in action:
If you are wondering about the "/**/:/**/", it's an alternative fancy method to the box model hack

Fixing the layout

The JavaScript fix involves getting the size of the document element and the container we want to resize (in this case#contents), and the position of this element. There is no standard DOM attribute for this, but almost all browsers support the offsetHeight and offsetTop attributes (although Opera needs a bit of tweaking for getting the height of the document).
Then we compare the size of the target element (#contents) with the size of the document minus the top offset of that element. If it's smaller, then a style rule with the proper height is applied to #contents (making a difference for IE 5.x due to its broken box model). Also, the code is attached to the onresize event for readjusting the size if the user makes the browser window bigger.
The resulting JavaScript code would be something like this:
var isIE5=navigator.userAgent.toUpperCase().indexOf("MSIE 5")!=-1;

var targetElementID="contents", targetElementStyleOffset=80;

function adjustHeight() {
  if (document.getElementById) {
    var targetElement=document.getElementById(targetElementID),
        documentHeight, totalOffset;

    if (targetElement) {
      documentHeight=document.documentElement.offsetHeight;
      if (targetElement.offsetHeight<documentHeight-targetElement.offsetTop) {
        if (isIE5)
          totalOffset=targetElement.offsetTop;
          else totalOffset=targetElement.offsetTop+targetElementStyleOffset;
        targetElement.style.height=String(documentHeight-totalOffset)+'px';
      }
    }
  }
}

window.onresize=adjustHeight;
window.onload=adjustHeight;
Also, for making the script work in Opera 8 and Konqueror 3.4 we need to set the height of the html element to 100%:
html {
  height: 100%;
}
For using the code you only need to modify two values and include a call to the function. First, you need to change the values that appear in bold in the script to reflect the following data:
  1. The ID of the element that need to be extended (#contents in the previous example, so we'll use the string"contents").
  2. The vertical offset generated by the styles applied to the element (marginpadding and border). In the example we have:
    padding: 50px 75px 30px;
    margin: 0 auto;
    so we use 80 for the style offset. This offset is not applied to IE 5.x due to its broken box model. See the notes below for an explanation of this.
For activating the script, we can use the onload event, but the best method is including also a call to theadjustHeight() function just before closing the body tag, like:
<script type="text/javascript">adjustHeight();</script>
This usually works fine since all the DOM objects are already defined at that point, and it's much faster that using theonload event, because this event doesn't trigger until all the page is loaded (images and ads included). Anyway, assigning the function to the event ensures that the function will be called.
Following the next link you can see an example of the page with the JS fix applied.
The script works in Firefox/Mozilla, Internet Explorer 5/6/7, Opera 7/8/9, Konqueror 3.x, Safari and Omniweb (thanks to Stephen Caudill for the Mac feedback), which adds a nice 99% of the current browser pool :-) .

Notes and limitations

  • If you need to apply any padding and/or margin to the container you want to resize, you have to express it in pixels, since the script needs that value for setting the proper height. Since the box model doesn't include padding and margin in the dimensions of the boxes, and I was unable to find a reliable way to get the margin and padding values from JS, this manual workaround is needed.
  • The script doesn't downsize the target container, only enlarges it. Take into account that the goal of the script is getting a page that extend at least to the bottom of the browser window, not a page that fits always in the browser document area.
  • The script doesn't work when the user changes the base font size in the browser after the page is loaded. Simply there is no JS event to catch this. Anyway, the next time the page is loaded with the new size, the script will work fine.
Read More