<?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>Học thiết kế web theo chuẩn. &#187; CSS</title>
	<atom:link href="http://www.izwebz.com/category/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.izwebz.com</link>
	<description>You aren&#039;t just a visitor</description>
	<lastBuildDate>Sat, 04 Feb 2012 12:43:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Giới thiệu 960 Grid &#8211; CSS Framework</title>
		<link>http://www.izwebz.com/css/gioi-thieu-960-grid-css-framework/</link>
		<comments>http://www.izwebz.com/css/gioi-thieu-960-grid-css-framework/#comments</comments>
		<pubDate>Fri, 11 Feb 2011 15:00:06 +0000</pubDate>
		<dc:creator>Demon Warlock</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.izwebz.com/?p=2770</guid>
		<description><![CDATA[960 Grid là một CSS Framework, mục đích của nó là giúp những người thiết kế web có thể tiết kiệm thời gian, công sức cho những công việc phải lặp đi lặp lại. Tuy đây là một framework rất phổ biến nhưng lại thiếu trầm trọng tài liệu hướng dẫn. Nếu đây là lần [...]]]></description>
			<content:encoded><![CDATA[<p>960 Grid là một CSS Framework, mục đích của nó là giúp những người thiết kế web có thể tiết kiệm thời gian, công sức cho những công việc phải lặp đi lặp lại. Tuy đây là một framework rất phổ biến nhưng lại thiếu trầm trọng tài liệu hướng dẫn. Nếu đây là lần đầu tiên bạn mới làm quen với 960 Grid, thì bạn không khỏi bối rối khi xem mã của nó. Trong bài này chúng ta sẽ khám phá những tính năng của 960 Grid và cách sử dụng nó.</p>
<p><span id="more-2770"></span></p>
<p>
Trước đây tôi luôn nghĩ là những CSS Framework không thực sự cần thiết bởi vì CSS rất đơn giản và trực quan. Chúng ta không cần phải nhờ đến sự hỗ trợ của framework để hoàn thành giao diện một trang web. Cho đến khi có nhiều người email về hỏi cách sử dụng 960 Grid, qua tìm hiểu sơ qua về framework này, thì tôi biết rằng &#8230;. rất có thể tôi đã sai lầm khi nghĩ về các CSS Framework.</p>
<p>
Đã bao nhiêu lần bạn phải float một cột sang trái, một cột sang phải, float logo sang trái, navigation sang phải, tính toán kích thước của từng thành phần để khỏi bị vỡ giao diện v.v..? Tôi cũng vậy và còn nhiều designer khác cũng thế. 960 Grid ra đời để giúp bạn giản lược những bước này và cho phép bạn bắt tay ngay vào phần trình bày nội dung.</p>
<h5>960 Grid hoạt động như thế nào</h5>
<p>960 Grid được thiết kế dựa trên một mạng lưới tọa độ. Các thành phần của trang web sẽ được sắp xếp nằm trong những mạng lưới này và toàn bộ trang web có chiều rộng là 960 Pixel. Sở dĩ nó là 960 mà không phải là những số khác là vì kích thước này phù hợp với đa số các độ phân giải màn hình và cũng rất dễ để chia đều cho các cột. Các cột có margin là 20px, đây cũng là kích thước margin phổ biến nhất để nội dung nhìn thoáng đãng và không bị rối.</p>
<div class="tutorial-image"><img src="http://www.izwebz.com/wp-content/uploads/demon/images/960grid/bg.png" alt="960 grid" width="580" />  </div>
<p><a href="http://960.gs/" target="_blank">960 Grid</a> có 3 mạng lưới chính, giao diện 12 cột, 16 cột và 24 cột. Tuy số lượng cột khác nhau nhưng kích thước không vượt quá 960 Pixel. Trong đa số các trường hợp, bạn có thể sử dụng giao diện 12 cột để thiết kế. Nhưng nếu bạn muốn có mạng lưới nhỏ hơn để tinh chỉnh các thành phần phức tạp hơn, thì bạn có thể sử dụng giao diện 16 và 24 cột. Trong bài này chúng ta sẽ nghiên cứu về giao diện 12 cột, cách áp dụng cho 2 giao diện còn lại hoàn toàn tương tự.</p>
<h5>Cách sử dụng 960 Grid</h5>
<p>Trước khi bạn có thể sử dụng được 960 Grid, bạn phải <a href="http://github.com/nathansmith/960-Grid-System/zipball/master" target="_blank">download CSS Framework</a> này về đã. Sau khi <a href="http://github.com/nathansmith/960-Grid-System/zipball/master" target="_blank">download</a> và giải nén bạn sẽ có một số thư mục như hình dưới:</p>
<div class="tutorial-image"><img src="http://www.izwebz.com/wp-content/uploads/demon/images/960grid/folder.png" alt="960 grid" />  </div>
<p>Trong bài này bạn chỉ cần quan tâm đến thư mục <strong>code</strong>. Trong đây sẽ có những file CSS như: reset.css, text.css và 960.css. Quan trọng nhất là file <strong>960.css</strong>. Hai file kia bạn có thể giữ hoặc xóa tùy ý, nó chỉ có tác dụng reset thôi. Đa phần thì bạn nên giữ lại vì nó chứa những kiểu reset tốt nhất cho trang web.</p>
<p>Bạn cũng nên lưu ý nó có hai phiên bản: một đã nén với dung lượng nhỏ hơn còn một phiên bản chưa nén để chúng ta có thể làm việc với nó. Nếu bạn muốn làm trên trang web thật, thì hãy dùng phiên bản đã nén để giảm dung lượng xuống. Còn nếu bạn đang tập làm thì dùng phiên bản chưa nén để có thể xem code bên trong như thế nào.</p>
<p>Để sử dụng 960 Grid, bạn cần chèn đoạn mã sau vào phần <span class='post-span'>&lt;head&gt;</span> của tài liệu HTML, như cách chúng ta liên kết đến các file CSS thông thường.</p>
<pre class="brush: xml; title: ;">
&lt;head&gt;
	&lt;meta charset='UTF-8' /&gt;
	&lt;title&gt;Izwebz - 960 Grid System Intro&lt;/title&gt;
	&lt;link rel='stylesheet' href='css/reset.css' /&gt;
	&lt;link rel='stylesheet' href='css/960.css' /&gt;
	&lt;link rel='stylesheet' href='css/style.css' /&gt;
&lt;/head&gt;
</pre>
<p>Thường thì bạn nên giữ nguyên file <strong>960.css</strong> mà không cần thay đổi gì cả. Bạn chèn thêm một file <strong>style.css</strong> vào và bạn có thể thêm những dòng code của mình vào file này.</p>
<h5>Làm việc với 960 Grid System</h5>
<p>Khi bạn xem biểu đồ dưới đây, hãy tưởng tượng mỗi một hộp sẽ là một CSS Class trong hệ thống 960 Grid. Để tạo một đối tượng với kích thước bằng các cột này, bạn chỉ cần gán một class tương ứng cho nó. Những CSS Class này được đặt tên theo thứ tự từ <span class='post-span'>grid_1</span> cho đến <span class='post-span'>grid_12</span>. Class <span class='post-span'>grid_1</span> sẽ là cột có kích thước nhỏ nhất và <span class='post-span'>grid_12</span> sẽ là cột có kích thước lớn nhất.</p>
<div class="tutorial-image"><img src="http://www.izwebz.com/wp-content/uploads/demon/images/960grid/bg.png" alt="960 grid" width="580" />  </div>
<p>Trong giao diện 12 cột mà chúng ta sẽ sử dụng trong bài này, mỗi cột có kích thước là 60px và sẽ tăng dần lên 80px cho mỗi cột kế tiếp. Do vậy nếu bạn muốn một đối tượng có kích thước là 380px thì bạn sẽ phải dùng 5 cột và trong mã HTML bạn sẽ khai báo như sau.</p>
<pre class="brush: xml; title: ;">&lt;div class=&quot;grid_5&quot;&gt;&lt;/div&gt;</pre>
<p>Với sự trợ giúp của những class này, bạn có thể dựng một giao diện phức tạp chỉ trong vòng một thời gian rất ngắn. Để cho đối tượng có chiều rộng tối đa là 940 Pixel, thì bạn chỉ cần khai báo cho đối tượng đó có class là <span class='post-span'>grid_12</span> trong tài liệu HTML.</p>
<pre class="brush: xml; title: ;">
&lt;div id=&quot;bigBox&quot; class=&quot;grid_12&quot;&gt;
	&lt;p&gt;Big box&lt;/p&gt;
&lt;/div&gt;
</pre>
<div class="tutorial-image"><img src="http://www.izwebz.com/wp-content/uploads/demon/images/960grid/bigbox.png" alt="960 grid" width="580" />  </div>
<p>Để ba cột còn lại nằm song song với nhau thì bạn cần viết mã HTML như sau:</p>
<pre class="brush: xml; title: ;">&lt;div id=&quot;wrapper&quot; class=&quot;container_12&quot;&gt;
   &lt;div id=&quot;first&quot; class=&quot;grid_4&quot;&gt;Cột 1&lt;/div&gt;
   &lt;div id=&quot;second&quot; class=&quot;grid_4&quot;&gt;Cột 2&lt;/div&gt;
   &lt;div id=&quot;third&quot; class=&quot;grid_4&quot;&gt;Cột 3&lt;/div&gt;
&lt;/div&gt;</pre>
<div class="tutorial-image"><img src="http://www.izwebz.com/wp-content/uploads/demon/images/960grid/grid_3.png" alt="960 grid" width="580" />  </div>
<p>Ở đây bạn chú ý rằng để hệ thống này hoạt động đúng đắn, bạn phải tạo một thẻ <span class='post-span'>&lt;div class=&#8221;container_12&#8243;&gt;</span> bao quanh lấy các thành phần khác. Sau đó bạn sẽ đặt tên các class theo số lượng cột mà bạn muốn. </p>
<h5>Push và Pull</h5>
<p>Nếu bạn xem trong file 960.css khi tải về, bạn sẽ thấy có 2 class là <span class='post-span'>.pull_1</span> đến <span class='post-span'>.pull_12</span> và <span class='post-span'>push_1</span> đến <span class='post-span'>push_12</span>. Hai Class này được sử dụng để thay đổi vị trí của các thành phần trên trang theo chiều ngang. Ví dụ dưới đây ta có một giao diện 3 cột, vì một lý do nào đó bạn muốn đẩy cột bên tay trái vào trong 1 cột và kéo cột bên tay phải vào trong 2 cột bạn có thể khai báo HTML như sau:</p>
<pre class="brush: xml; title: ;">
&lt;div id=&quot;container&quot; class=&quot;container_12&quot;&gt;
	&lt;div id=&quot;first&quot; class=&quot;grid_4 push_1&quot;&gt;Push me if you can&lt;/div&gt;
	&lt;div id=&quot;second&quot; class=&quot;grid_4&quot;&gt;I am out of this&lt;/div&gt;
	&lt;div  id=&quot;third&quot; class=&quot;grid_4 pull_2&quot;&gt;Pull me if you can&lt;/div&gt;
&lt;/div&gt;&lt;!--end #container --&gt;
</pre>
<div class="tutorial-image"><img src="http://www.izwebz.com/wp-content/uploads/demon/images/960grid/push_pull.png" alt="960 grid" width="580" />  </div>
<p>Như bạn thấy trên hình cột màu xanh dương bị đẩy sang bên tay trái 1 cột tương ứng với <span class='post-span'>push_1</span> (ô màu hồng). Còn cột màu xanh lá cây bị kéo lại 2 ô do tác động của class <span class='post-span'>pull_2</span>.</p>
<h5>Suffix và Prefix</h5>
<p>Để tạo ra khoảng trống lớn giữa hai thành phần bạn có thể sử dụng hai class là Suffix và Prefix. Để tạo ra khoảng trống bằng 2 cột đằng sau một thành phần dùng Class <span class='post-span'>suffix_2</span>, hoặc tạo ra một khoảng trống bằng 4 cột ở trước một thành phần dùng <span class='post-span'>prefix_4</span>.</p>
<p>Ví dụ ta có 2 thẻ div như sau:</p>
<pre class="brush: xml; title: ;">
&lt;div id=&quot;bigBox&quot; class=&quot;grid_12&quot;&gt;
	&lt;div class=&quot;grid_3&quot;&gt;grid_3&lt;/div&gt;
	&lt;div class=&quot;grid_3&quot;&gt;grid_3&lt;/div&gt;
&lt;/div&gt;
</pre>
<div class="tutorial-image"><img src="http://www.izwebz.com/wp-content/uploads/demon/images/960grid/suffix_prefix.png" alt="960 grid" width="580" />  </div>
<p>Bây giờ bạn muốn đẩy thẻ div thứ hai sang bên tay phải, bạn có thể làm như sau:</p>
<pre class="brush: xml; title: ;">
&lt;div id=&quot;bigBox&quot; class=&quot;grid_12&quot;&gt;
	&lt;div class=&quot;grid_3 alpha suffix_5&quot;&gt;grid_3&lt;/div&gt;
	&lt;div class=&quot;grid_3&quot;&gt;grid_3&lt;/div&gt;
&lt;/div&gt;
</pre>
<div class="tutorial-image"><img src="http://www.izwebz.com/wp-content/uploads/demon/images/960grid/suffix_prefix_1.png" alt="960 grid" width="580" />  </div>
<p>Khi bạn thêm Class suffix_5 vào thẻ div đầu tiên, nó sẽ đẩy thẻ div thứ 2 lùi sang phải 5 ô. Bạn có thể thử với prefix sẽ cho kết quả ngược lại.</p>
<h5>Alpha và Omega</h5>
<p>Đây là 2 Class đặc biệt của 960 Grid dùng để loại bỏ đường biên margin của đối tượng đầu và cuối. Ví dụ bạn có mã HTML như sau:</p>
<pre class="brush: xml; title: ;">
&lt;div id=&quot;bigBox&quot; class=&quot;grid_12&quot;&gt;
	&lt;div class=&quot;grid_3&quot;&gt;grid_3&lt;/div&gt;
	&lt;div class=&quot;grid_3&quot;&gt;grid_3&lt;/div&gt;
	&lt;div class=&quot;grid_3&quot;&gt;grid_3&lt;/div&gt;
	&lt;div class=&quot;grid_3&quot;&gt;grid_3&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Khi xem trên trình duyệt bạn sẽ bị như hình dưới. Vấn đề ở đây là do chúng ta lồng 4 thẻ div vào trong một thẻ<span class='post-span'> &lt;div&gt;id=&#8221;bigBog&#8221; class=&#8221;grid_12&#8243;&lt;/div&gt;</span> và tất nhiên giá trị Margin của nó vẫn còn và làm tăng kích thước của 4 thẻ này lên làm 20px (margin trái + margin phải 10+10 = 20). Đây chính là lý do mà bạn thấy ở hình dưới.</p>
<pre class="brush: xml; title: ;">
&lt;div id=&quot;bigBox&quot; class=&quot;grid_12&quot;&gt;
	&lt;div class=&quot;grid_3&quot;&gt;grid_3&lt;/div&gt;
	&lt;div class=&quot;grid_3&quot;&gt;grid_3&lt;/div&gt;
	&lt;div class=&quot;grid_3&quot;&gt;grid_3&lt;/div&gt;
	&lt;div class=&quot;grid_3&quot;&gt;grid_3&lt;/div&gt;
&lt;/div&gt;
</pre>
<div class="tutorial-image"><img src="http://www.izwebz.com/wp-content/uploads/demon/images/960grid/alpha_omega.png" alt="960 grid" width="580" />  </div>
<p>Để khắc phục bạn có thể sử dụng hai Class đặc biệt là Alpha và Omega.</p>
<pre class="brush: xml; title: ;">
&lt;div id=&quot;bigBox&quot; class=&quot;grid_12&quot;&gt;
	&lt;div class=&quot;grid_3 alpha&quot;&gt;grid_3&lt;/div&gt;
	&lt;div class=&quot;grid_3&quot;&gt;grid_3&lt;/div&gt;
	&lt;div class=&quot;grid_3&quot;&gt;grid_3&lt;/div&gt;
	&lt;div class=&quot;grid_3 omega&quot;&gt;grid_3&lt;/div&gt;
&lt;/div&gt;
</pre>
<div class="tutorial-image"><img src="http://www.izwebz.com/wp-content/uploads/demon/images/960grid/alpha_omega_1.png" alt="960 grid" width="580" />  </div>
<p>
Với hai Class là <span class='post-span'>alpha</span> và <span class='post-span'>omega</span> được thêm vào, bạn sẽ thấy đường biên của hai phần tử đầu và cuối bị mất đi và giao diện của chúng ta hoạt động bình thường.</p>
<h5>Tóm tắt</h5>
<p>Bài này không quá dài nhưng lại chứa rất nhiều thông tin cho một lần đọc, do vậy cho những ai ngại đọc, đây là những ý chính của bài này
</p>
<p>1. Sử dụng Class container_12 hoặc container_16 cho thẻ div bao quanh với những giao diện 12 hoặc 16 cột.<br />
2. Sử dụng Class grid_1 cho đến grid_12 để xác lập độ rộng của từng cột. Nếu bạn muốn cột đó có độ rộng tối đa là 960 Pixel thì cho nó class là grid_12<br />
3. Sử dụng Class Push và Pull để định vị từng phần tử riêng lẻ trên trang mà không cần quan tâm đến vị trí của nó trong tài liệu HTML.<br />
4. Sử dụng Prefix và Suffix để tạo khoảng trắng trước và sau phần tử.<br />
5. Sử dụng Alpha và Omega để loại bỏ đường biên của phần tử đầu và phần tử cuối.</p>
<h5>Điểm mạnh và mặt hạn chế của 960 Grid</h5>
<p>Như bất cứ cái gì cũng có 2 mặt, 960 Grid cũng có những điểm mạnh và mặt hạn chế như sau. Bạn có thể tham khảo và quyết định xem mình có nên sử dụng CSS framework không.</p>
<p><strong>Điểm mạnh</strong></p>
<ul>
<li>Tiết kiệm thời gian</li>
<li>
Tương thích nhiều trình duyệt phổ biến</li>
<li>Thiết kế theo chuẩn tọa độ</li>
</ul>
<p><strong>Mặt han chế</strong></p>
<ul>
<li>Phải có kiến thức trên mức cơ bản về CSS.</li>
<li>Phụ thuộc vào Framework khiến bạn mất tự do.</li>
<li>Thêm nhiều class &#8220;vớ vỉn&#8221; vào mã HTML.</li>
<li>Mất thời gian để học về hệ thống framework đó.</li>
<li>Kích thước trang web không thể vượt quá 960 Pixel.</li>
</ul>
<p>Đây là đoạn mã HTML để tạo ra một trang web 2 cột đơn giản sử dụng 960 Grid</p>
<pre class="brush: xml; title: ;">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;meta charset='UTF-8' /&gt;
	&lt;title&gt;Izwebz - 960 Grid System Intro&lt;/title&gt;
	&lt;link rel='stylesheet' href='css/reset.css' /&gt;
	&lt;link rel='stylesheet' href='css/960.css' /&gt;
	&lt;link rel='stylesheet' href='css/style.css' /&gt;
&lt;/head&gt;

&lt;body&gt;

&lt;div id=&quot;container&quot; class=&quot;container_12&quot;&gt;
	&lt;div id=&quot;header&quot; class=&quot;grid_12&quot;&gt;This is a header&lt;/div&gt;
	&lt;div id=&quot;sidebar&quot; class=&quot;grid_3&quot;&gt;&lt;h1&gt;This is the sidebar&lt;/h1&gt;&lt;/div&gt;
	&lt;div id=&quot;mainContent&quot; class=&quot;grid_9 omega&quot;&gt;&lt;p&gt;This is the content&lt;/p&gt;&lt;/div&gt;
	&lt;div id=&quot;footer&quot; class=&quot;grid_12&quot;&gt;
		&lt;p&gt;Copyright &amp;copy; izwebz. All rights reserved&lt;/p&gt;
	&lt;/div&gt;
&lt;/div&gt;&lt;!--end #container --&gt;

&lt;/body&gt;

&lt;/html&gt;</pre>
<h5>Bạn có sử dụng 960 Grid chưa?</h5>
<p>Bạn có sử dụng CSS framework nào không? theo bạn CSS framework có cần thiết không? với tôi, sau một thời gian làm quen với 960 Grid, tôi thấy được những tính năng vượt trội của nó và có thể sẽ sử dụng nó ở những Project sắp tới. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.izwebz.com/css/gioi-thieu-960-grid-css-framework/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
		<item>
		<title>Thành phần Block và Inline</title>
		<link>http://www.izwebz.com/css/thanh-phan-block-va-inline/</link>
		<comments>http://www.izwebz.com/css/thanh-phan-block-va-inline/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 03:21:20 +0000</pubDate>
		<dc:creator>Demon Warlock</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.izwebz.com/?p=1827</guid>
		<description><![CDATA[Khái niệm về Inline và Block là một khái niệm hết sức cơ bản nhưng cũng cực kỳ quan trọng trong CSS. Hiểu được từng đặc điểm của mỗi thành phần là chìa khóa quan trọng để bạn có thể vận hành CSS theo ý muốn. Trong bài này tôi sẽ nói về chức năng [...]]]></description>
			<content:encoded><![CDATA[<p>Khái niệm về Inline và Block là một khái niệm hết sức cơ bản nhưng cũng cực kỳ quan trọng trong CSS. Hiểu được từng đặc điểm của mỗi thành phần là chìa khóa quan trọng để bạn có thể vận hành CSS theo ý muốn. Trong bài này tôi sẽ nói về chức năng của từng thành phần. Tuy nhiên tôi sẽ vẫn giữ nguyên từ chuyên ngành là Block và Inline mà không dịch ra tiếng Việt là &#8220;khối&#8221; và &#8220;trong dòng&#8221; nghe cùi quá.</p>
<p><span id="more-1827"></span></p>
<p>Khi các thành phần HTML được hiển thị trên trình duyệt nó thường có 2 cách hiển thị là theo Block và Inline. Nói hình tượng để bạn dễ hiểu thì các thành phần Block giống như một bàn cờ và các thành phần Inline là quân cờ. Các quân cờ nằm trong bàn cờ và bàn cờ thì không bao giờ nằm trong quân cờ. Đây cũng là một nguyên tắc cơ bản nhất của Inline và Block. Thành phần inline có thể nằm trong thành phần Block, nhưng Block không thể nằm trong thành phần Inline.</p>
<p>Lý thuyết thì là vậy nhưng hơi mơ hồ khó hiểu, cách tốt nhất là chúng ta học từ ví dụ ở dưới.</p>
<h5>Ví dụ về Block</h5>
<p>Thẻ &lt;p&gt; và &lt;div&gt; là hai thành phần mặc định Block phổ biến nhất. Chỉ khi bạn khai báo trong CSS và muốn biến nó thành inline với Property là Display: inline thì nó mới thành inline. Ví dụ tôi có một thẻ &lt;div&gt; như sau:</p>
<div style="background: yellow; border: 1px solid red; padding: 10px;">Bạn sẽ thấy dòng chữ này chiếm hết độ rộng của thành phần mẹ chứa nó và tự động xuống hàng mới</div>
<p>Nếu tôi viết tiếp thì dòng mới sẽ bị đẩy xuống dưới dù cho nó được viết cùng hàng với dòng ở trên nằm trong thẻ &lt;div&gt;</p>
<h5>Các thành phần Block bao gồm</h5>
<p><strong>&lt;div&gt;</strong>: Là thành phần trắng dùng để làm &#8220;hộp&#8221; chứa.<br />
<strong>&lt;h1&gt; &#8230;.&lt;h6&gt;</strong>: Các headings<br />
<strong>&lt;p&gt;</strong>: Thẻ này dùng để mở đầu và kết thúc một đoạn văn bản.<br />
<strong>&lt;li&gt;, &lt;dt&gt;, &lt;dd&gt;</strong>: hiển thị danh sách.<br />
&lt;table&gt;, &lt;blockquote&gt;, &lt;pre&gt; và &lt;form&gt;</p>
<h5>Ví dụ về thành phần Inline</h5>
<p>Ví dụ tôi có một đoạn văn như sau, và trong đó tôi có một cặp thẻ &lt;strong&gt;, nó không bắt thành phần nằm trong nó phải xuống hàng mà nó chỉ <strong>&#8220;nhẹ nhàng&#8221;</strong> chui vào giữa và sống hạnh phúc trong đó. Cũng giống như quân cờ nằm trong bàn cờ vậy.</p>
<h5>Các thành phần inline bao gồm</h5>
<p>&lt;span&gt;, &lt;a&gt;, &lt;em&gt;, &lt;br /&gt;<br />
<strong>&lt;img&gt;</strong></p>
<p>Ví dụ hình mặt cười này <img src='http://www.izwebz.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  sẽ xuất hiện ở trong dòng mà không ép chữ xuống hàng mới. Nó chỉ chiếm khoảng không gian tối thiểu mà nó cần. Giống như quân cờ chỉ chiếm một khoảng không gian nhất định của nó mà thôi. Chứ nó không ảnh hưởng đến bàn cờ.</p>
<p><strong> &lt;input&gt;</strong></p>
<input type="text" value="đây là inline element" />
<input type="submit" value="button" />
<h5>Display Property</h5>
<p>Cái hay của CSS là bạn không chỉ bị ép buộc sử dụng giá trị mặc định của từng thành phần. Mà bạn có thể thay đổi cách hiển thị của nó theo ý mình. Ví dụ một thành phần &lt;li&gt; theo mặc định là dạng Inline nhưng bạn có thể biến nó thành block với CSS tương ứng là Display: block. Đây chính là một phần rất quan trọng trong thiết kế giao diện. Nó mở ra một chân trời mới với các cách sắp xếp thành phần mà chỉ bị giới hạn bằng khả năng thiết kế của bạn.</p>
<p>Được áp dụng nhiều nhất là khi bạn sử dụng &lt;li&gt; làm menu như rất nhiều trang web. Ở mặc định nếu bạn có một list như sau:</p>
<pre class="brush: xml; title: ;">&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;Home&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;About&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;Services&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;FAQs&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;Contact&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;</pre>
<p>Nó sẽ xuất hiện như sau ở trình duyệt</p>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">FAQs</a></li>
<li><a href="#">Contact</a></li>
</ul>
<p>Nếu bạn muốn nó xuất hiện trong cùng một hàng thì bạn có thể khai bao CSS như sau:</p>
<pre class="brush: css; title: ;">.menuNav li {
display:inline;
background-color:#eee;
border:1px solid red;
margin:0; padding:0px 10px;
}</pre>
<div class="tutorial-image">
<img src="http://www.izwebz.com/wp-content/uploads/2009/08/inline.png" alt="inline" />
</div>
<p>Bạn cũng có thể tham khảo thêm video tutorial tôi đã làm về <a href="http://www.izwebz.com/css/display-property-2/">Display Property</a> trong CSS để hiểu thêm chi tiết.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.izwebz.com/css/thanh-phan-block-va-inline/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Vertical-align trong CSS</title>
		<link>http://www.izwebz.com/css/vertical-align-trong-css/</link>
		<comments>http://www.izwebz.com/css/vertical-align-trong-css/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 16:05:18 +0000</pubDate>
		<dc:creator>Demon Warlock</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.izwebz.com/?p=1803</guid>
		<description><![CDATA[Tính năng Vertical-align trong CSS được kế thừa từ &#8220;thời đại&#8221; sử dụng bảng để thiết kế giao diện. Hiện tại tính năng valign trong table đã bị &#8220;đào thải&#8221; và không còn được sử dụng đúng chuẩn web nữa. Nhưng thay vào đó CSS lại giới thiệu một tính năng khác nghe tên hoàn [...]]]></description>
			<content:encoded><![CDATA[<p>Tính năng Vertical-align trong CSS được kế thừa từ &#8220;thời đại&#8221; sử dụng bảng để thiết kế giao diện. Hiện tại tính năng valign trong table đã bị &#8220;đào thải&#8221; và không còn được sử dụng đúng chuẩn web nữa. Nhưng thay vào đó CSS lại giới thiệu một tính năng khác nghe tên hoàn toàn giống với valign là Vertical-align. Chính vì điều này nên đã gây ra một số hiểu lầm về nó. Trong bài này chúng ta sẽ xem xét cách sử dụng vertical-align trong CSS.</p>
<p><span id="more-1803"></span></p>
<p>Trên thực tế rất ít khi bạn phải sử dụng tính năng vertical-align trong CSS trừ khi bạn đang thiết kế bảng với dữ liệu cần căn chỉnh vào giữa dòng. Nhưng theo kinh nghiệm cá nhân tôi, khi làm giao diện tôi rất ít khi sử dụng vertical-align bởi vì nó thực sự không cần thiết. Do chúng ta có thể sử dụng padding và margin để điều khiển nó tới vị trí mà mình muốn. Nhưng với những người mới học CSS và vừa thoát ra khỏi cách thiết kế bằng bảng thì cái &#8220;lối mòn&#8221; cũ vẫn chưa hoàn toàn bỏ được. Chính vì vậy nhiều người mới hỏi tại sao khi sử dụng vertical-align: middle trong thẻ div nó lại không cho kết quả như mong muốn.</p>
<p>Nói chung cách sử dụng vertical-align trong CSS để căn chỉnh một thành phần không phải là table cell cũng không hề đơn giản mà cũng lắm nhiêu khê. Có nhiều cách hoàn toàn không tương thích với các trình duyệt đặc biệt là IE (kể cả IE 8). Vậy nên khi quyết định sử dụng vertical-align để căn chỉnh thành phần trong block element như &lt;div&gt; bạn nên suy nghĩ cho kỹ. Tuy nhiên vì bạn vẫn muốn làm hoặc bắt buộc phải làm thì dưới đây là một số cách bạn có thể áp dụng được.</p>
<h5>Cách 1: Biến &lt;div&gt; thành table cell</h5>
<p>Trong cách này chúng ta sẽ biến một thẻ &lt;div&gt; thành một table cell và do đó có thể áp dụng vertical-align bình thường. Cái hay của cách này là ngắn gọn và lẹ nhưng nó không tương thích với trình duyệt IE (kể cả IE 8 beta). Cho nên bạn cũng cần suy nghĩ ở đây.</p>
<pre class="brush: xml; title: ;">&lt;div id=&quot;container&quot;&gt;
   &lt;div id=&quot;content&quot;&gt;
     &lt;p&gt;Lorem ipsum dolor sit amet.&lt;/p&gt;
   &lt;/div&gt;
&lt;/div&gt;</pre>
<pre class="brush: css; title: ;">#container {display: table;}
#content {display: table-cell; vertical-align: middle;}</pre>
<h5>Cách 2: Sử dụng margin và absolute position</h5>
<p>Trong cách này chúng ta sẽ sử dụng absolute position để định vị thành phần và dùng margin giá trị âm để bù lại khoảng mình đẩy xuống. Cái hay trong cách này là tương thích với mọi trình duyệt, không cần thêm một thẻ div nữa. Nhưng mỗi khi trình duyệt bị thu nhỏ quá, nội dung sẽ biến mất.</p>
<pre class="brush: xml; title: ;">&lt;div id=&quot;container&quot;&gt;
   &lt;div id=&quot;content&quot;&gt;
    &lt;p&gt; Lorem ipsum dolor sit amet.&lt;/p&gt;
   &lt;/div&gt;
&lt;/div&gt;</pre>
<pre class="brush: css; title: ;">#container {position: relative;}
#content {
position:absolute;
top:50%; height:200px;
margin-top:-100px; /* giá trị âm bằng một nửa chiều cao */
}</pre>
<h5>Cách 3: sử dụng line-height</h5>
<p>Đây là cách có khi được sử dụng nhiều nhất bởi vì nó đơn giản nhất và tương thích với mọi trình duyệt. Nhưng nó chỉ có thể áp dụng với những thành phần chỉ có một dòng chữ và thành phần chứa nó có độ cao cụ thể.</p>
<pre class="brush: xml; title: ;">
&lt;div id=&quot;content&quot;&gt;
     Lorem ipsum dolor sit amet.
   &lt;/div&gt;
</pre>
<pre class="brush: css; title: ;">#content {
 height:200px;
#content p {
line-height: 200px;
}</pre>
<h5>Kết luận</h5>
<p>Ở bài này tôi giới thiệu với bạn 3 cách để căn chỉnh theo chiều dọc một thành phần. Cách nào cũng có điểm mạnh và điểm yếu và bạn hãy tùy từng trường hợp mà áp dụng sao cho hợp lý. Nhưng trên thực tế một đoạn văn không nhất thiết phải nằm giữa một thẻ div mới đẹp. Chính vì thế trừ trường hợp bắt buộc, tránh sử dụng vertical-align cho nó đỡ rắc rối.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.izwebz.com/css/vertical-align-trong-css/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Absolute Position trong thiết kế giao diện</title>
		<link>http://www.izwebz.com/css/absolute-position-trong-thiet-ke-giao-dien/</link>
		<comments>http://www.izwebz.com/css/absolute-position-trong-thiet-ke-giao-dien/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 21:18:55 +0000</pubDate>
		<dc:creator>Demon Warlock</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.izwebz.com/?p=1582</guid>
		<description><![CDATA[Có một thực tế rằng Absolute Position tuy rất hay và mạnh nhưng lại chưa được sử dụng đúng với &#8220;thực lực&#8221; của nó. Đa phần người ta thường sử dụng Float và dùng Padding hoặc Margin để căn chỉnh các thành phần trong giao diện với nhau. Nhưng như bạn cũng đã biết, giao [...]]]></description>
			<content:encoded><![CDATA[<p>Có một thực tế rằng Absolute Position tuy rất hay và mạnh nhưng lại chưa được sử dụng đúng với &#8220;thực lực&#8221; của nó. Đa phần người ta thường sử dụng Float và dùng Padding hoặc Margin để căn chỉnh các thành phần trong giao diện với nhau. Nhưng như bạn cũng đã biết, giao diện với Float rất mong manh. Chỉ cần sai chút xíu là cả giao diện có thể bị vỡ.</p>
<p><span id="more-1582"></span></p>
<p>Đó là chưa kể đến những bất cập của Float như phải clear float và đôi khi nó thực sự rất khó quản lý. Nhưng không hiểu vì lý do tại sao Float được sử dụng rất rộng rãi và vượt ra ngoài dự định ban đầu của những người phát triển CSS. Đầu tiên Float chỉ được thiết kế để đưa hình ảnh vào những vị trí thích hợp. Nhưng dần dà nó được sử dụng khá phổ biến trong thiết kế giao diện.</p>
<p>Nói vậy không phải là tôi không thích Float hoặc sử dụng Float là không tốt, mà sự thực thì tôi cũng sử dụng Float khá nhiều trong thiết kế giao diện. Nhưng nếu dùng nó kết hợp với Absolute Position trong CSS thì giúp giao diện của bạn có thể tương thích với nhiều trình duyệt mà không cần phải áp dụng hack cho IE. </p>
<p>Trong bài này chúng ta sẽ tìm hiểu sơ qua về Absolute Position trong Relative Position. Tôi đã có một <a href="http://www.izwebz.com/video-tutorials/contextual-position-2/">video về Contextual Positioning</a> nói rất rõ về mối liên hệ giữa Relative Position và Absolute Position. Nhưng vì đây là khái niệm hết sức quan trọng do vậy trong bài này tôi cũng nói lại một chút.</p>
<p>Ở ví dụ dưới đây tôi sử dùng Absolute Position để định vị 3 thẻ div nằm trong thẻ div lớn là <span class="post-span">#wrapper</span>. </p>
<pre class="brush: xml; title: ;">&lt;div id=&quot;wrapper&quot;&gt;
        &lt;div id=&quot;left&quot;&gt;&amp;nbsp;&lt;/div&gt;

        &lt;div id=&quot;middle&quot;&gt;&amp;nbsp;&lt;/div&gt;

        &lt;div id=&quot;right&quot;&gt;&amp;nbsp;&lt;/div&gt;
    &lt;/div&gt;</pre>
<p>Với Absolute Position bạn có thể sử dụng các giá trị: <span class="post-span">px, em và %</span> và với các vị trí: <span class="post-span">top, right, bottom và left</span>. Tuy nhiên trong thực tế bạn chỉ cần 2 giá trị là top và left (hoặc right) thì cũng đủ để định vị một thành phần rồi.</p>
<p><strong>Mẹo nhỏ</strong>: Nếu trong quá trình định vị tọa độ với Absolute bạn phải làm đi làm lại nhiều lần. Thì nay bạn có thể sử dụng addon Firebug để định vị chính xác đến từng Pixel. Tôi có làm một video <a href="http://www.izwebz.com/video-tutorials/firebug-webmaster-can-co/">hướng dẫn cách sử dụng Firebug</a>.</p>
<div class="tutorial-image">
<img src="http://www.izwebz.com/wp-content/uploads/2009/08/absolute-1.png" alt="Absolute Position" />
</div>
<p>Ở ví dụ trên thẻ <span class="post-span">div#wrapper</span> có <span class="post-span">position: relative</span>, nó sẽ đóng vai trò làm thành phần bao quanh cho 3 thẻ div có <span class="post-span">position: absolute</span> nằm bên trong nó. Nếu ta bỏ giá trị <span class="post-span">position: relative</span> ở thẻ <span class="post-span">div#wrapper</span> đi thì 3 thẻ div ở trong sẽ như &#8220;hươu lạc mẹ&#8221; và chạy toán loạn hết. Uhm! thực ra cũng không toán loạn mà nó sẽ nhận <span class="post-span">body</span> làm mẹ nuôi và định vị theo &#8220;bà mẹ&#8221; mới này.</p>
<div class="tutorial-image">
<img src="http://www.izwebz.com/wp-content/uploads/2009/08/absolute-2.png" alt="Absolute Position" />
</div>
<p>Chính vì thế điều quan trọng nhất trong khi sử dụng Absolute Position là xác định thành phần bao quanh và đặt position của nó thành relative</p>
<h5>Nghe cũng hay mà bạn có ví dụ trong thực tế không?</h5>
<p>Tôi biết là bạn sẽ hỏi do vậy tôi đã chuẩn bị trước một <a href="http://www.izwebz.com/wp-content/uploads/2009/08/demo/absolute/">giao diện được sử dụng Absolute Position</a> cho bạn tham khảo. Bạn sẽ dễ dàng nhận thấy ở giao diện này có một tấm hình lớn choán hết phần Header và nó nằm &#8220;chông chênh&#8221; ở giữa. Đây là ví dụ hoàn hảo về sử dụng Absolute Position để định vị các thành phần.</p>
<p>Ngoài ra các thành phần còn lại như thanh di chuyển ở trên và dưới, logo và phần Featured đều được sử dụng Absolute Position. Tôi đã thử trong IE 6, 7 và 8 và hầu như không phải hack bất cứ phần nào ngoại trừ phần PNG hack cho IE 6. Nếu giao diện này làm bằng Float thì sẽ ít nhất là cũng phải hack cái Double Margin của IE.</p>
<p>Bạn có thể <a href="http://www.izwebz.com/wp-content/uploads/2009/08/downloads/absolute.rar">download ví dụ này</a> về để xem phần code HTML và CSS</p>
]]></content:encoded>
			<wfw:commentRss>http://www.izwebz.com/css/absolute-position-trong-thiet-ke-giao-dien/feed/</wfw:commentRss>
		<slash:comments>68</slash:comments>
		</item>
		<item>
		<title>Pseudo Class</title>
		<link>http://www.izwebz.com/css/pseudo-class/</link>
		<comments>http://www.izwebz.com/css/pseudo-class/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 02:08:52 +0000</pubDate>
		<dc:creator>Demon Warlock</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[:first-child]]></category>
		<category><![CDATA[:hover]]></category>
		<category><![CDATA[css cơ bản]]></category>
		<category><![CDATA[link]]></category>
		<category><![CDATA[pseudo class]]></category>

		<guid isPermaLink="false">http://www.izwebz.com/?p=759</guid>
		<description><![CDATA[Pseudo (phát âm là: sju:dou) tiếng Việt có nghĩa là &#8220;giả, không thật&#8221;, sở dĩ nó được đặt tên là Pseudo Class hay gọi là &#8220;Class giả&#8221; là vì nó không được gắn liền với những thẻ XHTML như những class thông thường bạn đã biết ở bài trước. Pseudo Class sẽ tạo ra thay [...]]]></description>
			<content:encoded><![CDATA[<p>Pseudo (phát âm là: <span class='post-span'>sju:dou</span>) tiếng Việt có nghĩa là &#8220;giả, không thật&#8221;, sở dĩ nó được đặt tên là Pseudo Class hay gọi là &#8220;Class giả&#8221; là vì nó không được gắn liền với những thẻ XHTML như những class thông thường bạn đã biết ở <a href="http://www.izwebz.com/css/class-va-id/">bài trước</a>. Pseudo Class sẽ tạo ra thay đổi tới thành phần của XHTML khi một sự kiện nào đó sẽ xảy ra. Pseudo Class được sử dụng thông dụng nhất với các đường liên kết khi người dùng di chuột qua hoặc nhấp vào nó. Với những trình duyệt mới hơn (<em>trừ Internet Explorer 6</em>) bạn có thể dễ dàng tạo ra hiệu ứng Rollover với bất cứ thành phần nào trên trang chứ không chỉ thẻ <span class='post-span'>&lt;a&gt;</span>.</p>
<p><span id="more-759"></span> </p>
<h5>Pseudo Class cho đường liên kết</h5>
<p>Pseudo Class được sử dụng nhiều nhất với các đường liên kết (thẻ &lt;a&gt;) để tạo ra hiệu ứng thay đổi trạng thái chữ mỗi khi người dùng di chuột qua nó ví dụ như những đường liên kết trên izwebz, khi bạn di chuột qua sẽ có màu nền là màu xanh nhạt.</p>
<p>Có tất cả 4 trạng thái của đường liên kết</p>
<ul>
<li><strong>Link</strong>: đơn thuần là đường liên kết để báo cho người đọc biết nó là đường liên kết.</li>
<li><strong>Visited</strong>: Người đọc đã từng nhấp chuột vào link này rồi.</li>
<li><strong>Hover</strong>: Người đọc di chuột qua đường liên kết</li>
<li><strong>Active</strong>: Đường liên kết đang được người đọc nhấp chuột.</li>
</ul>
<p>Tương đương với 4 Pseudo Class.</p>
<ul>
<li>a:link {color:blue;}</li>
<li>a:visited {color:gray;}</li>
<li>a:hover {color:red; text-decoration:none;}</li>
<li>a:active {color:navy;}</li>
</ul>
<p>Bây giờ hãy tạm gác chuyện màu nào hay hiệu ứng nào thì thích hợp cho đường liên kết lại, chúng ta hãy xem đoạn code trên ảnh hưởng tới đường liên kết như thế nào. Đoạn code trên định nghĩa đường liên kết lúc:</p>
<ul>
<li> Bình thường sẽ có <span style="color: #000000;">màu xanh và gạch chân là giá trị mặc định. </span></li>
<li><span style="color: #000000;">Đường liên kết đã được người dùng nhấp vào, nó sẽ có màu xám. </span></li>
<li>Người dùng di chuột lên (chưa nhấp) nó sẽ có màu đỏ và không có gạch chân</li>
<li>Người dùng chỉ nhấp và giữ chuột nó sẽ có màu xanh đậm (ít khi xảy ra)</li>
</ul>
<p>Trên đây chỉ là những hiệu ứng cơ bản nhất của Pseudo Class cho đường liên kết. Sau này bạn có thể sử dụng Pseudo Class như là 1 dạng Contextual Selector để hướng tới những đối tượng cụ thể và tạo ra những hiệu ứng khác nhau cho các đường link ở những phần khác nhau như thanh di chuyển, footer, liên kết bạn bè &#8230;</p>
<p>
Trong 4 trạng thái trên thì bạn không nhất thiết phải khai báo cả 4 trạng thái. Thường thì người ta chỉ khai báo 2 trạng thái chủ yếu là :link và :hover. Còn :visited và :active thì cũng không thực sự cần thiết lắm. Trình duyệt sẽ bỏ qua những trạng thái không được khai báo.</p>
<p><strong>Lưu ý:</strong> <em>Tuy nhiên để có hiệu ứng Rollover, bạn phải khai báo :hover sau :link hoặc :visited. Hoặc bạn có thể nhớ theo kiểu LoVe Hate</em></p>
<p>Pseudo Class còn có thể được áp dụng cho bất cứ thành phần nào để tạo hiệu ứng Rollover chứ không chỉ với các đường liên kết. Ví dụ</p>
<pre class="brush: css; title: ;">h1:hover {background-color:green;}</pre>
<p><strong>Lưu ý:</strong> IE6 không hỗ trợ Pseudo Class ở những thành phần khác ngoại trừ đường liên kết. IE7 <strong>có hỗ trợ</strong> Pseudo Class nhưng bạn phải khai báo là Strict DOCTYPE thì nó mới hoạt động.</p>
<h5>First Child</h5>
<pre class="brush: css; title: ;">x:first-child</pre>
<p>Tính năng này dùng để hướng đối tượng là con &#8220;trưởng&#8221; của một thành phần &#8220;đông con&#8221;, nơi<span style="color: #339966;"> x</span> là con đầu</p>
<p>Ví dụ:</p>
<pre class="brush: css; title: ;">.vi_du em:first-child {color:red;}</pre>
<p>với code xhtml như sau</p>
<pre class="brush: xml; title: ;">&amp;lt;p style=&amp;quot;em:first-child: color: red;&amp;quot; class=&amp;quot;vi_du&amp;quot;&amp;gt;Tính năng này &amp;lt;em&amp;gt;chủ yếu&amp;lt;/em&amp;gt; dùng để hướng &amp;lt;em&amp;gt;đối tượng&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;</pre>
<p>Ở đoạn code trên thì hai thẻ &lt;em&gt; đều là con của thẻ &lt;p&gt; nhưng thẻ &lt;em&gt; đứng trước là con đầu, cho nên nó bị ảnh hưởng bới luật trên và kết quả bạn sẽ có</p>
<p>Tính năng này <span style="color: #ff0000;"><em>chủ yếu</em> </span>dùng để hướng <em>đối tượng </em></p>
<h5>Pseudo Elements</h5>
<p>
Pseudo Elements cho phép bạn tạo ra những hiệu ứng đặc biệt mà bạn không cần phải thêm markup vào code.</p>
<p><strong>x:first-letter</strong> ở đó <span style="color: #339966;">x</span> là tên thẻ bị ảnh hưởng</p>
<pre class="brush: css; title: ;">p:first-letter {font-size:300%;}</pre>
<p>Với markup tương ứng</p>
<pre class="brush: xml; title: ;">&amp;lt;p&amp;gt;Trên đây chỉ là những hiệu ứng cơ bản nhất của Pseudo Class cho đường liên kết.&amp;lt;/p&amp;gt;</pre>
<p><span style="color: #339966;">x</span>:first-line &lt;&#8211; nơi <span style="color: #339966;">x</span> là tên thẻ bị ảnh hưởng</p>
<pre class="brush: css; title: ;">p:first-line {font-variation:small-caps;}</pre>
<p>Cái hay của dòng code này là nếu cửa sổ trình duyệt lơn thì bất cứ chữ nào nằm vừa dòng đầu tiên sẽ bị IN HOA như hình trên. Nếu cửa sổ bé hơn, nó sẽ đẩy chữ xuống dưới và những chữ còn lại vẫn sẽ được IN HOA.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.izwebz.com/css/pseudo-class/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Contextual Position</title>
		<link>http://www.izwebz.com/css/contextual-position/</link>
		<comments>http://www.izwebz.com/css/contextual-position/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 17:52:03 +0000</pubDate>
		<dc:creator>Demon Warlock</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[cơ bản css]]></category>
		<category><![CDATA[contextual position]]></category>
		<category><![CDATA[định vị thành phần]]></category>

		<guid isPermaLink="false">http://www.izwebz.com/?p=745</guid>
		<description><![CDATA[Contextual Positioning là một khái niệm hết sức quan trọng mà bạn cần nắm vững nếu bạn muốn sử dụng CSS để thiết kế giao diện thay cho dùng bảng HTML. Nói nôm na thì Contextual Positioning có nghĩa là khi bạn định vị một thành phần bất kỳ sử dụng 4 giá trị top, [...]]]></description>
			<content:encoded><![CDATA[<p>Contextual Positioning là một khái niệm hết sức quan trọng mà bạn cần nắm vững nếu bạn muốn sử dụng CSS để thiết kế giao diện thay cho dùng bảng HTML. Nói nôm na thì Contextual Positioning có nghĩa là khi bạn định vị một thành phần bất kỳ sử dụng 4 giá trị top, right, bottom và left. Bạn thực chất định vị thành phần đó dựa vào vị trí của một thành phần khác. Thành phần khác đó được gọi là Contextual Positioning.</p>
<p><span id="more-745"></span></p>
<p>Nói một ví dụ trong thực tế để bạn dễ hiểu. Giả sử ai đó nói bạn kê chiếc bàn vào giữa. Bạn lập tức sẽ hỏi &#8220;<em>vào giữa cái gì?</em>&#8221; Bởi vì bạn cần một cái gì đó để xác định đâu là giữa để còn định vị chiếc bàn. Nếu họ nói <em>&#8220;vào giữa căn phòng</em>&#8221; thì bạn chỉ việc đặt nó vào giữa căn phòng thôi. Nói chung, khi định vị một thành phần, bạn cần một thành phần khác để xác định vị trí của thành phần bạn đang cần sẵp xếp lại vị trí. Và thành phần khác đó trong CSS gọi là Contextual Postioning.</p>
<p>
Khi bạn định vị một thành phần với <span class='post-span'>Absolute Position</span>, thì ở giá trị mặc định thẻ &lt;body&gt; là contextual position của nó. Bạn cũng có thể thay đổi giá trị mặc định này bằng bất cứ thành phần &#8220;mẹ&#8221; nào của nó. Miễn là bạn đổi giá trị position của thành phần mẹ thành <span class='post-span'>Relative</span>.</p>
<p>Trong ví dụ này tôi sẽ có 2 đoạn văn bản và 1 tấm hình. Tôi muốn tấm hình được hiển thị nằm đè lên giữa đoạn văn trên và dưới. Rõ ràng bạn không thể sử dụng float để có được vị trí này. Thay vào đó chúng ta phải sử dụng Position.</p>
<div class='tutorial-image'>
<img src="http://www.izwebz.com/wp-content/uploads/2009/08/contextual-position.png" alt="contextual Position" />
</div>
<p>Code HTML của hình trên chỉ đơn giản như sau</p>
<pre class="brush: xml; title: ;">&lt;body&gt;
    &lt;div id=&quot;wrap&quot;&gt;
       &lt;h3&gt;Contextual Position&lt;/h3&gt;
       &lt;p&gt;Nội dung thêm vào đây&lt;/p&gt;
       &lt;p class=&quot;second&quot;&gt;Nội dung thêm vào đây
         &lt;img class=&quot;date&quot; src=&quot;images/date.png&quot; alt=&quot;date&quot; /&gt;
        &lt;/p&gt;
    &lt;/div&gt;&lt;!--End #wrap--&gt;
&lt;/body&gt;</pre>
<p>Khi bạn xem trang này bằng trình duyệt, bạn sẽ thấy hình tương tự như sau. Ở hình chụp này, tôi đã đặt giá trị width của #wrap là 300px và cho hiển thị đường viền và màu nền cho dễ quan sát.</p>
<div class='tutorial-image'>
<img src="http://www.izwebz.com/wp-content/uploads/2009/08/contextual-position-1.png" alt="contextual Position" />
</div>
<p> Bây giờ nếu chúng ta ra lệnh cho trình duyệt <em>&#8220;đặt tấm hình kia vào giữa!&#8221;</em>. Tất nhiên, vì nó muốn làm hài lòng bạn nên nó phải tuân theo mà không dám hỏi lại là <em>&#8220;đặt vào giữa cái gì hả anh?&#8221;</em>. Do vậy nó mặc định cách đặt như sau</p>
<div class='tutorial-image'>
<img src="http://www.izwebz.com/wp-content/uploads/2009/08/contextual-position-2.png" alt="contextual Position" />
</div>
<pre class="brush: css; title: ;">
img.date {position: absolute; top: 20px; left: 20px;}</pre>
<p>Bởi vì chúng ta chỉ nói trình duyệt định vị tuyệt đối tấm hình mà không nói rõ cho nó phải đặt nó tuyệt đối so với cái gì. Trong trường hợp này vào lúc cấp bách nó lấy ngay thẻ body để làm thành phần tương đối. Nhưng tất nhiên đó không phải là điều mình muốn, do vậy mình sẽ nói với trình duyệt rõ ràng hơn bằng cách cho nó biết chính xác mình muốn đặt ở đâu.</p>
<p>Như bạn thấy ở trên, thẻ <span class='post-span'>p</span> của đoạn văn thứ nhất chính là thẻ mẹ của tấm hình. Chúng ta sẽ lấy thẻ đó làm căn bản và điều chỉnh tấm hình theo nó. Vậy nên trong code CSS, bạn khai báo position cho thẻ <span class='post-span'>p</span> với <span class='post-span'>class=&#8221;second&#8221;</span> là <span class='post-span'>relative</span></p>
<pre class="brush: css; title: ;">p.second {position: relative;}</pre>
<div class='tutorial-image'>
<img src="http://www.izwebz.com/wp-content/uploads/2009/08/contextual-position-3.png" alt="contextual Position" />
</div>
<p> Ngay khi bạn đổi position của thẻ <span class='post-span'>p</span> thành <span class='post-span'>relative</span>, lập tức trình duyệt sẽ hiểu bạn muốn nó định vị tương ứng với thẻ nào và bây giờ bạn có thể điều chỉnh vị trí của tấm hình theo ý mình. Với position bạn có thể sử dụng cả giá trị âm như là -30px hoặc -nPx.</p>
<p>Đây là một trong những tính năng khá hay của CSS nhưng cũng hơi khó diễn đạt bằng lời. Do vậy tôi có làm một <a href="http://www.izwebz.com/video-tutorials/contextual-position-2/">Video Tutorial</a> về vấn đề này, hy vọng bạn sẽ dễ hiểu hơn =).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.izwebz.com/css/contextual-position/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Hướng đối tượng dựa vào cấp bậc XHTML</title>
		<link>http://www.izwebz.com/css/contextual-selector-css/</link>
		<comments>http://www.izwebz.com/css/contextual-selector-css/#comments</comments>
		<pubDate>Sun, 12 Oct 2008 16:32:21 +0000</pubDate>
		<dc:creator>Demon Warlock</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[cấp bậc]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[hướng đối tượng]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.izwebz.com/?p=741</guid>
		<description><![CDATA[Trong bài trước bạn đã học về cấp bậc của XHTML, trong bài này tôi sẽ hướng dẫn bạn cách hướng đối tượng cụ thể nằm sâu hơn trong cấp bậc của HTML. Có 2 cách bạn có thể hướng đối tượng cụ thể là Contextual Selector và Child Selector Contextual Selector Nếu bạn viết [...]]]></description>
			<content:encoded><![CDATA[<p>Trong bài trước bạn đã học về cấp bậc của XHTML, trong bài này tôi sẽ hướng dẫn bạn cách hướng đối tượng cụ thể nằm sâu hơn trong cấp bậc của HTML. Có 2 cách bạn có thể hướng đối tượng cụ thể là Contextual Selector và Child Selector</p>
<p><span id="more-741"></span></p>
<h5>Contextual Selector</h5>
<p>Nếu bạn viết code CSS như sau</p>
<pre class="brush: css; title: ;">p {color: blue;}</pre>
<p>thì tất cả các thẻ &lt;p&gt; trong trang web sẽ có màu xanh. Nhưng nếu bạn chỉ muốn một đoạn nào đó có mầu xanh thôi chứ không phải toàn bộ trang. Lúc đó bạn sẽ dùng Contextual Selector có quy luật như sau:</p>
<pre class="brush: css; title: ;">div p {color: blue;}</pre>
<p>Cách viết rất đơn giản, bạn chỉ cần liệt kê những thẻ &#8220;dẫn&#8221; đến thẻ bạn muốn hướng tới và cách nhau bằng một dấu cách. Thẻ nào gần nhất với dấu <span style="color: #008000;">{ &#8230; }</span> là thẻ đó bị ảnh hưởng bởi CSS.</p>
<p><br/></p>
<p>Chúng ta sẽ lấy một ví dụ nơi mà cấp bậc của XHTML phức tạp hơn để minh hoạ cho cách hướng đối tượng này.</p>
<pre class="brush: xml; title: ;">&lt;body&gt;
  &lt;h1&gt;Cách hướng đối tượng &lt;em&gt;trong CSS&lt;/em&gt; rất quan trọng&lt;/h1&gt;
  &lt;p&gt;Ví dụ này sẽ chỉ cho bạn cách sử dụng&lt;em&gt; cấp bậc XHTML &lt;/em&gt;
để hướng đối tượng &lt;/p&gt;
  &lt;p&gt;Cách viết rất đơn giản, bạn chỉ cần &lt;span&gt;liệt kê &lt;em&gt;”đường dẫn”
&lt;/em&gt;đến thẻ&lt;/span&gt; cần hướng tới, thẻ nào nằm ở cuối cùng sẽ là đối
tượng bị ảnh hưởng &lt;/p&gt;
&lt;/body&gt;</pre>
<p>Nếu bây giờ bạn bắt đâu viết code CSS</p>
<pre class="brush: css; title: ;">em {color: red;}</pre>
<p>Thì tất cả chữ nằm trong thẻ <span class='post-span'>&lt;em&gt;</span> sẽ bị biến thành màu đỏ.</p>
<p>Nhưng nếu bây giờ bạn không muốn có chữ màu đỏ ở thẻ <span class='post-span'>&lt;h1&gt;</span> mà bạn chỉ muốn nó ở các thẻ <span class='post-span'>&lt;p&gt;</span> thôi. Bạn sẽ viết như sau</p>
<pre class="brush: css; title: ;">p em {color:red;}</pre>
<p>Ở luật trên bạn đã thêm &#8220;đường dẫn&#8221; p vào trước em để chỉ ra rằng chỉ có thẻ <span class='post-span'>&lt;em&gt;</span> nào nằm trong <span class='post-span'>&lt;p&gt;</span> mới bị ảnh hưởng và cụ thể là sẽ có màu đỏ.</p>
<p>Ở ví dụ trên bạn thấy thẻ <span class='post-span'>&lt;em&gt;</span> nằm trong thẻ <span class='post-span'>&lt;span&gt;</span> cũng bị ảnh hưởng mặc dù nó không phải là &#8220;con đẻ&#8221; của thẻ <span class='post-span'>&lt;p&gt;</span> nhưng nó lại là &#8220;cháu nội&#8221; của thẻ <span class='post-span'>&lt;p&gt;</span> do vậy nó vẫn bị ảnh hưởng.</p>
<p>Bạn có thể gộp nhiều thẻ vào một Selector như sau</p>
<pre class="brush: css; title: ;">p span em {color:red;}</pre>
<p>Ở luật này bạn đã chỉ ra rất chi tiết chỉ có thẻ <span class='post-span'>&lt;em&gt;</span> nằm trong thẻ <span class='post-span'>&lt;span&gt;</span> và nằm trong thẻ <span class='post-span'>&lt;p&gt;</span> mới bị ảnh hưởng. Trong cách dùng Contextual Selector này bạn có thể gộp bao nhiêu thẻ tùy thích miễn là thẻ bạn muốn hướng tới nằm ở cuối cùng sát cạnh dấu { &#8230; }</p>
<p>.</p>
<p>Nhưng bây giờ nếu bạn chỉ muốn từ &#8220;cấp bậc XHTML&#8221; ở đoạn văn thứ 2 có màu đỏ thì bạn sẽ không làm được với Contextual Selector. Bởi vì 2 đoạn văn đều có cấu trúc giống nhau. Cho nên bạn cần phải sử dụng đến Child Selector</p>
<h5>Child Selector</h5>
<p>Child Selector dùng để hướng tới đối tượng là &#8220;con cái&#8221; trực tiếp cúa chúng trong cấp bậc XHTML. Khi đó bạn có thể dùng dấu lớn hơn &#8220;<span class='post-span'>&#038;gt</span>;&#8221; ở giữa hai thẻ</p>
<pre class="brush: css; title: ;">p &gt; em {color:red;}</pre>
<p>Với luật này bạn chỉ ra rằng chỉ có thẻ &lt;em&gt; là con trực tiếp của thẻ &lt;p&gt; mới bị ảnh hưởng. Còn chữ &#8220;đường dẫn&#8221; ở đoạn văn thứ 2 không phải là con trực tiếp do đó nó không bị ảnh hưởng bởi luật này.</p>
<h5>Kết luận</h5>
<p>Sử dụng thành thạo Contextual Selector sẽ giúp bạn rất nhiều trong quá trình thiết kế giao diện. Có người do không nắm vững khái niệm này đã lạm dụng ID và Class chỉ để hướng tới những đôi tượng cụ thể trong cấp bậc, làm cho code XHTML và CSS của họ trở nên phức tạp và không gọn gàng. Tất nhiên nếu đôi khi bạn không thể hướng tới một đối tượng cụ thể, bạn có thể sử dụng vài ID và Class. Nhưng đừng tuỳ tiện sử dụng chúng chỉ vì bạn không nắm rõ cấp bậc XHTML.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.izwebz.com/css/contextual-selector-css/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Thứ bậc trong XHTML</title>
		<link>http://www.izwebz.com/css/xhtml-hierarchy/</link>
		<comments>http://www.izwebz.com/css/xhtml-hierarchy/#comments</comments>
		<pubDate>Sun, 12 Oct 2008 15:42:08 +0000</pubDate>
		<dc:creator>Demon Warlock</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[cấp bậc]]></category>
		<category><![CDATA[css cơ bản]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.izwebz.com/?p=737</guid>
		<description><![CDATA[Thứ bậc trong XHTML là một khái niệm rất quan trọng mà bạn cần nắm rõ để sử dụng CSS sau này. Thứ bậc của XHTML giống như phả hệ của một gia đình vậy. Ở trên cùng là cụ tổ, xuống dưới là cụ, ông, cha, chú, anh chị em &#8230; Ở hình ví [...]]]></description>
			<content:encoded><![CDATA[<p>Thứ bậc trong XHTML là một khái niệm rất quan trọng mà bạn cần nắm rõ để sử dụng CSS sau này. Thứ bậc của XHTML giống như phả hệ của một gia đình vậy. Ở trên cùng là cụ tổ, xuống dưới là cụ, ông, cha, chú, anh chị em &#8230;</p>
<p><span id="more-737"></span><br/><br/></p>
<div class='tutorial-image'>
<img src="http://www.izwebz.com/wp-content/uploads/2009/08/tree-html.png" alt="HTML tree" />
</div>
<p>Ở hình ví dụ trên bạn sẽ thấy rõ ràng mối liên hện giữa các thẻ với nhau và chúng ta có thể hiểu bằng những cách sau (suy diễn theo kiểu phả hệ):</p>
<ul>
<li> Thẻ <span class='post-span'>&lt;body&gt;</span> đóng vai trò là thẻ gốc và chứa các thẻ con nằm trong nó.</li>
<li> Các thẻ <span class='post-span'>p</span>, <span class='post-span'>h1</span> và <span class='post-span'>img</span> là con của <span class='post-span'>body</span>
<li> Hay nói cách khác <span class='post-span'>body</span> chính là cha của <span class='post-span'>p</span>,<span class='post-span'>h1</span> và <span class='post-span'>img</span>.</li>
<li><span class='post-span'>ul</span> là cha của <span class='post-span'>li</span> hay nói cách khác <span class='post-span'>li</span> là con của <span class='post-span'>ul</span></li>
<li><span class='post-span'>&lt;body&gt;</span> là &#8220;ông nội&#8221; của <span class='post-span'>&lt;ul&gt;</span> và là ông cố của <span class='post-span'>&lt;li&gt;</span></li>
</ul>
<p>Đến đây bạn có thể hỏi &#8220;<em>tại sao tôi cần phải biết phả hệ này</em>?&#8221;, tại vì sau này khi sử dụng CSS để thiết kế giao diện. Đôi khi bạn cần hướng tới một đối tượng cụ thể nào đó trong đoạn code XHTML, nếu bạn không nắm rõ mối liên quan giữa các thẻ với nhau. Có thể bạn sẽ bị nhầm lẫn và hướng tới sai đối tượng.</p>
<p>Ví dụ sau này trong đoạn code của bạn có nhiều thẻ &lt;h1&gt; nhưng bạn chỉ muốn thẻ &lt;h1&gt; nằm trong phần &#8220;content&#8221; là có màu đỏ. Lúc đó bạn có thể hướng tới nó nhờ cấp bậc của XHTML. Nếu cho đoạn code sau</p>
<pre class="brush: css; title: ;">#content h1 {color:red;}</pre>
<p>Như thế chỉ có thẻ <span class='post-span'>&lt;h1&gt;</span> thuộc thẻ <span class='post-span'>&lt;div id=&#8221;content&#8221;&gt;</span> sẽ bị ảnh hưởng, còn các thẻ khác trong trang web sẽ không bị ảnh hưởng vì nó không phải là một thành phần của <span class='post-span'>&lt;div id=&#8221;content&#8221;&gt;</span></p>
<p>Có nhiều người chưa hiểu rõ cấp bậc của XHTML nên họ gặp nhiều khó khăn trong việc hướng đối tượng khi viết code. Vì thế họ đã tuỳ tiện dùng ID và Class chỉ để hướng tới một đối tượng cụ thể, mà nếu nắm rõ khái niệm cấp bậc này, bạn chỉ cần viết một đoạn code nhỏ thay vì có hàng tá ID và Class không cần thiết.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.izwebz.com/css/xhtml-hierarchy/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Position Property</title>
		<link>http://www.izwebz.com/css/css-position-properties/</link>
		<comments>http://www.izwebz.com/css/css-position-properties/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 06:23:28 +0000</pubDate>
		<dc:creator>Demon Warlock</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[cơ bản css]]></category>
		<category><![CDATA[position properties]]></category>
		<category><![CDATA[định vị]]></category>

		<guid isPermaLink="false">http://www.izwebz.com/?p=720</guid>
		<description><![CDATA[Khi đã sử dụng CSS để thiết kế giao diện thì Position Property là một trong những phần quan trọng nhất mà bạn cần hiểu rõ. Position Property chi phối mối tương quan giữa các thành phần của trang web. Có tất cả 4 giá trị cho Position property là: Static, Absolute, Fixed và Relative. [...]]]></description>
			<content:encoded><![CDATA[<p>Khi đã sử dụng CSS để thiết kế giao diện thì Position Property là một trong những phần quan trọng nhất mà bạn cần hiểu rõ. Position Property chi phối mối tương quan giữa các thành phần của trang web. Có tất cả 4 giá trị cho Position property là: Static, Absolute, Fixed và Relative. Trong đó Static là giá trị mặc định khi không có giá trị nào được gán. Trong ví dụ dưới đây bạn sẽ thấy có 4 đoạn văn ngắn. Đoạn văn thứ 1, 2 và 4 tôi để giá trị mặc định là Static và đoạn văn thứ 3 được gán id để chúng ta có thể thay đổi nó mà không ảnh hưởng đến các đoạn khác.</p>
<p><span id="more-720"></span></p>
<h5>Static Position</h5>
<p>Trước hết là chế độ Static mặc định khi không có giá trị nào được gán, bạn sẽ thấy 4 đoạn văn xếp chồng lên nhau</p>
<div class='tutorial-image'>
<img src="http://www.izwebz.com/wp-content/uploads/2009/08/position-static.png" alt="Position Static CSS" />
</div>
<p>Với giá trị Static (giá trị mặc định) các thành phần chỉ đơn thuần được sắp xếp theo thứ tự xuất hiện và được phân cách bởi các giá trị margin mặc định. Để thay đổi cách sắp xếp này, bạn cần sử dụng một trong những cách sau đây.</p>
<h5>Relative Position</h5>
<p>Bây giờ chúng ta sẽ thử di chuyển đoạn văn thứ 2 bằng cách gán cho nó giá trị là relative. Ở mỗi giá trị này sẽ có 4 tuỳ biến lần lượt là top, right, bottom và left cho bạn sử dụng. Tuy nhiên trong hầu hết các trường hợp, bạn chỉ cần sử dụng hai giá trị là top và left là đủ đạt được mục đích.</p>
<pre class="brush: css; title: ;">p#second {position: relative; top: 10px;left: 20px;
border: 1px solid #a4a4a4;background: #faf3c7;}</pre>
<p>Ở code HTML bạn phải có</p>
<pre class="brush: xml; title: ;">&lt;p&gt;Đoạn văn bản thứ nhất …&lt;/p&gt;
&lt;p id=&quot;second&quot;&gt;Đoạn văn bản thứ 2 …&lt;/p&gt;
&lt;p&gt;Đoạn văn bản thứ 3 ..&lt;/p&gt;
&lt;p&gt;Đoạn văn bản thứ 4 …&lt;/p&gt;</pre>
<div class='tutorial-image'>
<img src="http://www.izwebz.com/wp-content/uploads/2009/08/position-relative.png" alt="Position Relative CSS" />
</div>
<p>Ở trình duyệt bạn sẽ thấy đoạn văn bản thứ 2 bị dịch chuyển xuống dưới 10px và lệch sang phải 20px. Như đã nói ở trên các thành phần có mối liên quan đến nhau, do vậy khi bạn đặt giá trị <span class='post-span'>{top: 10px; left: 20px;} </span>thì đoạn văn này sẽ bị di chuyển tương ứng với đoạn văn nằm trên nó. Cụ thể cạnh trên của nó cách cạnh đáy của đoạn thứ 1 là 30px.</p>
<p>Ở trong trường hợp Relative này, khi đoạn văn bị di chuyển nó cũng để lại một khoảng trống bằng với kích thước cũ của nó và dù nó di chuyển sang vị trí mới. Khoảng không nó chiếm vẫn không bị mất đi. Cho nên nếu bạn sử dụng phương pháp này vào giao diện, bạn cũng cần di chuyển đoạn văn thứ 4 sao cho nó không bị đè lên nhau.</p>
<h5>Absolute Position</h5>
<p>Trong phần này ta sẽ thử với giá trị là <span class='post-span'>absolute</span></p>
<div class='tutorial-image'>
<img src="http://www.izwebz.com/wp-content/uploads/2009/08/position-absolute.png" alt="Position absolute CSS" />
</div>
<p>
Bạn sẽ thấy đoạn văn thứ2 bị di chuyển lên trên và cách biên trình duyệt là 10px và 20px tương ứng với trên và trái. Bởi vì khi định vị với giá trị là <span class='post-span'>absolute</span> cho một thành phần nào đó, nó sẽ bị tách ra khỏi vị trí thông thường của nó. Khoảng không cũ nó bỏ lại đã bị đoạn văn thứ 3 di chuyển lên lấp lại. Đoạn văn thứ 2 này trở nên hoàn toàn độc lập với các thành phần xung quanh.</p>
<h5>
Fixed Position</h5>
<p><span class='post-span'>Fixed Position</span> cho hiệu ứng giống y như <span class='post-span'>absolute</span> chỉ có điều khi bạn kéo thanh cuộn dọc, đoạn văn thứ 3 sẽ giữ nguyên vị trí và không bị cuốn theo trình duyệt. Đặc tính này hiện nay ít được sử dụng hơn. Nhưng nếu bạn muốn một thành phần nào đó như là nút bấm hoặc hình quảng cáo luôn kè kè theo sát người đọc mỗi khi họ kéo thanh cuộn dọc, thì bạn có thể sử dụng tính năng này.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.izwebz.com/css/css-position-properties/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Clear và Float</title>
		<link>http://www.izwebz.com/css/clear-va-float/</link>
		<comments>http://www.izwebz.com/css/clear-va-float/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 03:52:33 +0000</pubDate>
		<dc:creator>Demon Warlock</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[clear]]></category>
		<category><![CDATA[clear và float]]></category>
		<category><![CDATA[css cơ bản]]></category>
		<category><![CDATA[float]]></category>

		<guid isPermaLink="false">http://www.izwebz.com/?p=716</guid>
		<description><![CDATA[Clear và Float là kỹ thuật dùng rất nhiều trong thiết kế giao diện bằng CSS với hai tính năng cùng tên là Clear và Float. Float dùng để tách một thành phần bất kỳ khỏi cách hiển thị thông thường của nó để tạo chỗ cho những thành phần ở sau di chuyển lên [...]]]></description>
			<content:encoded><![CDATA[<p>Clear và Float là kỹ thuật dùng rất nhiều trong thiết kế giao diện bằng CSS với hai tính năng cùng tên là Clear và Float. Float dùng để tách một thành phần bất kỳ khỏi cách hiển thị thông thường của nó để tạo chỗ cho những thành phần ở sau di chuyển lên và phủ đầy chỗ trống nếu có. Clear dùng để ngăn không cho thành phần ở dưới di chuyển lên trên đề lấp vào chỗ trống.</p>
<p><span id="more-716"></span></p>
<p>Ví dụ bạn có 2 đoạn văn bản, bạn chỉ muốn đoạn văn thứ nhất bao quanh hình ảnh và đoạn văn thứ hai thì vẫn nằm ở dưới. Theo luật trên thì cữ có chỗ là đoạn văn thứ 2 cũng sẽ tràn lên để lấp chỗ trống. Nếu bạn không muốn điều này xảy ra bạn có thể sử dụng Clear để nó không tràn lên được.</p>
<h5>1. Float</h5>
<p>Float chủ yếu dùng để căn chỉnh hình ảnh sao cho chữ sẽ bao quanh hình ảnh. Nhưng nó cũng được áp dụng nhiều trong việc thiết kế giao diện sử dụng CSS. Ở ví dụ dưới đây sẽ bao gồm một hình logo của izwebz và một đoạn văn bản. Tôi sẽ cho hình được <span class='post-span'>float: left</span> và đoạn văn bản được giữ nguyên.</p>
<pre class="brush: css; title: ;">img {float: left;}</pre>
<p>Để tạo được hiệu ứng này bạn cần có một thẻ &lt;img&gt; và &lt;p&gt;</p>
<pre class="brush: xml; title: ;">
&lt;div id='bao_quanh'&gt;
&lt;img src=&quot;images/ball.png&quot; alt=&quot;ball&quot; /&gt;
   &lt;h3&gt;Box Model&lt;/h3&gt;
  &lt;p&gt;Tạo thẻ div bao quanh là cách để bạn quản lý độ rộng thực
sự của box. cho dù khi tôi thêm giá trị padding bằng 5px vào
mỗi bên trái phải, nó cũng không làm tăng độ lớn. Mà ngược lại,
nó sẽ bị đầy lùi vào biên là 5px .&lt;/p&gt;
&lt;/div&gt;&lt;!--End #bao_quanh--&gt;</pre>
<div class='tutorial-image'>
<img src="http://www.izwebz.com/wp-content/uploads/2009/08/clear-float.png" alt="clear and float CSS" />
</div>
<p>
Tóm lại khi bạn cho tấm hình <span class='post-span'>float: left </span>bạn khiến nó bị dịch chuyển sang phía tận cùng bên trái (hoặc phải nếu <span class='post-span'>float: right</span>) so với thẻ mẹ của nó là <span class='post-span'>div id=&#8221;bao_quanh&#8221;</span>. Đoạn văn bản cũng sẽ di chuyển tương tự so với thẻ mẹ của nó, do đó tạo ra hiệu ứng bao quanh lấy hình ảnh. Cho nên nếu bây giờ bạn không muốn chữ bao quanh hình nữa mà muốn nó tạo ra 2 cột song song với nhau, bạn chỉ cần tăng giá trị margin-left cho đoặn văn thành 150px.</p>
<pre class="brush: css; title: ;">p {margin-left: 150px;background: #faf3c7;}
img {float: left;}</pre>
<div class='tutorial-image'>
<img src="http://www.izwebz.com/wp-content/uploads/2009/08/clear-float-2.png" alt="Clear and Float CSS" />
</div>
<p>Khi bạn cho tấm hình float sang bên trái và đoạn văn bản có lề trái bằng với độ lớn của tấm hình, thì hiệu ứng bao xung quanh hình sẽ mất đi mà thay vào đó bạn được 2 cột song song với nhau. Đây là nguyên lý cơ bản nhất để tạo ra giao diện có nhiều cột sử dụng float. Miễn là mỗi thành phần khi được float đều có một giá trị độ rộng nhất định thì nó sẽ xếp song song với nhau và tạo ra cột (nếu diện tích đủ rộng). Nếu bạn làm như vậy với 3 thẻ &lt;div&gt; <span class='post-span'>float: left</span> và có độ rộng nhất định, bạn sẽ được 3 cột song song. Sau đó bạn có thể thêm các thành phần vào từng cột để tạo nên giao diện.</p>
<h5>2. Clear</h5>
<p>Luôn đi chung với Float là Clear. Clear thực chất chỉ là một tính năng chống không cho đoạn văn ở dưới tràn lên trên để lấp vào chỗ trống. Như đã nói ở trên, khi bạn dùng float bạn có thể tạo ra hiệu ứng chữ bao xung quanh hình. Nhưng đôi khi vì dư chỗ, cho nên đoạn văn ở dưới di chuyển lên trên và lấp vào chỗ trống. Tất nhiên đó không phải là điều bạn muốn, do vậy bạn cần sử dụng Clear để &#8220;dọn sạch&#8221; nó đi.</p>
<p>Ở ví dụ dưới đây tôi có 2 đoạn văn và 2 tấm hình. Nếu bạn cho tất cả các thành phần đều <span class='post-span'>float: left</span> bạn sẽ thấy nó bị như hình dưới đây.</p>
<div class='tutorial-image'>
<img src="http://www.izwebz.com/wp-content/uploads/2009/08/clear-float-3.png" alt="Clear and Float CSS" />
</div>
<p>Lý do là vì tất cả các thành phần đều được <span class='post-span'>float: left</span> do vậy hình và đoạn văn ở dưới nó sẽ cố phủ đầy chỗ trống mà tấm hình và đoạn văn thứ nhất để lại khi bị <span class='post-span'>float: left</span>. Và cũng chính vì lẽ đó mà tạo ra hiệu ứng ta không mong đợi. Có nhiều cách xử lý vấn đề này, tôi sẽ hướng dẫn bạn cụ thể hơn trong video tutorial về Clear và Float. Còn bây giờ đây là cách phổ biến nhất và cũng gây ra nhiều tranh cãi nhất.</p>
<p>Để đạt được mục đích sao cho tấm hình và đoạn văn thứ 2 &#8220;ngoan ngoãn&#8221; chịu chui xuống dưới, chúng ta sẽ thêm một thẻ div trống vào dưới đoạn văn thứ nhất.</p>
<pre class="brush: xml; title: ;">
&lt;div id='bao_quanh'&gt;
&lt;img src=&quot;images/ball.png&quot; alt=&quot;ball&quot; /&gt;
   &lt;h3&gt;Clear và Float&lt;/h3&gt;
  &lt;p&gt;&lt;!--Nội dung bị cắt ngắn --&gt;&lt;/p&gt;

&lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;&lt;!-- Thẻ div trống với class=&quot;clear&quot;--&gt;

&lt;img src=&quot;images/ball.png&quot; alt=&quot;ball&quot; /&gt;
   &lt;p&gt;&lt;!--Nội dung bị cắt ngắn --&gt;&lt;/p&gt;
&lt;/div&gt;&lt;!--End #bao_quanh--&gt;</pre>
<p>Sau đó ở trong CSS, bạn chỉ việc thêm đoạn code sau:</p>
<pre class="brush: css; title: ;">.clear {clear: both;}</pre>
<p>Với một thẻ &lt;div&gt; và một class dùng để clear, bây giờ thì nó sẽ xuất hiện như ý rồi</p>
<div class='tutorial-image'>
<img src="http://www.izwebz.com/wp-content/uploads/2009/08/clear-float-4.png" alt="Clear and Float CSS" />
</div>
<p>
Sở dĩ biện pháp này gây tranh cãi là vì chúng ta thêm một thành phần không phải là nội dung vào phần nội dung cốt để đạt được mục đích. Điều này đi ngược lại với nguyên lý của CSS là tách rời nội dung khỏi cách trình bày. Cho nên nếu bạn không muốn có một thẻ div trống trong code HTML của mình bạn cũng có thể làm theo cách dưới đây. </p>
<h5>Sử dụng clearfix</h5>
<p>Bạn copy đoạn code sau và cho vào stylesheet</p>
<pre class="brush: css; title: ;">.clearfix:after {
	visibility: hidden;
	display: block;
	font-size: 0;
	content: &quot; &quot;;
	clear: both;
	height: 0;
	}
* html .clearfix             { zoom: 1; } /* IE6 */
*:first-child+html .clearfix { zoom: 1; } /* IE7 */</pre>
<p>Bây giờ nếu bạn muốn clear nó thì bạn không phải tạo một thẻ div trống nữa mà chỉ việc khai báo <span class='post-span'>class=&#8221;clearfix&#8221;</span> vào thẻ mẹ chưa các thành phần float. Trong ví dụ ở trên bạn thêm vào phần sau</p>
<pre class="brush: xml; title: ;">&lt;div id=&quot;bao_quanh&quot; class=&quot;clearfix&quot;&gt;</pre>
<p>Với cách này bạn không cần phải thêm một thẻ div nữa mà vẫn hiện ngon lành. Cho đến bây giờ cách này cũng rất phổ biến vì nó hiển thị tốt trên mọi trình duyệt.</p>
<p>Tôi cũng có làm một <a href="http://www.izwebz.com/css/clear-va-float-video/">Video tutorial</a> về chủ đề này, bạn có thể tham khảo thêm. </p>
<p>Cá nhân tôi vẫn luôn sử dụng phương pháp này bởi vì nó đơn giản, gọn nhẹ và không cầu kỳ. Chỉ có một thẻ div trống thêm vào phần nội dung cũng chẳng chết ai >&#8221;<. Chắc có lẽ phải chờ đến khi CSS3 ra đời và có cách khắc phục tốt hơn và dễ dàng hơn.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.izwebz.com/css/clear-va-float/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

