<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Kashit &#187; CSS</title>
	<atom:link href="http://www.kashit.org/channels/design/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kashit.org</link>
	<description>home to Ehsan Quddusi</description>
	<lastBuildDate>Sun, 28 Feb 2010 18:43:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ultimate guide to techniques for cross browser CSS</title>
		<link>http://www.kashit.org/design/css/ultimate-guide-to-techniques-for-cross-browser-css/</link>
		<comments>http://www.kashit.org/design/css/ultimate-guide-to-techniques-for-cross-browser-css/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 07:33:50 +0000</pubDate>
		<dc:creator>Ehsan Quddusi</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML + XHTML]]></category>
		<category><![CDATA[browser reset]]></category>
		<category><![CDATA[css hacks]]></category>
		<category><![CDATA[IE6 bugs]]></category>
		<category><![CDATA[IE6 Hacks]]></category>

		<guid isPermaLink="false">http://www.kashit.org/?p=388</guid>
		<description><![CDATA[<span class="dropcap">W</span>ith the advent of CSS,  the power of presentation in web pages was highly increased. Transition from old style writing of HTML pages to new wave of full life UIs has brought with it many concerns for the web designers. The major concern for web designers nowadays is to create cross browser complaint websites with as little variation across browsers as possible. Internet Explorer 6 being the major problem creator among the lot. Since IE6 still holds 10.2% of the browser market share, according to w3schools <a href="http://www.w3schools.com/browsers/browsers_stats.asp">browser statistics</a> for January 2010, it needs to be tackled. Most of these problems are mainly caused due to variation in the implementation of specifications by browser vendors.]]></description>
			<content:encoded><![CDATA[<p><span class="dropcap">W</span>ith the advent of CSS,  the power of presentation in web pages was highly increased. Transition from old style writing of HTML pages to new wave of full life UIs has brought with it many concerns for the web designers. The major concern for web designers nowadays is to create cross browser complaint websites with as little variation across browsers as possible. Internet Explorer 6 being the major problem creator among the lot. Since IE6 still holds 10.2% of the browser market share, according to w3schools <a href="http://www.w3schools.com/browsers/browsers_stats.asp">browser statistics</a> for January 2010, it needs to be tackled. Most of these problems are mainly caused due to variation in the implementation of specifications by browser vendors.</p>
<h4>Global CSS Reset</h4>
<p>Different web browsers having their own defaults defined for most of the CSS properties and thus pose a problem in cross browser compliancy of front-ends. In order to address this, you should use CSS resets which brings the browser defaults to a same value across browsers. Various CSS resets are available in the web world, among which, Eric Meyer’s Reset Reloaded, YUI Reset CSS, Siolon’s global reset, Shaun Inman’s Global Reset &amp; Tantek’s CSS reset  are notable. Personally I use Eric’s Reset Reloaded because it neutralizes virtually every default CSS rule of browser.</p>
<pre name="code" class="css">/* v1.0 | 20080212 */

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
   margin: 0;
   padding: 0;
   border: 0;
   outline: 0;
   font-size: 100%;
   vertical-align: baseline;
   background: transparent;
}

body {
   line-height: 1;
}

ol, ul {
   list-style: none;
}

blockquote, q {
   quotes: none;
}

blockquote:before, blockquote:after,
q:before, q:after {
   content: '';
   content: none;
}

/* remember to define focus styles! */
:focus {
   outline: 0;
}

/* remember to highlight inserts somehow! */
ins {
   text-decoration: none;
}

del {
   text-decoration: line-through;
}

/* tables still need 'cellspacing="0"' in the markup */
table {
   border-collapse: collapse;
   border-spacing: 0;
}
</pre>
<h4>Easy Selectors</h4>
<p>These are the valid CSS selectors to address a particular browser or browser version. Most of the time, this technique is used for Internet Explorer only, although we can use it with every other browser. Below is the usage of selectors for addressing different browsers.</p>
<p>IE 6 and below</p>
<pre name="code" class="css">* html {}</pre>
<p>IE 7 and below</p>
<pre name="code" class="css">*:first-child+html {} * html {}</pre>
<p>IE 7 only</p>
<pre name="code" class="css">*:first-child+html {}</pre>
<p>IE 7 and modern browsers only</p>
<pre name="code" class="css">html&gt;body {}</pre>
<p>Opera versions 9 and below</p>
<pre name="code" class="css">html:first-child {}</pre>
<p>Google Chrome</p>
<pre name="code" class="css">body:nth-of-type(1) p {
   color: #333333;
}
</pre>
<p>Apple Safari</p>
<pre name="code" class="css">html:lang(en)&gt;body  .classname {}</pre>
<h4>IE Conditional Comments</h4>
<p>This technique is used to address some CSS for Internet Explorer only and make other browsers to simply avoid it or report it as comment. It works by putting up your code in comment style IE Conditional tags.</p>
<pre name="code" class="html">&lt;!--[if IE ]&gt;
   &lt;link href="iecss.css" rel="stylesheet" type="text/css"&gt;
&lt;![endif]--&gt;
</pre>
<p>Again we can use different sytax to address a particular browser versions like</p>
<pre name="code" class="html">&lt;!--[if IE6 ]&gt;
   &lt;link href="iecss.css" rel="stylesheet" type="text/css"&gt;
&lt;![endif]--&gt;

&lt;!--[if lt IE6 ]&gt;
   &lt;link href="iecss.css" rel="stylesheet" type="text/css"&gt;
&lt;![endif]--&gt;
</pre>
<p>You can read more about version targeting IE at <a href="http://www.quirksmode.org/css/condcom.html">quirksmode.org</a></p>
<h4>Transparent PNGs</h4>
<p>Although all the modern browsers support transparency for PNGs, yet again Internet Explorer 6 has a problem with it. IE6 displays a white patch beneath the PNG image. There are lot of scripts / techniques / solutions available to tackle this problem. One of the solution is to use <a href="http://www.kashit.org/design/png-transparency-for-internet-explorer/">HTC script</a> with your page. Many other plugins and scripts are available to tackle this problem. <code>jQuery pngFix</code>, <code>jQuery iepngfix</code> are used alongwith jQuery. I personally use <a href="http://www.dillerdesign.com/experiment/DD_belatedPNG/">DD_belatedPNG</a>.</p>
<p>According to its author</p>
<blockquote><p>This is a Javascript library that sandwiches PNG image support into IE6 without much fuss</p></blockquote>
<p>It has support for PNGs in background or in SRC of an <code>&lt;img/&gt;</code> element. It also fixes <code>background-position</code> and <code>background-repeat</code> properties of CSS, which creates a problem with other scripts used. It uses Microsoft’s buddy, <code>VML</code> to fix the issues.</p>
<p>Here is its usage</p>
<pre name="code" class="html">&lt;!--[if IE 6]&gt;
&lt;script src="DD_belatedPNG.js"&gt;&lt;/script&gt;
&lt;script&gt;
/* EXAMPLE */
DD_belatedPNG.fix('.png_bg');

/* string argument can be any CSS selector */
/* .png_bg example is unnecessary */
/* change it to what suits you! */
&lt;/script&gt;
&lt;![endif]--&gt;
</pre>
<h4>Fixing IE Box Model Bug</h4>
<p>This is perhaps the most common and frustrating bug in IE 6 and below. It is caused due to IEs different approach in calculating the total size of a box. Let us say you write</p>
<pre name="code" class="css">.box {
   width:100px;
   padding:10px;
   border:2px solid #CCC;
}
</pre>
<p>According to W3C specifications, the total width of the box should be <code>124px</code>, which all the modern browsers follow, while as IE calculates it as <code>100px</code> only.</p>
<p>This deviation from the specs can cause lot of layout problems. IE 6 can actually get it right if you are in standards-compliant mode. There are various workarounds for this problem. Some of them are:</p>
<h5>Box-in-a-Box</h5>
<p>According to this technique, we simply use extra markup to fix the issue. Instead of using the padding on the main element, we insert another element inside it and use padding on it. Like</p>
<pre name="code" class="html">&lt;div class=”box”&gt;
  &lt;div class=”box-inner”&gt;
    Testing for box model hack
  &lt;/div&gt;
&lt;/div&gt;
</pre>
<p>In this case our markup will be</p>
<pre name="code" class="css">.box { width:100px;}
.box-inner {padding:10px;}
</pre>
<h5>Simplified Box Model Hack (SBMH)</h5>
<p>It uses the CSS parsing  bug of Internet Explorer to address the issue. This was first detailed by <a href="http://www.doxdesk.com/personal/posts/css/20020212-bmh.html">Andrew Clover </a></p>
<p>The structure for this hack is</p>
<pre name="code" class="css">.box {
   padding:20px;
   width: 100px;
   \width: 140px;
   w\idth: 100px;
}
</pre>
<p>The first line &#8220;<code>width: 100px;</code>&#8221; is for browsers like Mozilla and Opera that render correctly. Opera and other browsers choke on the escape character (\) and so will ignore the second and third properties. The second property &#8220;<code>\width: 140px;</code>&#8221; is for IE 5 and 6/quirks mode. The final line &#8220;<code>w\idth: 100px;</code>&#8221; will be read by escape friendly browsers (including IE 6 in non-quirks mode) and set the width back to 100px.</p>
<h5>box-sizing</h5>
<p>The newly introduced CSS3 <code>box-sizing</code> property allows you to choose which box-model your browser should use. The W3C box model is called `<code>content-box</code>` and the Internet Explorer box model is called `<code>border-box</code>`.</p>
<p>This can make it easier to control the size of elements and to make sizes behave the same across different browsers.</p>
<pre name="code" class="css">.box {
   -moz-box-sizing: border-box;
   -webkit-box-sizing: border-box;
   box-sizing: border-box;
}
</pre>
<p>If the website is rendered in quirks mode, IE6 will render using the non-standard box model, so it will already be rendering as if it had the “<code>border-box</code>” property on. Modern browsers will adopt the IE’s buggy box-model by setting this property.</p>
<h4>Hover State</h4>
<p>All the modern browsers support <code>:hover</code> pseudo-class for about any element, but IE 6 has the support for hover pseudo class on &lt;a&gt; element only (you need to set the href attribute for <code>&lt;a&gt;</code> element to get this working in IE6). To fix this issue with IE6, you need a proprietary fix for this.</p>
<p><a href="http://www.xs4all.nl/~peterned/csshover.html">Whatever:hover</a> is a small script that automatically patches <code>:hover</code>, <code>:active</code> and <code>:focus</code> for IE6, IE7 and IE8 quirks, letting you use them like you would in any other browser.</p>
<p>Download the script file and add this line in your CSS file, and you are done.</p>
<pre name="code" class="css">body { behavior: url("csshover3.htc"); }
</pre>
<p>Note that behavior URLs are relative to the html file, not to the CSS file like a background image URL would be.</p>
<h4>Double Margin Bug</h4>
<p>Most of the people working with Web will be familiar with IE’s double margin bug. The bugs arises when you float an element to one side and apply some margin on that side. Without any reason, it simply doubles that margin.</p>
<p>For example, if we do this,</p>
<pre name="code" class="css">.box {
   float: right;
   margin-right: 10px;
}
</pre>
<p>IE6 will double the margin (most of the times) to 20px without any reason. But this bug can be easily overruled by changing the display property of the floated element from block to inline. So the CSS will be</p>
<pre name="code" class="css">.box {
   float: right;
   margin-right: 10px;
   display: inline;
}
</pre>
<h4>Stepdown problem in IE6</h4>
<p>When you float elements of a fixed width, they will align themselves horizontally to fit the width of the parent element. At least, that’s how it works in most browsers. In IE6, the floated items will not be displayed in a straight line, but rather will appear to stepdown in bizarre, staircase-like fashion. This can be fixed by applying <code>display: inline;</code> property to floated elements.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kashit.org/design/css/ultimate-guide-to-techniques-for-cross-browser-css/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CSS Best Practices &#8211; II</title>
		<link>http://www.kashit.org/design/css-best-practices-ii/</link>
		<comments>http://www.kashit.org/design/css-best-practices-ii/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 16:25:13 +0000</pubDate>
		<dc:creator>Ehsan Quddusi</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[browser grading]]></category>
		<category><![CDATA[CSS Best Practices]]></category>
		<category><![CDATA[css hacks]]></category>

		<guid isPermaLink="false">http://www.kashit.org/?p=209</guid>
		<description><![CDATA[<span class="dropcap">I</span> hope you will have read my previous article on CSS Best Practices. This is another topic on the same subject, just to increase your knowledge of the CSS golden rules, tips &#38; tricks. The inspiration for this article is from my day to day experience with the same.]]></description>
			<content:encoded><![CDATA[<p><span class="dropcap">I</span> hope you will have read my previous article on CSS Best Practices. This is another topic on the same subject, just to increase your knowledge of the CSS golden rules, tips &amp; tricks. The inspiration for this article is from my day to day experience with the same.</p>
<p><em>Previous Article <a href="http://www.kashit.org/design/css-best-practices/">CSS Best Practices</a></em></p>
<h4>Avoid in-line css</h4>
<p>Use of inline styles hinders the purpose of CSS and should not be used in a live site.</p>
<h4>Test your code in A-Grade browser</h4>
<p>Test your code in an advanced browser before checking it in a broken browser. Building the site on a broken browser results in your code relying on the rendering of that browser and breaking on standards-complaint browser.Instead start from perfection and then hack for the less able browsers.</p>
<h4>Minimize and cleanup your code</h4>
<p>Use as little CSS as possible, remove styles and parts of styles not being used or that were experimented with in the design process. You can even use some compressors to compress the code by removing unwanted white space and line breaks.</p>
<h4>Combine Selectors</h4>
<p>Use inheritance to minimize your code as much as possible, like this.</p>
<p>Instead of writing</p>
<pre name="code" class="css">
h1 {
  font-family:Arial, sans-serif;
  font-size:2em;
  font-weight:bold;
  font-style:normal;
  color:#DE43A2;
}

h1 .title {
  font-family:Arial, sans-serif;
  font-weight:bold;
  font-style:normal;
  color:#CCC;
}
</pre>
<p>We can write</p>
<pre name="code" class="css">
h1 {
  font-family:Arial, sans-serif;
  font-size:2em;
  font-weight:bold;
  font-style:normal;
  color:#DE43A2;
}

h1 .title {
  color:#CCC;
}
</pre>
<h4>Use generic font families</h4>
<p>While assigning fonts to the font-family cssproperty, always follow your fonts by a generic font family of that type like serif, sans-serif etc This will make any font available from that family substitute to the font, mentioned by you in the style and not available in the client computer.</p>
<h4>Target your stylesheet</h4>
<p>While linking your stylesheet in your document, specify the media in which to be used like print, screen, projection etc</p>
<pre name="code" class="html">&lt;link rel="stylesheet" src="style.css" media="screen" /&gt;</pre>
<h4>Name your styles properly</h4>
<p>Never name your styles on the basis of their properties or the appearance they are going to make, like arialblue5, redbox etc. Instead name the styles in terms of usage like sub-head, sidebar-box etc.  One of the most important benefits of CSS is being able to change the look without having to change the HTML.</p>
<p>Use functional names for your classes, avoid words that describe how they look.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kashit.org/design/css-best-practices-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Sprite &#8211; Way for better web performance</title>
		<link>http://www.kashit.org/general-web/css-sprite-way-for-better-web-performance/</link>
		<comments>http://www.kashit.org/general-web/css-sprite-way-for-better-web-performance/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 17:27:10 +0000</pubDate>
		<dc:creator>Ehsan Quddusi</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[General Web]]></category>
		<category><![CDATA[HTML + XHTML]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[css sprites]]></category>

		<guid isPermaLink="false">http://new.kashit.org/?p=90</guid>
		<description><![CDATA[<span class="dropcap">C</span>SS Sprites is a technique by which we can combine multiple images in a single big image and position the various parts of this big image with our elements using pure CSS attributes. The primary objective behind using CSS Sprites is to decrease the number of HTTP requests and thus decreasing the request stress on server. The idea behind CSS Sprites is to consolidate multiple images into one sprite and then selectively display portions of this sprite with positioning. It starts by creating a larger CSS Sprite by grouping more than one images (usually icons) together and aligning them in proper grid style to aid the positioning. Then it is aligning used a proper positioning values on the webpages to show their respective images. This way it decreases the number of HTTP requests and thus increases the overall speed of webpages.]]></description>
			<content:encoded><![CDATA[<p><span class="dropcap">C</span>SS Sprites is a technique by which we can combine multiple images in a single big image and position the various parts of this big image with our elements using pure CSS attributes. The primary objective behind using CSS Sprites is to decrease the number of HTTP requests and thus decreasing the request stress on server. The idea behind CSS Sprites is to consolidate multiple images into one sprite and then selectively display portions of this sprite with positioning. It starts by creating a larger CSS Sprite by grouping more than one images (usually icons) together and aligning them in proper grid style to aid the positioning. Then it is aligning used a proper positioning values on the webpages to show their respective images. This way it decreases the number of HTTP requests and thus increases the overall speed of webpages.</p>
<p>Sometimes back, we used the favourite slicing technique to break down a larger image into smaller slices (parts) so as to make pages load faster, but all this technique was only fooling our eyes as the page looked like loading faster, while in reality it was not. Each of those images was fed up as a separate request to the server and would increase the time of loading actually.</p>
<p>According to Yahoo UI blog, the resultant sprite created by joining smaller images is always smaller in size than the combined contributed parts. It is because we have to use a single color table for the sprite instead of individual color tables for the contributed ones. Another advantage of using sprites is that this way we save the overhead required by the images.</p>
<p>Enough Writing, Let’s make a try</p>
<p>With the basic concept and theory behind CSS Sprites, it is time to build actual CSS that makes it run. Here we will make a try to replicate Yahoo’s sidebar.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-92" title="css-sprite-picx" src="http://media.kashit.org/2008/11/css-sprite-picx.gif" alt="" width="460" height="462" /></p>
<p>As can be seen from the picture Yahoo’s sidebar contains around 19 links with their corresponding icons, but if you will notice, it has a single source image from behind. Infact Yahoo uses two CSS Sprites on their home page to increase their performance. As stated by the ex-Chief Performance Guru of Yahoo, Steve Souders on Yahoo’s performance blog that the number of HTTP requests is directly related to the loading time of the page, so lesser the HTTP requests means the faster image loading.</p>
<p>Coming to the point, let me tell you that I used the same image from Yahoo to achieve our effect more precisely.</p>
<p>As usual, the code starts with a browser reset. So did a browser reset with the Eric Meyer’s Browser Reset to neutralize and bring uniformity in the elements across different web browsers.<br />
To establish a Yahoo like block level look, let us create some <code>div</code> containers and do a bit of styling to them.<br />
<code><br />
&lt;div id="menu-holder"&gt;<br />
&lt;div id="menu-holder-inner"&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;&lt;!--/#menu-holder--&gt;<br />
</code><br />
Then I did a bit of styling for the divs to make a Yahoo like look.</p>
<p><code>/*------------------------------------------<br />
STYLING FOR DIV ELEMENTS<br />
------------------------------------------*/<br />
div {}</code></p>
<p><code>/* Holder for our menu */<br />
#menu-holder {<br />
width:148px;<br />
border:#B0BDC6 1px solid;<br />
margin:50px auto;<br />
background:url(../picx/grd-4px_1.1.gif) repeat-x;<br />
}<br />
#menu-holder-inner {<br />
border:#FFFFFF solid 1px;<br />
border-top:0;<br />
border-bottom:0;<br />
}</code></p>
<p>The code above indicates some background and border attributes that were used to style our divs. Moving forward, let us now create the menu items to be used in our menu.<br />
<code><br />
&lt;ul id="left-menu"&gt;<br />
&lt;li style="background-position:-396px -115px;"&gt;<br />
&lt;a href="" title="" class="menu-items-a" &gt;Answers&lt;/a&gt;<br />
&lt;/li&gt;<br />
&lt;li style="background-position:-396px -436px;"&gt;<br />
&lt;a href="" title="" class="menu-items-a"&gt;Autos&lt;/a&gt;<br />
&lt;/li&gt;<br />
……<br />
……<br />
&lt;/ul&gt;</code></p>
<p><code><br />
/*------------------------------------------<br />
STYLING FOR UL ELEMENTS<br />
------------------------------------------*/<br />
ul {}</code></p>
<p><code>#left-menu {<br />
list-style:none;<br />
margin:0;<br />
}</code></p>
<p><code>li {}<br />
#left-menu li {<br />
padding:0 0 0 0px;<br />
background:url(../picx/trough_1.6.gif) no-repeat;<br />
line-height:1.7em;<br />
}</code></p>
<p><code>/*------------------------------------------<br />
STYLING FOR A ELEMENTS<br />
------------------------------------------*/<br />
a {}<br />
.menu-items-a {<br />
font-family:Verdana, Arial, Helvetica, sans-serif;<br />
font-size:0.7em;<br />
color:#014289;<br />
text-decoration:none;<br />
font-weight:bold;<br />
display:block;<br />
padding:0 0 0 30px;<br />
}</code></p>
<p><code>.menu-items-a:hover {<br />
text-decoration:underline;<br />
}</code></p>
<p>As you can notice from the above snippet, I have included a CSS attribute <code>list-style:none;</code> to override the default icon style for the <code>ul</code>. I have included the default background for all the li’s which they inherit from the default style <code>#left-menu li</code> .As you can see, I have written some inline CSS with each <code>li</code> just to change the position of the background image so as to display the desired icon only with the link. The inline CSS here is just to save time and you can replace it with the ids for the li’s or unique classes.</p>
<p>This menu example is just a simple example that demonstrates the power and simplicity of CSS sprites and just exposes a small functionality or application of the same. You can create more parts of your page using the technique.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kashit.org/general-web/css-sprite-way-for-better-web-performance/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CSS Best Practices</title>
		<link>http://www.kashit.org/design/css-best-practices/</link>
		<comments>http://www.kashit.org/design/css-best-practices/#comments</comments>
		<pubDate>Sat, 09 Feb 2008 09:40:18 +0000</pubDate>
		<dc:creator>Ehsan Quddusi</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[browser reset]]></category>
		<category><![CDATA[CSS Best Practices]]></category>
		<category><![CDATA[css hacks]]></category>
		<category><![CDATA[IE Conditional]]></category>
		<category><![CDATA[shorthand css]]></category>

		<guid isPermaLink="false">http://new.kashit.org/?p=48</guid>
		<description><![CDATA[<span class="dropcap">C</span>SS Best Practices is the topic that I had been planning to write on for months. As CSS is the order of the day as far as web related UI is concerned, more people are moving to it. CSS isn't always easy to deal with. CSS coding can sometimes become a nightmare, particularly if you're not sure which selectors are applied to document elements. CSS Best Practices covers some important and easy to remember tricks and tips to better manage, organise and develop your CSS Snippets.]]></description>
			<content:encoded><![CDATA[<p><span class="dropcap">C</span>SS Best Practices is the topic that I had been planning to write on for months. As CSS is the order of the day as far as web related UI is concerned, more people are moving to it. CSS isn&#8217;t always easy to deal with. CSS coding can sometimes become a nightmare, particularly if you&#8217;re not sure which selectors are applied to document elements. CSS Best Practices covers some important and easy to remember tricks and tips to better manage, organise and develop your CSS Snippets.</p>
<h4>Use a browser reset</h4>
<p>One of the most common mistakes that designers fall victim to when it comes to CSS is not resetting their browser defaults. This leads to inconsistencies in the appearance of your desing across different browsers. So before doing anything else, when coding a website, you should reset the styling. You can use a simple reset with the universal selector like this<br />
<code><br />
* { margin:0;padding:0;}<br />
</code><br />
But using the universal selector is sometimes a bad idea as it is very heavy on the rendering agent to apply rules to every single element in the document.</p>
<p>One of the most popular browser resets is of <a href="http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/" target="_blank">CSS Reset</a> by Eric Meyer. As Meyer says, “the styles should list all the actual elements to be reset and exactly how they should be reset.”</p>
<p>Another Browser Reset Library is Yahoo! UI Library: <a href="http://developer.yahoo.com/yui/reset/" target="_blank">Reset CSS</a>. It removes and neutralizes the default styling of html elements providing a foundation upon which you can explicity declare your extentions.</p>
<p>Another very useful CSS reset is <a href="http://warpspire.com/features/css-frameworks/">CSS Global Styles Reset</a> by Kyle Neath. A simple CSS Reset with some additional classes for better debugging.</p>
<h4>Size text without using pixels</h4>
<p>Web Designing best principles is to enable a site to withstand a user enlarging text and setting absolute text sizes is not a good practice. Instead we can size our text relative to the browser. Standard browser font size is 1em which is equal to 16px. A little web designer trick works around the issue and resets the font sizes for the entire site so that 1em is equal to 10 px.<br />
<code><br />
body { font-size:62.5%; }<br />
</code><br />
Simply throwing the font-size to 62.5% for the entire site does the trick. Now you can use em instead of pixels.</p>
<h4>Organise your CSS Code</h4>
<p>Organising your CSS code helps you with future maintainability of your site. You should make independent style sheets for different purposes and then linke them in your master stylesheet. Like you should maintain your typographic styles and structure selectors independently in different stylesheets and then link them together in your master stylesheet.<br />
<code><br />
@import url("reset.css")<br />
@import url("structure.css")<br />
@import url("typography.css")<br />
</code></p>
<h4>Make your code easy to read</h4>
<p>While scanning through CSS, I came across a very nicely separated CSS coded probably by Rundle. It looked something like this:<br />
<code><br />
h1 {}<br />
h1#title { font-size:2em; }</code></p>
<p>div {}<br />
div#error { color:#eee; }</p>
<p>This technique is very useful if you&#8217;re sharing code or working on a large site where you are using the same div tag in multiple places.</p>
<h4>Document your code</h4>
<p>This might be common sense to some of you but sometimes I look at CSS and it&#8217;s not documented at all. It is always a good practice to document your code or atleast provide a separate heading for a part of code as it makes working with code months or years later easier.<br />
<code><br />
/**********************************/<br />
/* Primary Navigation - Top Links */<br />
/*********************************/<br />
#nav {<br />
border:1px solid #eee;<br />
margin:10px auto;<br />
padding:5px;<br />
}</code></p>
<p>/***************/<br />
/* Search Box */<br />
/**************/<br />
#search-box {<br />
position:absolute;<br />
top:30px;<br />
left:30px;<br />
}</p>
<h4>Keep containers to minimum</h4>
<p>Avoid using too many Divs as it makes your document too much complex and tougher to handle. Avoid block level tags as much as possible and consider all options before using DIVs. New Developers to CSS often mistake DIVs for table cells and maximise their use to achieve the layout. Some people even style their headings with DIVs. Try using small tags or inline tags for goodness sake.</p>
<h4>Use Shorthand CSS</h4>
<p>Work smarter, not harder with CSS. You can wrap multiple properties within a single declaration by using special syntax. Avoid unnecessary properties as it directly effects your troubleshooting efforts.</p>
<h5>Like instead of writing</h5>
<p><code>margin-left:2px;<br />
margin-top:3px;<br />
margin-right:4px;<br />
margin-bottom:5px;<br />
</code></p>
<h5>You can write</h5>
<p><code>margin:3px 4px 5px 2px;<br />
</code><br />
Similarly we can use shorthand for border, background, padding, font and other properties.</p>
<h4>Specify Units</h4>
<p>Always specify units for the Property values unless it is 0. This a very common mistake among CSS beginners. In HTML you can get away with this but in CSS all length values should have a unit. While there&#8217;s no wrong in specifying a unit for 0 value, but for me it&#8217;s only a wastage of space.</p>
<pre class="css">padding:2px 3px 0 10px;</pre>
<h4>Working with Colors</h4>
<p>In hexadecimal notation, a color is represented by three pairs of hexadecimal digits. You can write a color more efficiently by omitting every second digit like this.</p>
<p><code>#ffffff</code> can be written as <code>#fff</code></p>
<p>Similarly <code>#ff3366</code> can be written as <code>#f36</code></p>
<p>Another color related tip is that you can specify web safe colors by using only digits that are multiples of 3 for the red, green and blue.</p>
<h4>Don&#8217;t redeclare inherited values</h4>
<p>The values of many properties are inherited by any descendants of the element that you specify the property for. So there is no fun of redeclaring those properties again and again. Some of the commonly inherited properties are of font and color.<br />
<code><br />
div { font-size:2em;color:#ef321d; }<br />
div.hello { font-size:2em;color:#ef23ef; }<br />
</code></p>
<h5>can be written as</h5>
<p><code>div { font-size:2em;color:#ef321d; }<br />
div.hello { color:#ef23ef; }<br />
</code></p>
<h4>Multiple Classes</h4>
<p>You can assign multiple classes to a single HTML element. This allows you to write several rules that define different properties and only apply them as needed. The multiple classes (assuming .head &amp; .head-about) can be applied to a single element like this.<br />
<code><br />
&lt;div class="head head-about"&gt;This is test for multiple classes&lt;/div&gt;<br />
</code></p>
<h4>Minimise CSS Hacks</h4>
<p>Hacks are the tricks, usually non-standard, to overcome some browser limitations. Don&#8217;t use hacks unless it is a known and documented bug as it makes the future maintenance of the code very difficult in absence of proper documentation and standard coding design.</p>
<h4>Define pseudo classes for links in the LoVe/HAte order</h4>
<p>Link, Visited, Hover &amp; Active, as the above represents. You should define your pseudo classes in this order<br />
<code><br />
a:link { color: blue; }<br />
a:visited { color: purple; }<br />
a:hover { color: purple; }<br />
a:active { color: red; }<br />
</code></p>
<h4>Define generic font families</h4>
<p>“When we declare a specific font to be used within our design, we are doing so in the hope that the user will have that font installed on their system. If they don’t have the font on their system, then they won’t see it, simple as that. What we need to do is reference fonts that the user will likely have on their machine, such as the ones in the font-family property below. It is important that we finish the list with a generic font type. [<a href="http://www.communitymx.com/content/article.cfm?cid=FAF76&amp;print=true">Getting into good coding habits</a>]<br />
<code><br />
p { font-family: Arial, Verdana, Helvetica, sans-serif; }<br />
</code></p>
<h4>1 ID per page, many classes per page</h4>
<p>“Check your IDs: Only one element in a document can have a certain value for the id attribute, while any number of elements can share the same class name. [..] Class and id names can only consist of the characters [A-Za-z0-9] and hyphen (-), and they cannot start with a hyphen or a digit (see CSS2 syntax and basic data types).” [<a href="http://www.456bereastreet.com/lab/developing_with_web_standards/css/" target="_blank">Roger Johansson</a>]</p>
<h4>Horizontally Centering an element</h4>
<p>It is very easy to center an element horizontally using HTML with the align attribute, but there is no such property in the CSS. Instead we use margin to center the element like this</p>
<pre class="css">margin:0 auto;</pre>
<p>Here &#8216;auto&#8217; automatically divides the space left on the sides of element into half and assigns each half on each side of the element</p>
<h4>Conditional Comments of IE</h4>
<p>IE versions less than 7 adhere to CSS standards very less and often create a nasty CSS bug or issue to deal with. You can come around the issue by creating a different style to address the issue and then include the style for only IE using IE conditional comments like this.<br />
<code><br />
&lt;!--[if IE]&gt;<br />
&lt;link rel="stylesheet" type="text/css" href="ie.css" /&gt;<br />
&lt;![endif]--&gt;</code></p>
<p><em>Next Article in Series <a href="http://www.kashit.org/design/css-best-practices-ii/" title="">CSS Best Practices &#8211; II</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kashit.org/design/css-best-practices/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>How to develop Wordpress Themes (Basic)</title>
		<link>http://www.kashit.org/design/how-to-develop-wordpress-themes-basic/</link>
		<comments>http://www.kashit.org/design/how-to-develop-wordpress-themes-basic/#comments</comments>
		<pubDate>Fri, 01 Feb 2008 08:47:30 +0000</pubDate>
		<dc:creator>Ehsan Quddusi</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[HTML + XHTML]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Themes]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://new.kashit.org/?p=25</guid>
		<description><![CDATA[<span class="dropcap">W</span>ordpress, one of the most popular blogging platforms of the world, has a large user base throughout the world. One of the main attractions for its users is the great themes contributed by the thousands of users around the world. Though in general, bloggers use the themes already available and contributed by other users, but sometimes there is a need to customize the theme or create a new theme from the scratch. Without getting to much in the history, let me show you how to create a Wordpress theme with as little expertise as possible. Keep in mind that developing a Wordpress theme doesnot require <strong>PHP</strong> expertise from your side. Just a little of <strong>CSS</strong> and working knowledge of <strong>XHTML / PHP</strong> will work.]]></description>
			<content:encoded><![CDATA[<p><span class="dropcap">W</span>ordpress, one of the most popular blogging platforms of the world, has a large user base throughout the world. One of the main attractions for its users is the great themes contributed by the thousands of users around the world. Though in general, bloggers use the themes already available and contributed by other users, but sometimes there is a need to customize the theme or create a new theme from the scratch. Without getting to much in the history, let me show you how to create a Wordpress theme with as little expertise as possible. Keep in mind that developing a Wordpress theme doesnot require <strong>PHP</strong> expertise from your side. Just a little of <strong>CSS</strong> and working knowledge of <strong>XHTML / PHP</strong> will work.</p>
<h4>Getting into Wordpress Theme</h4>
<p>Before starting the actual development of the theme, we need to understand how Wordpress actually works and how the content is presented to the users. Well, the short answer is that the content in Wordpress is served by themes to the users. Themes in Wordpress is a combination of CSS and PHP files that reside inside a particular directory at a particular place. The ‘particular directory’ meant for storing of theme related stuff is named with the name of theme and this will be the public identity of your theme. The theme directory resides in <strong>wp-content/themes/</strong> directory. Actually, all the Wordpress themes reside under the same directory.</p>
<h4>Structure of Wordpress Theme</h4>
<p>The Wordpress theme mainly consists of four regions viz, header, footer, content &amp; sidebar. You can theme every region with an independent theme file. Wordpress theme essentially consists of two files, one for CSS named <strong>style.css</strong> and another for content named <strong>index.php</strong>. We can run our theme with these two files only and later on add more files to fine tune the theme.</p>
<h4>Get Started</h4>
<p>Let’s start actual theme development. With your favourite text editor or PHP editor, create a blank CSS file inside your theme folder, let’s say <strong>cool-theme</strong>, and name it as <strong>style.css</strong>. Put a few lines of comments at the top like this.<br />
<code><br />
/*Theme Name: cool-theme<br />
Theme URI: http://www.yoursitename.com<br />
Description: My theme is a cool and beautiful theme<br />
Version: 1.0.0<br />
Author: Ehsan Quddusi<br />
Author URI: http://www.authorsitename.com<br />
*/<br />
</code></p>
<p><img class="alignnone size-full wp-image-28" title="wordpress-snapshot" src="http://media.kashit.org/2008/11/wordpress-snapshot.gif" alt="" width="460" height="240" /></p>
<p>Well this is the standard comment style for Wordpress CSS file. Actually this information is read by Wordpress to display it in the theme list alongwith the provided thumbnail. You can see the theme list in admin menu of Wordpress under Presentation heading. All the lines in the above comment are self explanatory and you can well understand what they mean. Now that our CSS file is created with the initial theme information in the form of comment, it is time to create the PHP file to display content on the page. Again using any text editor, let’s create a PHP file named <strong>index.php</strong><br />
Now let’s put some code into it, to display all the posts available there.<br />
<code><br />
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />
&lt;head&gt;<br />
&lt;title&gt; My Wordpress Theme&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;?php if (have_posts()) {<br />
while (have_posts()) {<br />
the_post();<br />
the_title();<br />
echo '&lt;br/&gt;';<br />
}<br />
}?&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</code></p>
<p><img class="alignnone size-full wp-image-29" title="wordpress-snapshot-2" src="http://media.kashit.org/2008/11/wordpress-snapshot-2.gif" alt="" width="460" height="240" /><br />
Wow! you are done. With just a few lines of code, you are able to fetch all the Wordpress Post titles from the database. Let&#8217;s have a look on the above code. HTML code is same as you will be using for normal web development. Now let&#8217;s have a look on PHP code wrapped inside <strong>&lt;?php and ?&gt;</strong>. Here we are using a condition to verify the output and if available loop through it and display contents. Oh! I know you will be feeling boring. Ok let&#8217;s quickly move next. Actually here we are using an in-built function of Wordpress, <strong>have_posts()</strong>, to fetch the contents of the post. The above function first checks for the posts and if available loops through them to fetch content the content of each of them and display their title using <strong>the_title()</strong>.</p>
<p>It is interesting to note that we displayed titles of all the posts with just few lines of code. Let&#8217;s have some fun now. Every post in Wordpress has an <strong>ID</strong> associated with it and we will provide a link to each title to display its content. Let&#8217;s modify the above written PHP code like this.<br />
<code><br />
&lt;?php<br />
if (have_posts()){<br />
while (have_posts()) {<br />
the_post(); ?&gt;<br />
&lt;a href="&lt;?php the_permalink();?&gt;"&gt;&lt;?php the_title();?&gt;&lt;/a&gt;&lt;br/&gt;<br />
&lt;?php if(!is_home()) {<br />
print '&lt;p&gt;';<br />
the_content();<br />
print '&lt;/p&gt;';<br />
}<br />
}<br />
}<br />
?&gt;<br />
</code></p>
<p><img class="alignnone size-full wp-image-30" title="wordpress-snapshot-3" src="http://media.kashit.org/2008/11/wordpress-snapshot-3.gif" alt="" width="460" height="203" /></p>
<p>And here it is. Magic! as you can see. Again by adding 4 lines of code, we are able to provide a link to each post title to show its contents on an independent page. This is the beauty of Wordpress. Minimising as much code as possible and maximising productivity.</p>
<p>We will now update our code again to display category with each post as well as date of posting and author.<br />
<code><br />
&lt;?php<br />
if (have_posts()){<br />
while (have_posts()) {<br />
the_post(); ?&gt;<br />
&lt;a href="&lt;?php the_permalink();?&gt;"&gt;&lt;?php the_title();?&gt;&lt;/a&gt;&lt;br/&gt;<br />
Posted under &lt;strong&gt;&lt;?php the_category(',');?&gt;&lt;/strong&gt; at &lt;strong&gt;&lt;?php the_time('F jS, Y');?&gt;&lt;/strong&gt; by &lt;strong&gt;&lt;?php the_author();?&gt;&lt;/strong&gt;&lt;hr/&gt;<br />
&lt;?php if(!is_home()) {<br />
print '&lt;p&gt;';<br />
the_content();<br />
print '&lt;/p&gt;';<br />
}<br />
}<br />
}<br />
?&gt;<br />
</code></p>
<p><img class="alignnone size-full wp-image-31" title="wordpress-snapshot-4" src="http://media.kashit.org/2008/11/wordpress-snapshot-4.gif" alt="" width="460" height="203" /></p>
<p>And we are done. By putting a single line of code, we have been able to derieve post category, post date &amp; post title for each post. Wordpress API provides all the theme related functions to minimize custom coding. As you can see we used three function in the above written one line. <strong>the_category()</strong> function is responsible for deriving categories of each post separated by supplied argument <strong>&#8216;,&#8217;</strong>. We can pass many optional arguments to the <strong>the_catgory()</strong> function to exclude some categories or provide post counts etc. Another function used is <strong>the_time(&#8216;F jS, Y&#8217;)</strong>, meant for displaying date of the post while as <strong>the_author</strong> displays the link for the author alongwith his/her name. This ends the basic tutorial on Wordpress theming.</p>
<p>One thing to note is that Wordpress allows splitting of code into multiple files for the sake of manageability and granular control over design. Till now we have used only one file in our theme. In the next tutorial we will be using multiple files for theming to achieve granular control along with doing some designing using CSS.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kashit.org/design/how-to-develop-wordpress-themes-basic/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>PNG Transparency for Internet Explorer</title>
		<link>http://www.kashit.org/design/png-transparency-for-internet-explorer/</link>
		<comments>http://www.kashit.org/design/png-transparency-for-internet-explorer/#comments</comments>
		<pubDate>Thu, 24 Jan 2008 08:18:25 +0000</pubDate>
		<dc:creator>Ehsan Quddusi</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[HTML + XHTML]]></category>

		<guid isPermaLink="false">http://new.kashit.org/?p=18</guid>
		<description><![CDATA[<span class="dropcap">L</span>ike GIFs and JPEGs, PNG images are ideal for web use. Like GIFs, the PNG is great for displaying small images with few colors, like logos and icons. Also, PNGs sport a few advantages over GIF images. Most notably, they support <em>alpha transparency</em>.

What is <strong>alpha-transparency</strong>? GIF files are only capable of displaying a pixel as either completely transparent or completely opaque: this is known as <em>binary transparency</em>. When an image contains <em>alpha layers</em>, however, parts of an image can be <em>partially</em> transparent. You can specify a level of transparency from 0 to 255.]]></description>
			<content:encoded><![CDATA[<p><span class="dropcap">L</span>ike GIFs and JPEGs, PNG images are ideal for web use. Like GIFs, the PNG is great for displaying small images with few colors, like logos and icons. Also, PNGs sport a few advantages over GIF images. Most notably, they support <em>alpha transparency</em>.</p>
<p>What is <strong>alpha-transparency</strong>? GIF files are only capable of displaying a pixel as either completely transparent or completely opaque: this is known as <em>binary transparency</em>. When an image contains <em>alpha layers</em>, however, parts of an image can be <em>partially</em> transparent. You can specify a level of transparency from 0 to 255.</p>
<p>PNGs thus have the potential for creating some interesting effects on a web page, like translucent background images and drop-shadows. But despite their advantages over GIFS, PNGs aren’t nearly as popular as GIFs web design, primarily because of the impression that PNGs don’t enjoy wide browser support.</p>
<p>This view on PNGs is a bit of a misconception.</p>
<p>While Internet Explorer for Windows 6 (IE6) and previous versions of IE don’t support PNGs’<a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#Transparency_of_image"> alpha-transparency</a> feature, all popular browsers can display PNGs.</p>
<p>While IE6- doesn’t explicitly support alpha-transparency out-of-the-box, if you will, there is a workaround that ensures PNG’s cross-browser compatibility.</p>
<p>Microsoft has a plethora of proprietary <a href="http://msdn2.microsoft.com/en-us/library/ms532847.aspx">visual filters and transitions</a> that are available to IE4+. These filters are designed to apply various multimedia affects (transition wipes, light effects and so on) to images in a web page that are viewed with IE. One of these image filters — AlphaImageLoader —  lets you display a PNG with alpha-transparency in IE6.</p>
<p>You can employ this filter within the HTML of your page by creating a <code>div</code> element and embedding into it a bit of CSS:</p>
<p><code><br />
&lt;div style=”position:relative; height: 188px; width: 188px;<br />
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader<br />
(src='images/image.png',sizingMethod='scale');”&gt;&lt;/div&gt;<br />
</code></p>
<p>The key property here is the &#8216;filter&#8217; property. While filter is not valid CSS, it does allow you to apply the AlphaImageLoader filter to the image specified in the parentheses. However, since it isn’t standards-compliant, you may wish to apply this property only as needed (i.e., only when the page is being displayed in IE6-).</p>
<p>By combining this method, developers can build rich image-based designs with alpha transparency like they would for modern browsers like Safari, Firefox, and Internet Explorer 7 that all supports PNG alpha alpha transparency natively.</p>
<h3>How to Include PNG Transparency in IE6</h3>
<p>One available method for doing this is employing Angus Turnbull’s .htc script:</p>
<ul>
<li>First, download the .htc script at <a href="http://www.twinhelix.com/css/iepngfix/">TwinHelix Designs</a>. HTC is  a<br />
scripting language<br />
only usable by Internet Explorer (because it was created by Microsoft) and this specific script contains applies the AlphaImageLoader filter to all images within a web page.</li>
<li>After downloadign the script, upload the script to your Web server.</li>
<li>Then, create (or download from TwinHelix) a blank gif file. This image file is 1×1 pixel with the color set as transparent. (Back in the 90s, these were called these gems “<a href="http://www.devx.com/projectcool/Article/19937">single pixel GIFs</a>“). Within the <code>.htc</code> script, change the line that references the <code>blank.gif</code> file so that it points to the gif’s location on the server.</li>
<li>Create a separate CSS file (we’ll name it <code>ie.css</code>), and include within in the following single line, referencing the location of the <code>.htc</code> file:
<p><code><br />
img { behavior: url(iepngfix.htc); }<br />
</code></p>
<p>The <code>behavior</code> property let’s you attach a script to some selector (in this case, all<code> img </code>elements). So, this CSS file  attaches the <code>.htc</code> file to all of your images, thus applying the desired filter effect to every image within a web page.</li>
<li>But, we only want to load this CSS file when the page is viewed in IE6-. To do this, just add the following <a href="http://msdn2.microsoft.com/en-us/library/ms537512.aspx">conditional comment</a> to your page’s header:<br />
<code><br />
&lt;!--[if lte IE 6]&gt;<br />
&lt;link rel="stylesheet" type="text/css" media="screen" href="ie.css" /&gt;<br />
&lt;![endif]--&gt;<br />
</code><br />
Conditional comments like these are understood by IE. What the comment says is, “if the browser is IE6 or below, then read the lines within the comment tags. Otherwise, ignore them.” Conditional comments provide a convenient way of applying IE-specific HTML or CSS. Here, the <code>ie.css</code> stylesheet  loads only if the page is displayed in IE6-, letting you apply the non-compliant CSS only when it’s <em>absolutely</em> necessary.</li>
</ul>
<p>While a rather convoluted way to get transparent PNGs working in your web pages (although less convulted than, it does provide a method that is as standards-compliant as possible, giving you the freedom to include the beauty of semi-transparent layers in your designs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kashit.org/design/png-transparency-for-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
