<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>CSS Globe | Web Standards Magazine</title><link>http://www.cssglobe.com/</link><description>Css Globe Articles</description><language>en-us</language><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/cssglobearticles" type="application/rss+xml" /><feedburner:emailServiceId>cssglobearticles</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>How to properly "speak" HTM language</title><link>http://feedproxy.google.com/~r/cssglobearticles/~3/1t2x-7CqMKE/how-to-properly-speak-htm-language</link><pubDate>Fri, 26 Jun 2009 03:56:00 PDT</pubDate><guid isPermaLink="false">http://www.cssglobe.com/post/5364/how-to-properly-speak-htm-language</guid><description>&lt;p&gt;One of the cornerstones of web standards is &lt;strong&gt;semantics&lt;/strong&gt;. For those confused with this term, semantics is meaning of the word, sentence or in our case - &lt;strong&gt;a piece of code&lt;/strong&gt;. Producing meaningful code brings you closer to the idea of web standards.&lt;/p&gt;
&lt;h3&gt;Understanding Semantics&lt;/h3&gt;
&lt;p&gt;To get familiar with the term &amp;ldquo;semantics&amp;rdquo; I will give you an example I've found on the web (but can't remember where so I can't link to it). The phrase &lt;em&gt;I love New York&lt;/em&gt; has pretty straight forward meaning. If you replace the word &lt;em&gt;love&lt;/em&gt; with one of those heart symbols the sentence will change for sure but the meaning will not. So sentences &lt;em&gt;I love New York &lt;/em&gt;and &lt;em&gt;I (heart) New York &lt;/em&gt;have the same semantic value.&lt;/p&gt;
&lt;h3&gt;Validation and Semantics&lt;/h3&gt;
&lt;p&gt;Although both are very important when we talk about web standards, I honestly believe that having semantically correct code is more important then have a valid code, at least up to a level where you don't make huge errors in the code's structure. I mean, I'd rather see you using proper heading structure and miss out to put &lt;em&gt;rows&lt;/em&gt; and &lt;em&gt;cols&lt;/em&gt; attributes on textarea then the other way around. People get so preoccupied with validation that they forget that it's only a &lt;strong&gt;one step&lt;/strong&gt; towards web standards. &lt;/p&gt;
&lt;h3&gt;Talking HTML properly&lt;/h3&gt;
&lt;p&gt;There are many &lt;a href="http://www.w3schools.com/tags/default.asp"&gt;tags in HTML&lt;/a&gt; and each has it's meaning or purpose. First step towards &lt;strong&gt;learning to talk HTML&lt;/strong&gt; is to get familiar with all these tags. Just as learning a foreign language, how many different words and phrases you know will define &lt;strong&gt;how eloquent you can be&lt;/strong&gt;. I said &lt;em&gt;can be &lt;/em&gt;because knowing all these tags is not guarantee by itself.&lt;/p&gt;
&lt;p&gt;Knowing and understanding all of the tags is just the first step. Many of these tags are actually abbreviations or acronyms of the full words. Knowing what they stand for will help you in understanding and using them properly. Some of the tags mean:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;p &amp;ndash; paragraph&lt;/li&gt;
	&lt;li&gt;em &amp;ndash; emphasis&lt;/li&gt;
	&lt;li&gt;div &amp;ndash; division&lt;/li&gt;
	&lt;li&gt;td &amp;ndash; table data&lt;/li&gt;
	&lt;li&gt;th &amp;ndash; table header&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The second and equally important step is to use them properly. In order to do that, what we have to understand the content and &lt;strong&gt;write a markup that will follow it's meaning&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;How exactly can markup &amp;ldquo;follow&amp;rdquo; the content? &lt;/h3&gt;
&lt;p&gt;First example I would point out is proper heading structure. This is not important just form semantics point of view, it also defines a structure of the document. So, if something is meant to be a heading use: &lt;/p&gt;
&lt;pre&gt;&amp;lt;h2&amp;gt;This is my fancy title&amp;lt;/h2&amp;gt;&lt;/pre&gt;
&lt;p&gt;and don't use &lt;/p&gt;
&lt;pre&gt;&amp;lt;div class=&amp;quot;largeTitle&amp;quot;&amp;gt;This is my fancy title&amp;lt;/div&amp;gt;&lt;/pre&gt;
&lt;p&gt;because you strip away it's meaning &amp;ndash; you're &lt;strong&gt;ruining the semantics&lt;/strong&gt;. &lt;em&gt;Div&lt;/em&gt; defines a logical division of a content and it's meant for structure so this would not apply even if this wasn't a title. &lt;/p&gt;
&lt;p&gt;So use &lt;em&gt;divs&lt;/em&gt; for structuring a document only and not for text formatting. &lt;/p&gt;
&lt;p&gt;Separate text blocks into paragraphs using &lt;em&gt;p&lt;/em&gt; tag, do not use repetitive &lt;em&gt;br&lt;/em&gt; to add spacing between text blocks.&lt;/p&gt;
&lt;p&gt;For lists use one of 3 list elements, ordered, unordered or definition list. If you have doubts about using ordered or unordered lists see have in mind that ordered list have a ascending order (1,2,3... etc). So if you're displaying most recent list item (descending order) at the top then the ordered list is not the best solution.&lt;/p&gt;
&lt;p&gt;Use tables. Don't avoid tables all together. I saw a calendar sample marked up as an unordered list, not the best choice. Calendars are not linear therefore can't be displayed as a list.&lt;/p&gt;
&lt;h3&gt;One step further&lt;/h3&gt;
&lt;p&gt;You can also add more semantic value to your document by adding certain HTML elements that you may overlook at first. For instance, if you are talking about CSS and HTML you know that these are abbreviations, but you can let your browser know that too. The sentence:&lt;/p&gt;
&lt;pre&gt;&amp;lt;p&amp;gt;I am trying to get to become a better CSS coder.&amp;lt;/p&amp;gt; &lt;/pre&gt;
&lt;p&gt;could look better and mean much more if you should use:&lt;/p&gt;
&lt;pre&gt;&amp;lt;p&amp;gt;I am trying to get to become a better &amp;lt;abbr title=&amp;rdquo;Cascading Style Sheets&amp;rdquo;&amp;gt;CSS&amp;lt;/abbr&amp;gt; coder.&amp;lt;/p&amp;gt;&lt;/pre&gt;
&lt;p&gt;Another example:&lt;/p&gt;
&lt;pre&gt;&amp;lt;p&amp;gt;To style that line properly use class attribute like this class=&amp;rdquo;alt&amp;rdquo;. &amp;lt;/p&amp;gt;&lt;/pre&gt;
&lt;p&gt;vs&lt;/p&gt;
&lt;pre&gt;&amp;lt;p&amp;gt;To style that line properly use class attribute like this &amp;lt;code&amp;gt;class=&amp;rdquo;alt&amp;rdquo;&amp;lt;/code&amp;gt;. &amp;lt;/p&amp;gt;&lt;/pre&gt;
&lt;h3&gt;Speak it &lt;/h3&gt;
&lt;p&gt;Just as any other language HTML takes time and practice to learn and &amp;ldquo;speak&amp;rdquo; properly. So, take it one step at the time. Don't feel bad about &amp;ldquo;missing the word&amp;rdquo; here and there, more important is that you understand the language and that you are familiar with the idea of web standards and what web semantics stand for. &lt;/p&gt;
		&lt;hr /&gt;&lt;p&gt;Copyright: &lt;a href="http://cssglobe.com"&gt;Css Globe&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/cssglobearticles?a=1t2x-7CqMKE:pajoX9jwtO8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cssglobearticles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cssglobearticles?a=1t2x-7CqMKE:pajoX9jwtO8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cssglobearticles?i=1t2x-7CqMKE:pajoX9jwtO8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cssglobearticles?a=1t2x-7CqMKE:pajoX9jwtO8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cssglobearticles?i=1t2x-7CqMKE:pajoX9jwtO8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cssglobearticles?a=1t2x-7CqMKE:pajoX9jwtO8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cssglobearticles?i=1t2x-7CqMKE:pajoX9jwtO8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cssglobearticles/~4/1t2x-7CqMKE" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cssglobe.com/post/5364/how-to-properly-speak-htm-language</feedburner:origLink></item><item><title>Tag Clouds - Styling and Adding Sort Options</title><link>http://feedproxy.google.com/~r/cssglobearticles/~3/75LVHkGSvRc/tag-clouds-styling-and-adding-sort-options</link><pubDate>Tue, 31 Mar 2009 02:21:00 PDT</pubDate><guid isPermaLink="false">http://www.cssglobe.com/post/4581/tag-clouds-styling-and-adding-sort-options</guid><description>&lt;p&gt;Users have very different opinions  when it comes to tag clouds. Some like them, some can't stand to look at the mess. Whatever your feelings are, categorizing items (i.e. blog posts) using tags have become very popular and widely spread and can't be avoided in the web today. So we might as well learn how to deal with them.&lt;/p&gt;

&lt;p class="imp"&gt;&lt;a href="http://cssglobe.com/articles/tagclouds/index3.html" title="View styled and sortable tag cloud"&gt;Take a look at the full demo&lt;/a&gt;
| &lt;a href="http://cssglobe.com/articles/tagclouds/tagclouds.zip" title="download zip file"&gt;Download Tag Cloud Style &amp;amp; Sort&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Overview&lt;/h3&gt;

&lt;p&gt;This article consists of 2 parts: one is marking up and styling tags and the second is adding behavior to tag cloud using client-side script. I'll show you my way of styling tag clouds although you may find similar (yet different :) ) tutorials elsewhere.&lt;/p&gt;

&lt;h3&gt;HTML &amp;amp; CSS&lt;/h3&gt;

&lt;p&gt;Tag cloud is a list of links. Period. The only acceptable elements for organizing tags in a tag cloud are ordered or unordered list. I suggest using  unordered  list due to tag cloud's &amp;quot;messy&amp;quot; nature. In most cases we don't need wrapping element, list should be enough, but if you really have specific styling needs, you can make a compromise and wrap the list inside a div. At the end you get something like:&lt;/p&gt;

&lt;pre&gt;&amp;lt;div class=&amp;quot;tags&amp;quot;&amp;gt;
	&amp;lt;ul&amp;gt;
		&amp;lt;li class=&amp;quot;tag1&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;Lorem ipsum&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; 
	&amp;lt;/ul&amp;gt;
&amp;lt;/div&amp;gt;&lt;/pre&gt;

&lt;p&gt;Based on certain parameters, tag cloud items have different visual treatment. The idea is to emphasize items with more &amp;quot;value&amp;quot; (according to certain parameter) and that is mostly done with changing their size and weight. Here's an example. &lt;/p&gt;

&lt;p&gt;&lt;img src="http://cssglobe.com/articles/tagclouds/01.gif" alt="tag cloud" /&gt;&lt;/p&gt;

&lt;p&gt;The other option is to use color and contrast to achieve the same goal. In this example, items with less measurable value will have lower contrast and those with more value will have higher contrast. &lt;/p&gt;

&lt;p&gt;&lt;img src="http://cssglobe.com/articles/tagclouds/02.gif" alt="tag cloud" /&gt;&lt;/p&gt;

&lt;p&gt;Although most tag clouds are generated with back-end code and from that perspective it doesn't matter if you add class name or inline styling, I strongly recommend using class names. In the end, it's much easier to change a line of CSS in order to change appearance then to dig through back-end code. Depending on number of steps add class name similar to &amp;quot;tag1&amp;quot;, &amp;quot;tag2&amp;quot; ...&amp;quot;tagn&amp;quot; where the class marked with 1 should be define items with the lowest values and n defines highest value items.&lt;/p&gt;

&lt;h3&gt;And... Action!&lt;/h3&gt;

&lt;p&gt;Many visitors find tag clouds too confusing to use, so why not provide them with an alternative? With simple lines of JavaScript you can add sorting options that will make your tag clouds more usable. Even a simple switch from inline items to block-level items will do the trick and make them more easy on the eyes. &lt;/p&gt;

&lt;p&gt;&lt;img src="http://cssglobe.com/articles/tagclouds/03.gif" alt="tag cloud" /&gt;&lt;/p&gt;

&lt;p&gt;What we'll do here basically is add a class name to the UL that will change the appearance of a tag cloud. First, let's do that without the JavaScript. &lt;br/&gt;
&lt;a href="http://cssglobe.com/articles/tagclouds/index.html" title="View styled tag clouds"&gt;Check out this (static) demo page with both styles.&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;With adding a switch button using simple lines of jQuery we can easily change these styles on click. &lt;br/&gt;
&lt;a href="http://cssglobe.com/articles/tagclouds/index2.html" title="View styled and sortable tag cloud"&gt;Check out demo page with tag cloud style switcher.&lt;/a&gt; &lt;/p&gt;

&lt;pre&gt;$(document).ready(function(){	
	
	// create a style switch button
	var switcher = $('&amp;lt;a href="javascript:void(0)" class="btn"&amp;gt;Change appearance&amp;lt;/a&amp;gt;').toggle(
		function(){
			$("#tags ul").hide().addClass("alt").fadeIn("fast");
		},
		function(){
			$("#tags ul").hide().removeClass("alt").fadeIn("fast");
		}
	);
 	$('#tags').append(switcher);	
	
});&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt; that in this example I am using id for tag cloud container instead of class name as in first demo.&lt;/p&gt;

&lt;p&gt;Further more, we'll allow sorting by alphabet or by tag &amp;quot;value&amp;quot;. I am using a great plugin by Sjeiti called &lt;a href="http://www.sjeiti.com/?page_id=32" title="TinySort"&gt;TinySort&lt;/a&gt; that can be &lt;a href="http://plugins.jquery.com/project/TinySort" title="TinySort"&gt;found here.&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;$(document).ready(function(){	
	
	// create a style switch button
	var switcher = $('&amp;lt;a href="javascript:void(0)" class="btn"&amp;gt;Change appearance&amp;lt;/a&amp;gt;').toggle(
		function(){
			$("#tags ul").hide().addClass("alt").fadeIn("fast");
		},
		function(){
			$("#tags ul").hide().removeClass("alt").fadeIn("fast");
		}
	);
 	$('#tags').append(switcher);
	
	// create a sort by alphabet button
	var sortabc = $('&amp;lt;a href="javascript:void(0)" class="btn"&amp;gt;Sort alphabetically&amp;lt;/a&amp;gt;').toggle(
		function(){
			$("#tags ul li").tsort({order:"asc"});
		},	
		function(){
			$("#tags ul li").tsort({order:"desc"});
		}		
		);
 	$('#tags').append(sortabc);		
	
	// create a sort by alphabet button	
	var sortstrength = $('&amp;lt;a href="javascript:void(0)" class="btn"&amp;gt;Sort by strength&amp;lt;/a&amp;gt;').toggle(
		function(){
			$("#tags ul li").tsort({order:"desc",attr:"class"});
		},	
		function(){
			$("#tags ul li").tsort({order:"asc",attr:"class"});
		}		
		);
 	$('#tags').append(sortstrength);			
	
});&lt;/pre&gt;

&lt;p class="imp"&gt;&lt;a href="http://cssglobe.com/articles/tagclouds/index3.html" title="View styled and sortable tag cloud"&gt;Check out the sortable demo.&lt;/a&gt;&lt;/p&gt;

		&lt;hr /&gt;&lt;p&gt;Copyright: &lt;a href="http://cssglobe.com"&gt;Css Globe&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/cssglobearticles?a=75LVHkGSvRc:ps9tgD__aPI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cssglobearticles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cssglobearticles?a=75LVHkGSvRc:ps9tgD__aPI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cssglobearticles?i=75LVHkGSvRc:ps9tgD__aPI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cssglobearticles?a=75LVHkGSvRc:ps9tgD__aPI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cssglobearticles?i=75LVHkGSvRc:ps9tgD__aPI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cssglobearticles?a=75LVHkGSvRc:ps9tgD__aPI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cssglobearticles?i=75LVHkGSvRc:ps9tgD__aPI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cssglobearticles/~4/75LVHkGSvRc" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cssglobe.com/post/4581/tag-clouds-styling-and-adding-sort-options</feedburner:origLink></item><item><title>Easy Tooltip -  jQuery plugin</title><link>http://feedproxy.google.com/~r/cssglobearticles/~3/q-CkGaHVlho/easy-tooltip-jquery-plugin</link><pubDate>Thu, 05 Mar 2009 04:47:00 PST</pubDate><guid isPermaLink="false">http://www.cssglobe.com/post/4380/easy-tooltip-jquery-plugin</guid><description>&lt;p&gt;I love the simplicity of using (and more important re-using) jQuery plugins. So I decided to release yet another plugin that came from my personal need - jQuery tooltip. I already claimed this to be the &lt;a href="http://cssglobe.com/post/1695/easiest-tooltip-and-image-preview-using-jquery"&gt;simplest tooltip ever&lt;/a&gt;. I made some modifications to it so now has some extra features.&lt;/p&gt;
&lt;p class="imp"&gt;&lt;a href="http://cssglobe.com/lab/easytooltip/easytooltip.zip"&gt;Download easyTooltip.zip&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Overview&lt;/h3&gt;
&lt;p&gt;By default this plugin will read the title attribute of the element and convert it into fade-in tooltip that you can style any way you want. Important note, it doesn't have to be an anchor tag. You can apply this script to any element(s) you want. &lt;br&gt;
	The one big thing that makes this different from my first version is that you are now allowed to put custom content, any html content you want - images, long paragraphs, link lists... anything.  If you hate writing HTML code inside a JavaScript variable, this plugin allows you to use inner HTML from any element on the page. It means that you can write HTML directly on the page, as you normally do, hide that element with CSS and have it appear as a tooltip on mouse over. Take a look at the demos for more info.&lt;/p&gt;
&lt;h3&gt;Options&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;xOffset &lt;/strong&gt;- Offset to the left from the cursor (in pixels). Default setting is &lt;em&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/em&gt;.&lt;/li&gt;	
	&lt;li&gt;&lt;strong&gt;yOffset&lt;/strong&gt; - Offset to the top from the cursor (in pixels). Default setting is &lt;em&gt;&lt;strong&gt;25&lt;/strong&gt;&lt;/em&gt;.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;tooltipId&lt;/strong&gt; - Use this if you want to assign custom id to your tooltip. Also, if you have multiple tooltips on one page and you want to style them differently, use ID's to assing different css definitions. Default setting is&lt;em&gt;&lt;strong&gt; &amp;quot;easyTooltip&amp;quot;&lt;/strong&gt;&lt;/em&gt;.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;clickRemove&lt;/strong&gt; - By default tooltip dissapears once you rool out of the element. Using this options you can remove tooltip by clicking on the element. Default setting for this option is &lt;em&gt;&lt;strong&gt;false&lt;/strong&gt;&lt;/em&gt;.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;content&lt;/strong&gt; - By default Easy Tooltip displays &lt;strong&gt;&lt;em&gt;title&lt;/em&gt;&lt;/strong&gt; attribute of an element. Use this option to send a custom content to the tooltip. Default setting for this option is &lt;em&gt;&lt;strong&gt;&amp;quot;&amp;quot;&lt;/strong&gt;&lt;/em&gt; (empty).&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;useElement&lt;/strong&gt; - If you'd like to display more complex HTML in your tooltip and yet you hate writing it inside a &lt;em&gt;&lt;strong&gt;content&lt;/strong&gt; &lt;/em&gt;option, you can use a certain element's inner HTML. Best way to use this option is to create a static HTML element, hide it with css, use it's id when setting up the plugin (take a look at the 3rd demo)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Demos&lt;/h3&gt;
&lt;p&gt;Take a look at these demos and you will see how simple it is to use this plugin.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://cssglobe.com/lab/easytooltip/01.html"&gt;Easy Tooltip with default settings		&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://cssglobe.com/lab/easytooltip/02.html"&gt;Easy Tooltip with custom content&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://cssglobe.com/lab/easytooltip/03.html"&gt;Easy Tooltip that uses an element&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
		&lt;hr /&gt;&lt;p&gt;Copyright: &lt;a href="http://cssglobe.com"&gt;Css Globe&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/cssglobearticles?a=q-CkGaHVlho:D-KHYyV_T7g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cssglobearticles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cssglobearticles?a=q-CkGaHVlho:D-KHYyV_T7g:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cssglobearticles?i=q-CkGaHVlho:D-KHYyV_T7g:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cssglobearticles?a=q-CkGaHVlho:D-KHYyV_T7g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cssglobearticles?i=q-CkGaHVlho:D-KHYyV_T7g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cssglobearticles?a=q-CkGaHVlho:D-KHYyV_T7g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cssglobearticles?i=q-CkGaHVlho:D-KHYyV_T7g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cssglobearticles/~4/q-CkGaHVlho" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cssglobe.com/post/4380/easy-tooltip-jquery-plugin</feedburner:origLink></item><item><title>Pure Css Line Graph</title><link>http://feedproxy.google.com/~r/cssglobearticles/~3/oBq2PWNeJWM/pure-css-line-graph</link><pubDate>Wed, 11 Feb 2009 03:30:00 PST</pubDate><guid isPermaLink="false">http://www.cssglobe.com/post/4175/pure-css-line-graph</guid><description>&lt;p&gt;I often think about ways to visualize data using pure css. A while ago I &lt;a href="http://cssglobe.com/post/1272/pure-css-data-chart"&gt;wrote an article&lt;/a&gt; about pure css bar graphs, but what puzzled me lately was a solution for doing line graphs using nothing but css. &lt;br /&gt;
  Many will not see much sense in this technique, specially when we have so much JavaScript (or even Flash) based line graph scripts. &lt;/p&gt;
&lt;p&gt;My intention was not only to enable data visualization to people that don't feel comfortable with using various scripting languages but also to &lt;strong&gt;demonstrate the power of css and present a way of using css a bit differently&lt;/strong&gt;. If you are not a fan of line graphs and data visualization in general, you may still read this article and think of it as css experiment and perhaps &lt;strong&gt;learn a thing or two about css sprites and positioning&lt;/strong&gt;.&lt;/p&gt;
 
&lt;p&gt;&lt;img src="http://cssglobe.com/lab/csslinegraph/img.gif" alt="pure css line graph" /&gt;&lt;/p&gt;

&lt;p class="imp"&gt;&lt;a href="http://cssglobe.com/lab/csslinegraph/" title="view pure css line graph"&gt;Take a look at the demo&lt;/a&gt;
| &lt;a href="http://cssglobe.com/lab/csslinegraph/csslinegraph.zip" title="download zip file"&gt;Download pure css line graph&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;So, the line graphs. What are they good for? I will mention just one reason, and leave other advantages or downsides for a debate: users scan your page, they don't read every word and number you write. Line graphs will deliver information much faster then a table filled with numbers. &lt;/p&gt;
&lt;h3&gt;How does this thing work?&lt;/h3&gt;
&lt;p&gt;This technique takes structured html, replace text with images and by using css sprites and absolute positioning it creates a simulation of a line graph. As in my &lt;a href="http://cssglobe.com/post/1272/pure-css-data-chart"&gt;pure css bar graph example&lt;/a&gt;, I am using definition list element (DL). DL element is styled to represents the coordinate system where we place items. For that reason, empty DL element must look something like this:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://cssglobe.com/lab/csslinegraph/csslinegraph/bg_chart.gif" alt="dl background" /&gt;&lt;/p&gt;
&lt;p&gt;The dimensions used in the background graphic define the dimensions we're using for child elements in order for everything to fit well. In this case, each item will represent one day. For items we are using DD elements with nested spans. We are formatting and placing the DL's so they form linear bars across the chart.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://cssglobe.com/lab/csslinegraph/img_1.gif" alt="dd elements" /&gt;&lt;/p&gt;
&lt;p&gt;The styling of nested spans are what makes this css line graph possible.&lt;/p&gt;
&lt;h3&gt;The Graph Principle&lt;/h3&gt;
&lt;p&gt;The concept may seem a bit advanced but if you look carefully into it you'll see that the logic is quite simple. In my example item's (DD's) dimensions are 33px in width and 330px in height. Each one of those items represent one &amp;quot;line movement&amp;quot; from one point to the other. We're using one image, &lt;a href="http://cssglobe.com/lab/csslinegraph/csslinegraph/line.png"&gt;css sprite&lt;/a&gt;, that has all possible options displayed graphically. As you can see &lt;a href="http://cssglobe.com/lab/csslinegraph/csslinegraph/line.png"&gt; on the image&lt;/a&gt;, there are lines that go up (rising values) and lines that go down (falling values). Setting the nested SPAN's background-position property to certain values we are choosing one of the &amp;quot;line&amp;quot; options.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://cssglobe.com/lab/csslinegraph/img_2.gif" alt="dd background positioning" /&gt;&lt;/p&gt;
&lt;p&gt;But that is not all. We also have to set the &amp;quot;starting position&amp;quot; for each item as the lines always start at different values. That is done by setting top value for each SPAN&lt;/p&gt;
&lt;p&gt;&lt;img src="http://cssglobe.com/lab/csslinegraph/img_3.gif" alt="dd top offset" /&gt;&lt;/p&gt;
&lt;p&gt;For this reason, each SPAN has 2 (actually some of them have 3  - read below) class names attached: one that defines the SPAN's &amp;quot;starting point&amp;quot; (SPAN's top value) and other that represent the rising or falling &amp;quot;line move&amp;quot; (SPAN's background position value). &lt;br /&gt;
  Starting point is based on previous value. You have to continue with next item where the previous item &amp;quot;stopped&amp;quot;. &lt;/p&gt;
&lt;h3&gt;Usage&lt;/h3&gt;
&lt;p&gt;If you look at the &lt;a href="http://cssglobe.com/lab/csslinegraph/csslinegraph/csslinegraph.css"&gt;css file&lt;/a&gt; I created 4 groups of class names: 2 for setting starting position and 2 for defining the &amp;quot;move&amp;quot;.&lt;br /&gt;
  I divided starting position class name groups based on the situation where we are increasing values (using line-up, the upper part of the image) or decreasing values (lower part of the image). &lt;br /&gt;
  I named those class names &lt;strong&gt;.pi1&lt;/strong&gt; or &lt;strong&gt;.pd1&lt;/strong&gt; (&amp;quot;p&amp;quot;osition &amp;quot;i&amp;quot;ncreasing 1) or (&amp;quot;p&amp;quot;osition &amp;quot;d&amp;quot;ecreasing 1) By looking at the css file you'll notice that .pi group has negative top values which shits sprite image up while .pd group has positive top values (shifts image down).&lt;/p&gt;
&lt;p&gt;Actual line movements are defined with class names like &lt;strong&gt;.i1&lt;/strong&gt; or &lt;strong&gt;.d1&lt;/strong&gt; i.e. this class name &lt;strong&gt;.i24&lt;/strong&gt; increases the value by &lt;strong&gt;24&lt;/strong&gt; points. &lt;/p&gt;
&lt;p&gt;Choosing a proper position (&amp;quot;.p&amp;quot; class) is fairly easy: you have to take a look at &lt;strong&gt;previous item&lt;/strong&gt; which can be something like:&lt;/p&gt;
&lt;pre&gt;&amp;lt;dd&amp;gt;&amp;lt;span class=&amp;quot;pi1 i10&amp;quot;&amp;gt;&amp;lt;em&amp;gt;33&amp;lt;/em&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/dd&amp;gt;&lt;/pre&gt;
&lt;p&gt;We have &lt;strong&gt;pi1&lt;/strong&gt; and &lt;strong&gt;i10&lt;/strong&gt;. It means that we have item starting at point 1 and is increased by 10 points. That makes point 11 our &lt;strong&gt;new starting point&lt;/strong&gt;. If our next move is increase we are choosing .pi11 but if we're decreasing we choose .pd11! &lt;/p&gt;
&lt;p&gt;If this sound to complex (or if  I presented it poorly) just remember that when choosing both class name you have to be careful that you don't mix i's and d's &lt;/p&gt;
&lt;p&gt;This is good:&lt;/p&gt;
&lt;pre&gt;&amp;lt;dd&amp;gt;&amp;lt;span class=&amp;quot;pi1 i10&amp;quot;&amp;gt;&amp;lt;em&amp;gt;33&amp;lt;/em&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/dd&amp;gt;&lt;/pre&gt;
&lt;p&gt;and this isn't&lt;/p&gt;
&lt;pre&gt;&amp;lt;dd&amp;gt;&amp;lt;span class=&amp;quot;pi1 d10&amp;quot;&amp;gt;&amp;lt;em&amp;gt;33&amp;lt;/em&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/dd&amp;gt;&lt;/pre&gt; 
&lt;p&gt;Now, let me explain what's with the EM element. Items are placed next to each other without overlapping so the line connections are not smooth. I am using EMs to place dots over these connecting points to cover them. EMs are absolutely positioned to cover the PREVIOUS line connection area. There is one default css definition for EMs although the decreasing items need additional class name &lt;strong&gt;.d&lt;/strong&gt; - that's why I mentioned that some of the SPANS has 3 class names. The decreasing item is marked up like this: &lt;/p&gt;
&lt;pre&gt;&amp;lt;dd&amp;gt;&amp;lt;span class=&amp;quot;pd10 d d1&amp;quot;&amp;gt;&amp;lt;em&amp;gt;46&amp;lt;/em&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/dd&amp;gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Please note that class names are written in &amp;quot;points&amp;quot; or &amp;quot;steps&amp;quot;&lt;/strong&gt; not the actual values. In my case each &amp;quot;point&amp;quot; represents 3,3%&lt;/p&gt;
&lt;p&gt;As mentioned, I am not trying to replace advanced JS or flash techniques with this. I am offering an alternative way to visualize data  and perhaps different view of CSS usage. This method has it's limitations, but it's pure CSS!&lt;/p&gt;

		&lt;hr /&gt;&lt;p&gt;Copyright: &lt;a href="http://cssglobe.com"&gt;Css Globe&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cssglobearticles?a=6NurK8jF"&gt;&lt;img src="http://feeds.feedburner.com/~f/cssglobearticles?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cssglobearticles?a=msdeCIrh"&gt;&lt;img src="http://feeds.feedburner.com/~f/cssglobearticles?i=msdeCIrh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cssglobearticles?a=pPvmquwS"&gt;&lt;img src="http://feeds.feedburner.com/~f/cssglobearticles?i=pPvmquwS" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cssglobearticles?a=3E2o9mIb"&gt;&lt;img src="http://feeds.feedburner.com/~f/cssglobearticles?i=3E2o9mIb" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cssglobearticles/~4/oBq2PWNeJWM" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cssglobe.com/post/4175/pure-css-line-graph</feedburner:origLink></item><item><title>Easy Slider 1.5 - The Easiest jQuery Plugin For Sliding Images and Content</title><link>http://feedproxy.google.com/~r/cssglobearticles/~3/crvzj9kNio8/easy-slider-15-the-easiest-jquery-plugin-for-sliding</link><pubDate>Mon, 26 Jan 2009 09:29:00 PST</pubDate><guid isPermaLink="false">http://www.cssglobe.com/post/4004/easy-slider-15-the-easiest-jquery-plugin-for-sliding</guid><description>&lt;p&gt;New version of my Easy Slider plugin for jQuery is here. This is one of the my rare scripts that make it to their second version. In this case version 1.5 &lt;br /&gt;
	All of the features here are result of your comments, so if you have more ideas, keep 'em coming! &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; in case you haven't already, you might want to check out article about &lt;a href="http://cssglobe.com/post/3783/jquery-plugin-easy-image-or-content-slider"&gt;first version&lt;/a&gt; of this plugin.&lt;/p&gt;

&lt;p class="imp"&gt;&lt;a href="http://cssglobe.com/lab/easyslider1.5/easySlider1.5.zip"&gt;Download easySlider1.5.zip&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Features&lt;/h3&gt;
&lt;p&gt;This version features: &lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt; auto slide&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;continuous  sliding&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;&amp;quot;go to first&amp;quot; and &amp;quot;go to last&amp;quot; button&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;hiding controls&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;optional wrapping markup for control buttons &lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;vertical sliding&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;multiple sliders on one page&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are the things you can customize (with their default values)&lt;/p&gt;

&lt;pre&gt;prevId: 'prevBtn',
prevText: 'Previous',
nextId: 'nextBtn',	
nextText: 'Next',
controlsShow: true,
controlsBefore: '',
controlsAfter: '',	
controlsFade: true,
firstId: 'firstBtn',
firstText: 'First',
firstShow: false,
lastId: 'lastBtn',	
lastText: 'Last',
lastShow: false,				
vertical: false,
speed: 800,
auto: false,
pause: 2000,
continuous: false&lt;/pre&gt;

&lt;p&gt;I will explain new options:&lt;/p&gt;

&lt;h4&gt;controlsShow&lt;/h4&gt;

&lt;p&gt;By default set to true, but if set to false it will not add any controls. It can be used with auto scroll when you want to disable user interaction.&lt;/p&gt;
&lt;h4&gt;controlsBefore and controlsAfter&lt;/h4&gt;
&lt;p&gt;In case you want to add some additional markup to gain more control over buttons you can do so by using these parameters. Check out the demo where I use these options. &lt;/p&gt;
&lt;h4&gt;controlsFade&lt;/h4&gt;
&lt;p&gt;By default set to true. If set to false it will disable button hiding when slider reaches the end.&lt;/p&gt;
&lt;h4&gt;firstShow and lastShow&lt;/h4&gt;
&lt;p&gt;These parameters hide (or show) &amp;quot;go to first&amp;quot; and &amp;quot;go to last&amp;quot; buttons&lt;/p&gt;
&lt;h4&gt;auto&lt;/h4&gt;
&lt;p&gt;This option enables auto sliding, Just set it to true.&lt;/p&gt;
&lt;h4&gt;pause&lt;/h4&gt;
&lt;p&gt;This option is set in milliseconds and it represent the duration of each slide when plugin is set to auto sliding &lt;/p&gt;
&lt;h4&gt;continuous	&lt;/h4&gt;
&lt;p&gt;If set to true clicking the next button when the slider reached the end will jump to the beginning (and vice-versa). Combining this option with auto (both set to true) you'll get endless animation &lt;/p&gt;
&lt;h3&gt;Demos &lt;/h3&gt;
&lt;p&gt;I have prepared 5 demos, although I could have done zillions. Hopefully I will have the time to create more good demos as I continue to develop this plugin&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://cssglobe.com/lab/easyslider1.5/01.html"&gt;basic default non styled demo&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://cssglobe.com/lab/easyslider1.5/02.html"&gt;styled demo with default settings&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://cssglobe.com/lab/easyslider1.5/03.html"&gt;non styled demo with vertical scroll and visible &amp;quot;go to first&amp;quot; and &amp;quot;go to last&amp;quot; buttons&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://cssglobe.com/lab/easyslider1.5/04.html"&gt;styled demo with auto scroll and continuous sliding&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://cssglobe.com/lab/easyslider1.5/05.html"&gt;styled demo with multiple slider, image and content slider, with different settings (top one has auto slide while bottom one doesn't) &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Future&lt;/h3&gt;
&lt;p&gt;I already have some ideas about next versions (play/pause buttons, numbered pagination...) but I would also like you to share any idea you might have.&lt;/p&gt;


		&lt;hr /&gt;&lt;p&gt;Copyright: &lt;a href="http://cssglobe.com"&gt;Css Globe&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cssglobearticles?a=olZHuzTV"&gt;&lt;img src="http://feeds.feedburner.com/~f/cssglobearticles?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cssglobearticles?a=2Hkm488M"&gt;&lt;img src="http://feeds.feedburner.com/~f/cssglobearticles?i=2Hkm488M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cssglobearticles?a=c9Q8BdRJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/cssglobearticles?i=c9Q8BdRJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cssglobearticles?a=oRgCk7tY"&gt;&lt;img src="http://feeds.feedburner.com/~f/cssglobearticles?i=oRgCk7tY" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cssglobearticles/~4/crvzj9kNio8" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cssglobe.com/post/4004/easy-slider-15-the-easiest-jquery-plugin-for-sliding</feedburner:origLink></item></channel></rss>
