<?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>thought snippets &#187; ie6</title>
	<atom:link href="http://blog.u-blue.com/tag/ie6/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.u-blue.com</link>
	<description>a little bit of everything</description>
	<lastBuildDate>Tue, 08 Nov 2011 03:42:46 +0000</lastBuildDate>
	<language>TH</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>IE6 ให้(ช่องว่าง)คุณมากกว่า</title>
		<link>http://blog.u-blue.com/2010/01/22/ie6-more-for-you/</link>
		<comments>http://blog.u-blue.com/2010/01/22/ie6-more-for-you/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 13:24:21 +0000</pubDate>
		<dc:creator>nice</dc:creator>
				<category><![CDATA[webdev]]></category>
		<category><![CDATA[ie6]]></category>

		<guid isPermaLink="false">http://u-blue.com/blog/?p=30</guid>
		<description><![CDATA[ปรากฎการณ์ลึกลับที่เกิดขึ้นมากมายใน ie6 ทำให้คนทำเว็บอย่างเราๆต้องเสียเวลาไปมากในการมานั่งตามแก้ไข ซึ่งหนึ่งในปัญหาสำคัญที่เจอใน ie6 คือปัญหาที่เกี่ยวกับการใช้ float กรณีศึกษา &#8220;กล่องหล่น&#8221; ทดลองสร้างกล่อง 2 กล่อง กล่องละ 200px(รวมขอบแล้ว) อยู่ภายใต้กล่องขนาดใหญ่ขนาด 400px โดยให้ทั้งสองกล่อง float ไปทางซ้าย และกล่องแรกอยู่ห่างจากขอบด้านซ้าย 5 pixels เมื่อดูใน ie8(และบราวเซอร์อื่นๆ) จะได้ผลลัพท์ที่ถูกต้อง ดังนี้ แต่ถ้าดูใน ie6 หล่ะ? งานเข้าหล่ะสิ มันเกิดอะไรขึ้นเนี่ย กรอบขนาด 400 ใส่กล่องขนาด 200 สองชิ้น ก็รวมเป็น 400 พอดี แล้วทำไมมันตกลงมาได้ ???! ก่อนที่จะถอนหายใจเฮือกใหญ่แล้วเปลี่ยนใจกลับไปใช้ table ลองมาศึกษาปัญหาอย่างเป็นระบบ แล้วหาทางแก้ไขอย่างถูกต้อง(เท่าที่จะถูกได้ใน ie6) เพื่อชีวิตที่ดีกว่า มาดูโค้ทกันก่อน อันแรกเป็น css div#container{ width: 400px; border:1px solid ]]></description>
			<content:encoded><![CDATA[<p>ปรากฎการณ์ลึกลับที่เกิดขึ้นมากมายใน ie6 ทำให้คนทำเว็บอย่างเราๆต้องเสียเวลาไปมากในการมานั่งตามแก้ไข ซึ่งหนึ่งในปัญหาสำคัญที่เจอใน ie6 คือปัญหาที่เกี่ยวกับการใช้ float</p>
<p><strong>กรณีศึกษา &#8220;กล่องหล่น&#8221;</strong><br />
ทดลองสร้างกล่อง 2 กล่อง กล่องละ 200px(รวมขอบแล้ว) อยู่ภายใต้กล่องขนาดใหญ่ขนาด 400px โดยให้ทั้งสองกล่อง float ไปทางซ้าย และกล่องแรกอยู่ห่างจากขอบด้านซ้าย 5 pixels</p>
<p>เมื่อดูใน ie8(และบราวเซอร์อื่นๆ) จะได้ผลลัพท์ที่ถูกต้อง ดังนี้<br />
<div id="attachment_52" class="wp-caption alignnone" style="width: 422px"><a href="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-10.08.32-PM.png"><img src="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-10.08.32-PM.png" alt="" title="boxes in ie8" width="412" height="38" class="size-full wp-image-52" /></a><p class="wp-caption-text">IE8 Boxes</p></div></p>
<p>แต่ถ้าดูใน ie6 หล่ะ?</p>
<p><div id="attachment_53" class="wp-caption alignnone" style="width: 425px"><a href="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-10.08.39-PM.png"><img src="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-10.08.39-PM.png" alt="" title="Boo! its IE6" width="415" height="56" class="size-full wp-image-53" /></a><p class="wp-caption-text">โค้ทเดิม ใน IE6</p></div><br />
งานเข้าหล่ะสิ มันเกิดอะไรขึ้นเนี่ย กรอบขนาด 400 ใส่กล่องขนาด 200 สองชิ้น ก็รวมเป็น 400 พอดี แล้วทำไมมันตกลงมาได้ ???! </p>
<p>ก่อนที่จะถอนหายใจเฮือกใหญ่แล้วเปลี่ยนใจกลับไปใช้ table ลองมาศึกษาปัญหาอย่างเป็นระบบ แล้วหาทางแก้ไขอย่างถูกต้อง(เท่าที่จะถูกได้ใน ie6) เพื่อชีวิตที่ดีกว่า<br />
<span id="more-30"></span><br />
มาดูโค้ทกันก่อน อันแรกเป็น css</p>
<pre class="brush:css">
div#container{
	width: 400px;
	border:1px solid black;
}
div#left{
	background: red;
	width:195px;
	margin-left:5px;
	float:left;
}
div#right{
	background: green;
	width:200px;
	float:left;
}
</pre>
<p>และ html</p>
<pre class="brush:xml">
<div id="container">
<div id="left">This is left content</div>
<div id="right">This is right content</div>
</div>
</pre>
<p>จะเห็นว่ามีกรอบ ขนาด 400 pixels และใส่กล่องเข้าไป 2 กล่อง คือ<br />
- left ขนาด 195px รวมระยะห่างจากขอบ 5px เป็น 200px<br />
- และ right ขนาด 200px</p>
<p>ถึงตอนนี้หลายๆคนอาจจะกลับมานั่งบวกลบคูณหารใหม่(แล้วก็แอบคิดว่าเราตกเลขหรือเปล่า) แต่คำนวนยังไงมันก็ไม่ผิดนี่หว่า แล้วมันเกิดอะไรขึ้น?</p>
<blockquote><p>สิ่งที่เกิดก็คือ เมื่อมีการใช้คำสั่ง float แล้วให้มีช่องว่าง(margin) ในด้านที่ float ไป เจ้า ie6 จะทำการเบิ้ลช่องว่างนั้นไปอีกเท่าตัวโดยไม่มีสาเหตุ หรือที่รู้จักกันในนามว่า Double Margin Bug
</p></blockquote>
<p><strong>ช่องว่างระหว่างเรา</strong><br />
ทดลองดูปัญหากันแบบชัดๆ ลองเขียน css ดังนี้</p>
<pre class="brush:css">div#foo {
   float: left;
   border: 1px solid red;
   width: 50px;
   height: 50px;
   margin: 50px;
}</pre>
<p>คือ สร้างกล่อง ขนาด 50&#215;50 กรอบสีแดง และให้มีช่องว่างขนาด 50 pixel รอบๆกล่อง<br/><br />
จากนั้นก็เอาไปใส่ใน html แบบนี้</p>
<pre class="brush:xml">
<div id="foo"></div>
</pre>
<p>ดูๆโค้ทแล้วก็ไม่น่าจะมีอะไร แต่ลองเปิดดูใน ie6 เทียบกับ ie8</p>
<div id="attachment_44" class="wp-caption alignleft" style="width: 144px"><a href="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-7.52.41-PM.png"><img class="size-full wp-image-44 " title="Screen shot 2010-01-22 at 7.52.41 PM" src="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-7.52.41-PM.png" alt="" width="134" height="132" /></a><p class="wp-caption-text">IE8</p></div>
<div id="attachment_45" class="wp-caption alignleft" style="width: 186px"><a href="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-7.53.10-PM.png"><img class="size-full wp-image-45 " title="Screen shot 2010-01-22 at 7.53.10 PM" src="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-7.53.10-PM.png" alt="" width="176" height="130" /></a><p class="wp-caption-text">IE6</p></div>
<p style="clear:both">จะเห็นว่าใน ie6 มีช่องว่างเพิ่มขึ้นมาทางด้านซ้ายอีก 50 pixels หรืออีกเท่าตัวของที่ตั้งไว้</p>
<p><strong>แก้ยังไงหล่ะ?</strong><br />
วิธีแก้ไขนี้ไม่ยาก แต่ขัดใจพอสมควร ก็คือการเพิ่ม display:inline เข้าไปยังกล่องที่มีปัญหา ดังนี้</p>
<pre class="brush:css">
div#foo {
   width: 50px;
   height: 50px;
   margin: 50px;
   float:left;
   border: 1px solid red;
   display:inline;
}
</pre>
<p>ผลลัพท์ใน ie6<br />
<div id="attachment_60" class="wp-caption alignnone" style="width: 162px"><a href="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-10.50.53-PM.png"><img src="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-10.50.53-PM.png" alt="" title="ie6 after" width="152" height="152" class="size-full wp-image-60" /></a><p class="wp-caption-text">IE6 after display:inline</p></div><br />
จะเห็นว่าพื้นที่ว่างที่เพิ่มมาหายไปแล้ว ทีนี้ลองมาทำในกรณีกล่องหล่นของเราบ้าง<br />
เพิ่มโค้ท display:inlie เข้าไป</p>
<pre class="brush:css">
div#left{
	background: red;
	width:195px;
	margin-left:5px;
	float:left;
	display:inline;
}
</pre>
<p>ลองดูผลลัพท์<br />
<div id="attachment_62" class="wp-caption alignnone" style="width: 423px"><a href="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-10.56.01-PM.png"><img src="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-10.56.01-PM.png" alt="" title="IE6 boxes after" width="413" height="40" class="size-full wp-image-62" /></a><p class="wp-caption-text">IE6 กล่องไม่หล่นแล้ว!</p></div></p>
<p><strong>สรุป</strong><br />
จะเห็นว่าปัญหาที่เกิดมันดูไม่มีที่มาที่ไป และวิธีแก้ก็ไม่ค่อยถูกต้องตาม standard เท่าไหร่นัก(ตามหลักแล้ว element ที่ float จะไม่เป็น inline และจะไม่กำหนดความกว้างของ element ที่เป็น inline) แต่การรู้ปัญหาอย่างชัดเจนก็น่าจะช่วยให้แก้ปัญหาที่เจอได้อย่างมีหลักการมากขึ้นและเสียเวลาน้อยลง ซึ่งเจ้ากล่องหล่นนี้ไม่ใช่ปัญหาเดียวที่พบบ่อยใน ie6 ถ้าจะเอาทั้งหมดมาเขียนก็รวมกันได้เป็นมหากาพย์เลยทีเดียว ก็ได้แต่หวังว่าจำนวนผู้ใช้ ie6 ในบ้านเราจะลดลง(อย่างรวดเร็ว) เหมือนบ้างเมืองอื่นเขาซักที</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.u-blue.com/2010/01/22/ie6-more-for-you/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ie6.png !</title>
		<link>http://blog.u-blue.com/2008/12/08/ie6-png/</link>
		<comments>http://blog.u-blue.com/2008/12/08/ie6-png/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 16:16:15 +0000</pubDate>
		<dc:creator>nice</dc:creator>
				<category><![CDATA[webdev]]></category>
		<category><![CDATA[ie6]]></category>

		<guid isPermaLink="false">http://u-blue.com/blog/?p=74</guid>
		<description><![CDATA[ไฟล์ .png กับการทำเว็บสมัยนี้เป็นของคู่กัน ซึ่งคนที่รู้จักกับมันแล้วจะลืม .gif ไปเลย หลักๆคือความสามารถในการทำให้ส่วนใดๆของภาพโปร่งแสง(transparent) และพื้นหลังใสได้อย่างสนิทใจ แต่ปัญหามันก็เกิดกับบราวเซอร์ที่รักเจ้าเก่าของเรา ไม่ใช่ใครที่ไหน ie6 นั่นเอง สำหรับคนทำเว็บแล้วก็อยากจะลืมๆเจ้าบราวเซอร์นี้มันไปซะ แต่พอเหลือบมาดูสถิติ browser ที่ใช้กันในบ้านเราแล้วก็ไม่สามารถจริงๆ (Truehits.net::2008-11 IE6 51.1%) ดังนั้นก็ต้องมาตามแก้กันไป วิธีทำให้ไฟล์ png แสดงผลได้อย่างปกติสุขใน ie6 นั้นมีหลายวิธีแล้วแต่ความถนัด สำหรับวิธีที่จะพูดถึงนี้ส่วนตัวแล้วชอบเพราะว่าไม่ต้องดัดแปลงโค้ทมากนัก ก่อนอื่นก็มาดูการแสดงผลไฟล์ png ของ ie6 เทียบกับ ie7 กันก่อน จะเห็นว่าใน ie6 นั้นส่วนพื้นหลังมันไม่ใสจริง แต่มีพื้นที่สีเทาๆมาทับ background(รูปไม้บรรทัด) ด้านข้างหมด คราวนี้มาดูวิธีแก้กัน IE PNG FIX โค้ทที่ใช้แก้นี้คือ iepngfix ต้นฉบับคือ Twin Helix: IE PNG Fix วิธีใช้งานก็ง่ายๆ ไม่ปวดสมอง โดย ดาวน์โหลดไฟล์ ]]></description>
			<content:encoded><![CDATA[<p>ไฟล์ .png กับการทำเว็บสมัยนี้เป็นของคู่กัน ซึ่งคนที่รู้จักกับมันแล้วจะลืม .gif ไปเลย หลักๆคือความสามารถในการทำให้ส่วนใดๆของภาพโปร่งแสง(transparent) และพื้นหลังใสได้อย่างสนิทใจ</p>
<p>แต่ปัญหามันก็เกิดกับบราวเซอร์ที่รักเจ้าเก่าของเรา ไม่ใช่ใครที่ไหน ie6 นั่นเอง สำหรับคนทำเว็บแล้วก็อยากจะลืมๆเจ้าบราวเซอร์นี้มันไปซะ แต่พอเหลือบมาดูสถิติ browser ที่ใช้กันในบ้านเราแล้วก็ไม่สามารถจริงๆ (Truehits.net::2008-11 IE6 51.1%) ดังนั้นก็ต้องมาตามแก้กันไป</p>
<p>วิธีทำให้ไฟล์ png แสดงผลได้อย่างปกติสุขใน ie6 นั้นมีหลายวิธีแล้วแต่ความถนัด สำหรับวิธีที่จะพูดถึงนี้ส่วนตัวแล้วชอบเพราะว่าไม่ต้องดัดแปลงโค้ทมากนัก ก่อนอื่นก็มาดูการแสดงผลไฟล์ png ของ ie6 เทียบกับ ie7 กันก่อน</p>
<div id="attachment_78" class="wp-caption alignnone" style="width: 208px"><a href="http://u-blue.com/blog/wp-content/uploads/2010/01/ie.png"><img class="size-full wp-image-78 " title="ie" src="http://u-blue.com/blog/wp-content/uploads/2010/01/ie.png" alt="" width="198" height="202" /></a><p class="wp-caption-text">Original PNG File</p></div>
<div class="mceTemp" style="text-align: center;">
<div id="attachment_86" class="wp-caption alignleft" style="width: 235px"><a href="http://u-blue.com/blog/wp-content/uploads/2010/01/ie7.png"><img class="size-full wp-image-86" title="ie7" src="http://u-blue.com/blog/wp-content/uploads/2010/01/ie7.png" alt="" width="225" height="234" /></a><p class="wp-caption-text">IE7</p></div>
</div>
<div id="attachment_84" class="wp-caption alignleft" style="width: 237px"><a href="http://u-blue.com/blog/wp-content/uploads/2010/01/ie6-11.png"><img class="size-full wp-image-84" title="ie6-1" src="http://u-blue.com/blog/wp-content/uploads/2010/01/ie6-11.png" alt="" width="227" height="233" /></a><p class="wp-caption-text">IE6 !!!</p></div>
<p style="clear: both;">
<p style="clear: both;">จะเห็นว่าใน ie6 นั้นส่วนพื้นหลังมันไม่ใสจริง แต่มีพื้นที่สีเทาๆมาทับ background(รูปไม้บรรทัด) ด้านข้างหมด คราวนี้มาดูวิธีแก้กัน</p>
<p style="clear: both;"><span id="more-74"></span><strong>IE PNG FIX</strong></p>
<p style="clear: both;">โค้ทที่ใช้แก้นี้คือ iepngfix ต้นฉบับคือ <a href="http://www.twinhelix.com/css/iepngfix/">Twin Helix: IE PNG Fix</a></p>
<p style="clear: both;">วิธีใช้งานก็ง่ายๆ ไม่ปวดสมอง โดย</p>
<ol>
<li>ดาวน์โหลดไฟล์ iepngfix.zip ได้ที่เว็บต้นฉบับเลย</li>
<li>แตกซิปแล้วนำไฟล์ iepngfix.htc กับ blank.gif ไปใว้ในโฟลเดอร์ที่ต้องการ</li>
<li>เพิ่ม style เข้าไปในไฟล์ html คือ
<pre class="brush:xml">
<!--[if lte IE 6]>
<style type="text/css">
img, div, input { behavior: url("iepngfix.htc") }
</style>

<![endif]--> </pre>
<p>โดยที่ url(&#8220;iepngfix.htc&#8221;) ใส่เป็น path เรียกไปหาไฟล์นี้ ทั้งหมดใส่ไว้ใน tag lte IE6 เพื่อบราวเซอร์อื่นๆ รวมทั้ง ie7+ จะได้ไม่ต้องสนใจมัน</li>
</ol>
<p>จากนั้นรีเฟรชดูใหม่ใน ie6<br />
<div id="attachment_89" class="wp-caption alignnone" style="width: 239px"><a href="http://u-blue.com/blog/wp-content/uploads/2010/01/ie6-after-ie.png"><img src="http://u-blue.com/blog/wp-content/uploads/2010/01/ie6-after-ie.png" alt="" title="ie6-after-ie" width="229" height="239" class="size-full wp-image-89" /></a><p class="wp-caption-text">IE6 ใช้ได้แล้ว!</p></div></p>
<p>หมายเหตุ: หากไฟล์ iepngfix.htc และ blank.gif ไม่ได้อยู่ที่เดียวกัน ให้เปิดไฟล์ iepngfix.htc ด้วย notepad และแก้ไข path ที่ IEPNGFix.blankImg = thisFolder + &#8216;blank.gif&#8217;; &lt;&#8211;อาจแก้เป็น absolute path เช่น IEPNGFix.blankImg =&#8217;/images/blank.gif&#8217;;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.u-blue.com/2008/12/08/ie6-png/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

