Sunday, December 22, 2013

Cách ẩn bài viết mới nhất khỏi trang chủ trong Blogspot

Bài viết mới nhất trong Blogspot mặc định sẽ được hiện lên đầu tiên khi khách truy cập vào trang chủ, tiếp theo sau là các bài viết cũ hơn. Có thể vì lý do nào đó mà bạn không muốn bài viết mới nhất hiện ra, việc này được thực hiện rất đơn giản bằng thủ thuật thay đổi ngày up bài.

Blogspot (cũng như đa số các hệ quản trị nội dung khác) sắp xếp bài viết nào lên trước phụ thuộc vào ngày bạn up bài viết đó lên. Do vậy, đơn giản chỉ cần để ngày up bài trong quá khứ thì bài viết đấy sẽ không còn hiện ra bên ngoài trang chủ nữa. Cách làm như sau, ở phần Cài đặt bài đăng bên tay phải của khung soạn thảo bài viết bạn nhấn vào Lịch biểu hoặc Được xuất bản vào:

Lịch biểu thay đổi ngày up bài trên lý thuyết

Lịch biểu này chính là ngày điều chỉnh thời gian đăng bài viết, nếu bạn không chỉnh sửa gì thì nó sẽ là ngày của hôm bạn up bài, như trên hình là ngày 22/1/2014 (ngày tôi viết bài này). Tôi sẽ lùi ngày up bài về 1 tháng tức là 22/12/2013, sau đó nhấn Hoàn thành để xác nhận. 

Ngày up bài đã lùi về quá khứ 1 tháng

Như vậy là xong, khi bạn nhấn Xuất bản, mặc dù bài này là bài viết mới nhất nhưng nó sẽ không hiện ra trang chủ.

Đây cũng là cách giúp bạn điều chỉnh thứ tự xuất hiện bài viết trong thư mục (nhãn) bất kỳ, nếu muốn bài A ở sau bài B, bạn chỉ việc điều chỉnh thời gian up bài của bài A ở trong quá khứ so với thời gian up bài của bài B.

Wednesday, December 18, 2013

Tạo bài viết liên quan thủ công trong blogspot

Trong một bài viết trước đây, mình có hướng dẫn các bạn cách tạo bài viết liên quan tự động cho blogspot. Cách này có ưu điểm là bạn đỡ tốn công nhọc sức mỗi lần viết bài mới, nhưng có nhược điểm là đôi khi nó không đúng với nhu cầu của mình lắm. Vì vậy hôm nay Blog Mạng Lưới Toàn Cầu sẽ hướng dẫn bạn cách tạo bài viết liên quan theo cách thủ công, giúp bạn chủ động hơn, chọn chính xác bài viết muốn liên kết.

Cách làm như sau. Đầu tiên bạn viết ra tên danh sách các bài viết liên quan (các bài bạn muốn liên kết), chẳng hạn với bài này, tôi viết ra danh sách đó như dưới đây:

Cách tạo bài viết ngẫu nhiên cho blogspot
Hướng dẫn tạo menu ngang cho blogspot
Cách tạo fanpage cho blogspot

OK, tiếp theo tôi làm 3 mục trên thành danh sách bằng cách quét cả ba rồi nhấn vào biểu tượng 3 dấu gạch ngang trên khung soạn thảo:


Bạn tick vào dấu chấm tròn hay 1,2,3 đều được, tôi thường chọn dấu chấm tròn, kết quả:
  • Cách tạo bài viết ngẫu nhiên cho blogspot
  • Hướng dẫn tạo menu ngang cho blogspot
  • Cách chèn fanpage vào blogspot
Vâng, vậy là bạn đã hoàn thành bước đầu, giờ chúng ta tiến hành tạo liên kết cho chúng. Bạn quét vào tiêu đề trong danh sách rồi nhấn vào biểu tượng ghi chữ Liên kết trên khung soạn thảo.

Tạo liên kết trong blogspot

Một khung sẽ bật ra cho bạn điền thông tin, nó sẽ giống như dưới đây:


Ở cái địa chỉ web, bạn phải điền địa chỉ trang mà bạn muốn liên kết vào, cuối cùng nhấn OK là được, kết quả:
Bạn đã thấy bài viết đầu tiên có liên kết rồi đúng không, làm tương tự cho các tiêu đề bài viết phía dưới, và đây là kết quả cuối cùng:
Giờ cả 3 đều có liên kết roài nhé :)

P/S: Bài viết được tạo cảm hứng từ câu hỏi của bạn xanh la cay 

Friday, December 13, 2013

Cách căn giữa ảnh bằng CSS

Căn giữa chữ rất dễ, bạn chỉ cần sử dụng thuộc tính text-align: center; là OK.
Còn căn giữa ảnh thì lại không dễ như thế! Đã rất nhiều lần tôi vò đầu bứt tai vì chẳng căn giữa nổi! Thực ra kỹ thuật không có gì đặc biệt, nhưng cần mẹo nhỏ thì mới được. Đấy là đặc điểm chung của mẹo, biết thì rất dễ mà không biết thì khó vô cùng (chém gió tí!)

Giả dụ tôi có cái ảnh như này:



Theo mặc định, giống như trên, bức ảnh sẽ dạt về bên trái, vậy làm thế nào để tôi cho nó ra giữa bây giờ?

Cách làm như sau:

- Đầu tiên trong mã đánh dấu HTML của ảnh, bạn thêm class có tên là cangiua vào (bất kỳ ảnh nào muốn căn giữa thì bạn đều đưa class này vô): <img src="images/cham-tron.png" class="cangiua"/>

- Tiếp theo trong CSS bạn thêm mấy dòng sau: img.cangiua {display: block; margin-left: auto; margin-right: auto;}

Và đây là kết quả:

Vậy là xong! Giờ thì căn giữa ảnh thật dễ :))

Có thể bạn muốn đọc thêm bài thuộc tính display trong CSS để hiểu rõ hơn ý nghĩa những dòng code trên.

Selector thuộc tính trong CSS

Có rất nhiều kiểu Selector khác nhau trong CSS, với tôi Selector thuộc tính là cái vô cùng thú vị.

Code mẫu

CSS:

[type="text"] {background-color:yellow;}

HTML:

<form>
<label>Họ và tên</label><input type="text"><br>
<label>Email</label><input type="email">
</form>

Kết quả:

Cách dùng

Về cơ bản ý tưởng về selector thuộc tính rất đơn giản, thay vì dùng id hay class để xác định đối tượng cần tác động, chúng ta dùng ngay các thuộc tính của đối tượng đó để định danh.

Các ví dụ khác

HTML:

<a href="http://www.mangluoitoancau.com" title="Nguyễn Đức Anh"><img src="images/ducanh.jpg"></a>

CSS:

[title="Nguyễn Đức Anh"] {margin-left:20%;}

Kết quả:

Thursday, December 12, 2013

Các thuộc tính con trỏ chuột trong CSS

Thuộc tính trỏ chuột quyết định cách hiển thị của con trỏ khi di qua một thành phần nào đó.
Thực sự thì đến bài này tôi mới biết là có nhiều hiệu ứng trỏ chuột đến vậy trong CSS. Bạn muốn biết ngay không, thế thì dưới đây là tên của các thuộc tính đó, bạn cứ di chuột qua từng từ để thấy con trỏ chuột thay đổi như thế nào:

auto
alias
crosshair
col-resize
default
e-resize
help
move
n-resize
ne-resize
nw-resize
not-allowed
no-drop
pointer
progress
row-resize
s-resize
se-resize
sw-resize
text
w-resize
wait

Code mẫu:

p.wresize {cursor:w-resize}
p.move {cursor:move}
p.wait {cursor:wait}

Các thông số

  • Giá trị mặc định: auto
  • Tính kế thừa: Có
  • Phiên bản CSS: Bắt đầu được đưa vào từ CSS2
  • Cú pháp trong JavaScript, ví dụ: object.style.cursor="crosshair"

Trình duyệt hỗ trợ

Tất cả các trình duyệt phổ thông gồm Chrome, FireFox, Opera, Safari và IE đều hỗ trợ các thuộc tính liên quan đến con trỏ.

Con trỏ chuột là ảnh

Cũng thú vị khi biết rằng bạn có thể quyết định con trỏ xuất hiện như là một ảnh bất kỳ mà bạn muốn.

Hãy thử di chuyển vào hộp này xem như thế nào. Bạn sẽ thấy mũi tên màu xanh.

Code mẫu:

cursor: url(images/my-cursor.png), auto;

Selector :after trong CSS

Bộ chọn after trong CSS được dùng để chèn nội dung bất kỳ sau một nội dung của thẻ nào đó.
Ví dụ:

CSS:

p:after
{
content:" (Blog Mạng Lưới Toàn Cầu)";
}


HTML: 

<h4>Bạn cảm thấy gì?</h4>
<p>Mỗi ngày bạn thức dậy và không uể oải với việc định làm trong ngày, thế thì bạn đã chọn đúng công việc</p>

Đoạn code ở trên sẽ chèn dòng chữ (Blog Mang Lưới Toàn Cầu) sau bất kỳ thẻ p nào. Kết quả:

Bạn cảm thấy gì?

Mỗi ngày bạn thức dậy và không uể oải với việc định làm trong ngày, thế thì bạn đã chọn đúng công việc

Trình duyệt hỗ trợ

Tất cả các trình duyệt phổ thông gồm Chrome, FireFox, Opera, Safari và IE đều hỗ trợ Selector :after

Selector :before trong CSS

Bộ chọn before trong CSS được dùng để chèn nội dung bất kỳ trước một nội dung của thẻ nào đó.
Ví dụ:

CSS:

p:before
{
content:"(Blog Mạng Lưới Toàn Cầu) ";
}


HTML: 

<h4>Bạn định làm gì</h4>
<p>Một ngày đẹp trời phải không? Sao bạn không đi chơi đâu đó? Sao lại ngồi trước máy tính học HTML và CSS thế này?! À ha. Ông anh không phải xoắn quẩy!</p>

Đoạn code ở trên sẽ chèn dòng chữ (Blog Mang Lưới Toàn Cầu) trước bất kỳ thẻ p nào. Kết quả:

Bạn định làm gì

Một ngày đẹp trời phải không? Sao bạn không đi chơi đâu đó? Sao lại ngồi trước máy tính học HTML và CSS thế này?! À ha. Ông anh không phải xoắn quẩy!

Trình duyệt hỗ trợ

Tất cả các trình duyệt phổ thông gồm Chrome, FireFox, Opera, Safari và IE đều hỗ trợ Selector :before

Lớp giả first-letter trong CSS

First-letter là lớp giả dùng để lấy ký tự đầu tiên trong thẻ bất kỳ nào đó.
Giả dụ chúng ta có đoạn code sau:

CSS:

h5:first-letter
{
font-size:250%;
color:green;

font-weight:bold;
}


Mã đánh dấu HTML:

<h4>Xin chào đến với Blog Mạng Lưới Toàn Cầu</h4>
<h5>Tôi tên là Nguyễn Đức Anh</h5>
<h5>Tôi sống ở Hà Nội, Việt Nam</h5>
<h5>Tôi thích thiết kế web, và các công nghệ liên quan</h5>


Thế thì bất kỳ ký tự đầu tiên nào nằm trong thẻ h5 đều được bôi đậm, có màu xanh và có kích thước gấp 2,5 lần bình thường.

Kết quả:

Xin chào đến với Blog Mạng Lưới Toàn Cầu

Tôi tên là Nguyễn Đức Anh
Tôi sống ở Hà Nội, Việt Nam
Tôi thích thiết kế web, và các công nghệ liên quan

Trình duyệt hỗ trợ

Tất cả các trình duyệt phổ thông gồm Chrome, FireFox, Opera, Safari và IE đều hỗ trợ lớp giả first-letter

Các thuộc tính có thể áp dụng cho first-letter

  • Thuộc tính font
  • Thuộc tính color
  • Thuộc tính background 
  • Thuộc tính margin
  • Thuộc tính padding 
  • Thuộc tính border 
  • Thuộc tính text-decoration
  • Thuộc tính vertical-align (chỉ khi float là none)
  • Thuộc tính text-transform
  • Thuộc tính line-height
  • Thuộc tính float
  • Thuộc tính clear

Wednesday, December 11, 2013

Lớp giả first-child trong CSS

First-child dịch ra tiếng Việt là đứa con cả, và trong CSS, điều này có nghĩa là nó sẽ tác động đến thẻ đầu tiên của thẻ cha.

Giả dụ tôi có 3 thẻ p như thế này:

<p>Họ và tên: Nguyễn Đức Anh</p>
<p>Chức vụ: Quản trị web, Thiết kế web</p>
<p>Kỹ năng: HTML, CSS, JavaScript, JQuery, PHP, PTS</p>

Giờ nếu tôi viết trong CSS như thế này: 

p:first-child {color:blue} 

Thì dòng chữ đầu tiên Họ và tên: Nguyễn Đức Anh sẽ có màu xanh. 

Có một chú ý nhỏ, đó là câu lệnh p:first-child {color:blue} sẽ tác động đến tất cả thẻ p mà là con cả, chẳng hạn nếu chúng ta có mã đánh dấu như sau:

<!DOCTYPE html>
<html>
<head>
<title>Blog Mạng Lưới Toàn Cầu</title>
<style>
p:first-child
{
p:first-child {color:blue}
}
</style>
</head>
<body>

<p>Họ và tên: Nguyễn Đức Anh</p>
<p>Chức vụ: Quản trị web, Thiết kế web</p>
<p>Kỹ năng: HTML, CSS, JavaScript, JQuery, PHP, PTS</p>

<div>
<p>Sở thích: Chơi thể thao, lướt web</p>
<p>Nhân vật ưa thích: Osho</p>
</div>

</body>
</html>

Theo bạn những đoạn văn bản nào sẽ có màu xanh? Câu trả lời là có 2 đoạn. Đoạn thứ nhất là Họ và tên: Nguyễn Đức Anh thì bạn đã hiểu. Đoạn thứ hai cũng có màu xanh, đó là Sở thích: Chơi thể thao, lướt web

Sở dĩ "Sở thích: Chơi thể thao, lướt web" có màu xanh là bởi vì nó cũng là con cả, cụ thể, nó là con cả của thẻ div.

Chốt hạ: lớp giả first-child tác động đến tất cả các con cả của các thẻ khác nhau.

Trình duyệt hỗ trợ

Tất cả các trình duyệt phổ thông đều hỗ trợ first-child, bao gồm: Chrome, FireFox, Opera, Safari, IE

Một số ví dụ khác

CSS:

p:first-child b
{
background:yellow;
}


Mã đánh dấu:

<p>Tôi là <b>Nguyễn Đức Anh</b>. Tôi quản trị trang web <b>Blog Mạng Lưới Toàn Cầu</b>.</p>
<p>Tôi sinh năm <b>1987<./b>. Quê ở <b>Hà Tây</b>.</p>

Kết quả: Làm cho tất cả các nội dung bôi đậm trong thẻ p đầu tiên có nền màu vàng.

Tôi là Nguyễn Đức Anh. Tôi quản trị trang web Blog Mạng Lưới Toàn Cầu.
Tôi sinh năm 1987. Quê ở Hà Tây.

Danh sách các thẻ trong HTML

Bạn muốn có danh sách ngắn gọn các thẻ trong HTML? Bạn muốn xem lại bất cứ khi nào mình muốn? Thế thì bạn đã đến đúng nơi! Trong bài viết này Blog Mạng Lưới Toàn Cầu sẽ cung cấp cho bạn thông tin đơn giản nhưng đầy đủ về các thẻ HTML.

Tài Liệu HTML chuẩn

<!DOCTYPE html>
<html>
<head>
<title>Tiêu đề bài viết</title>
</head>

<body>
Nội dung bài viết...
</body>

</html>

Các thẻ cơ bản

<h1>Thẻ quan trọng nhất, có kích thước lớn nhất</h1>
<h2> . . . </h2>
<h3> . . . </h3>
<h4> . . . </h4>
<h5> . . . </h5>
<h6>Thẻ quan trọng kém nhất, có kích thước nhỏ nhất</h6>

<p>Dùng cho văn bản</p>
<br> (Dùng để ngắt dòng)
<hr> (Tạo đường kẻ ngang)
<!-- Để lại chú thích trong HTML -->

Các thẻ dùng để định dạng

<b>Bôi đậm văn bản</b>
<i>Chữ in nghiêng</i>
<u>gạch chân văn bản</u>
<strong>Văn bản quan trọng</strong>
<em>Nhấn mạnh văn bản</em>
<code>Mã máy tính</code>
<small>Chữ nhỏ hơn</small>

<abbr> (giải thích chữ viết tắt)
<address> (địa chỉ liên hệ)
<blockquote> (dẫn nguồn trích dẫn)
<sub> (dùng để tạo chỉ số dưới)
<sup> (dùng để tạo chỉ số trên)

Liên kết

Liên kết dạng văn bản: <a href="http://www.mangluoitoancau.com/">Blog Mạng Lưới Toàn Cầu</a>
Liên kết dạng hình ảnh: <a href="http://www.mangluoitoancau.com/"><img src="URL nguồn ảnh" alt="Văn bản thay thế"></a>
Liên kết tới email: <a href="mailto:mangluoitoancau.com@gmail.com">Gửi email đến Blog Mạng Lưới Toàn Cầu</a>

Ảnh

<img src="URL nguồn ảnh" alt="Văn bản thay thế" height="100" width="100" title="mô tả ảnh khi hover qua">

Định dạng style và section

<style type="text/css">
a {color:red;}
h2 {color:blue; font-size:18px;}
</style>

<div>Định vị một khu vực Block trong tài liệu HTML</div>

<span>Định vị khu vực inline trong tài liệu HTML</span>

Danh sách không có thứ tự

<ul>
<li>Nội dung</li>
<li>Nội dung</li>
</ul>

Danh sách có thứ tự

<ol>
<li>Nội dung thứ nhất</li>
<li>Nội dung thứ hai</li>
</ol>

Bảng - table

<table border="1">
<tr>
<th>Tiêu đề cột</th>
<th>Tiêu đề cột</th>
</tr>
<tr>
<td>nội dung</td>
<td>nội dung</td>
</tr>
</table>

Iframe

<iframe src="http://www.mangluoitoancau.com"></iframe>

Thẻ Form

<form action="xyly.php" method="post/get">

<input type="email" name="email" size="50" maxlength="50" required>
<input type="password" required>
<input type="checkbox" checked="checked">
<input type="radio" checked="checked">
<input type="submit" value="Gửi">
<input type="reset" value="Xóa">
<input type="hidden">
<select>
<option>Bánh Mỳ Trứng</option>
<option selected="selected">Bánh Mỳ Thịt</option>
<option>Bánh Mỳ Trộn</option>
</select>

<textarea name="binhluan" rows="50" cols="40"></textarea>

</form>

Entities - Các ký tự không thể gõ trực tiếp từ bàn phím

&#169; đại diện cho ©
&#8482; đại diện cho ™
&#163; đại diện cho £

Tuesday, December 10, 2013

CSS cho thẻ table

Table là thẻ thường dùng trong HTML. Trong các bố cục kiểu Excel có hàng và cột thì table luôn được ưu tiên sử dụng mặc dù thẻ div cũng làm được điều tương tự về mặt hiển thị - lý do là vì div không thể hiện được sự liên quan giữa các dữ liệu với nhau. Nhưng mục đích chính của bài này lại ở phần khác, đó là trang trí cho thẻ table bằng CSS.

Tạo đường viền cho table

Code mẫu:

table, th, td {border: 1px solid #000}

Kết quả:

Họ và TênQuê Quán
Nguyễn Đức AnhHà Tây
Hạ Thị MếnHà Nội

Chỉ sử dụng đường viền đơn cho table

Như bạn thấy ở bảng trên, đường viền đôi được tạo ra cho bảng - nó là kết quả tổng hợp của các đường viền của table, th và td, kể ra thì nó cũng không xấu, nhưng đa số chúng ta thích đường viền đơn hơn. Để đạt được kết quả đó chúng sử dụng thuộc tính border-collapse.

Code mẫu:

table {border-collapse:collapse;}
table,th, td {border: 1px solid #333;}

Kết quả:

Họ và TênQuê Quán
Nguyễn Đức AnhHà Tây
Hạ Thị MếnHà Nội

Đệm trong table

Code mẫu: 

td {padding:10px;}

Kết quả:

Họ và TênQuê Quán
Nguyễn Đức AnhHà Tây
Hạ Thị MếnHà Nội

Màu cho table

Bạn có thể đổi màu đường viền, màu chữ và màu nền cho bảng một cách tùy ý. 

Code mẫu:

table, td, th {border:1px solid red;}
th {background-color:blue; color:white;}

td {color:#321}

Kết quả:

Họ và TênQuê Quán
Nguyễn Đức AnhHà Tây
Hạ Thị MếnHà Nội

Thay đổi chiều rộng và chiều cao trong table

Không khó để đoán ra được chúng ta sẽ sử dụng thuộc tính gì để thay đổi chiều rộng và chiều cao cho table - vẫn thế thôi - đó là thuộc tính width và height.

Code mẫu:

td {height:60px; width:150px;}

Kết quả:

Họ và TênQuê Quán
Nguyễn Đức AnhHà Tây
Hạ Thị MếnHà Nội

Căn lề cho chữ trong table

Chữ trong table có thể căn thoải mái theo cả chiều ngang lẫn chiều dọc, theo chiều ngang chúng ta sử dụng thuộc tính text-align, theo chiều dọc dùng thuộc tính vertical-align.

Code mẫu:

td {height:60px; width:150px; text-align:center; vertical-align:center;}

Kết quả:

Họ và TênQuê Quán
Nguyễn Đức AnhHà Tây
Hạ Thị MếnHà Nội

Sunday, December 8, 2013

Các thuộc tính trong HTML

Các thuộc tính trong HTML cung cấp thông tin bổ sung cho các thẻ. Nội dung của nó rất quan trọng, tuy nhiên sẽ không có ý nghĩa nhiều lắm nếu bạn chưa có tí kinh nghiệm nào với HTML và CSS.

Đặc điểm

  • Các thẻ HTML có thể chứa một hoặc nhiều thuộc tính
  • Các thuộc tính cung cấp thông tin bổ sung cho các thẻ
  • Các thuộc tính luôn nằm trong các thẻ mở (chứ không phải thẻ đóng nhé)
  • Các thuộc tính thường xuất hiện dưới dạng cặp tên/giá trị kiểu như: tên="giá trị"

Ví dụ

<a href="http://www.mangluoitoancau.com">Blog Mạng Lưới Toàn Cầu</a>

Trong ví dụ trên, href chính là một thuộc tính và http://www.mangluoitoancau.com là giá trị của thuộc tính href.

Luôn sử dụng dấu nháy cho giá trị

  • Giá trị của thuộc tính phải được đặt trong dấu nháy kép (đóng và mở), điều đó có nghĩa là bạn không được phép viết kiểu này: <a href=http://www.mangluoitoancau.com>Blog Mạng Lưới Toàn Cầu</a>
  • Bạn có thể đặt trong dấu nháy đơn nếu muốn nhưng dấu nháy kép là cách dùng phổ biến hơn, điều đó có nghĩa kiểu viết sau được chấp nhận: <a href='http://www.mangluoitoancau.com'>Blog Mạng Lưới Toàn Cầu</a>
  • Đôi khi (nhưng rất hiếm thôi) các giá trị bao gồm dấu nháy kép, khi đó bạn buộc phải sử dụng dấu nháy đơn cho giá trị, ví dụ: name='Ngày "Bát Giới" Trở Về'

Sử dụng chữ thường cho các thuộc tính

HTML chấp nhận cả chữ thường và HOA cho tên và giá trị của thuộc tính, dù vậy World Wide Web Consortium (W3C) - tổ chức quốc tế về tiêu chuẩn web khuyến cáo chúng ta nên sử dụng chữ thường mà thôi.

Trong XHTML (phiên bản nghiêm ngặt hơn của HTML) việc viết chữ in thường là điều bắt buộc.

Các thuộc tính phổ biến

  • Một số thuộc tính là hết sức phổ biến, nó có thể được sử dụng trong bất cứ thẻ nào của HTML. Nhóm thuộc tính quyền lực này có tên tiếng Anh là HTML Global Attributes - mà tôi cũng chưa biết phải dịch sao cho chuẩn.
  • Vài ví dụ về các HTML Global Attributes là các thuộc tính như: class, id, style, title

Thursday, December 5, 2013

Thẻ title trong HTML

Thẻ title dùng để tạo tiêu đề cho bài viết, đây là thẻ cơ bản vào bậc nhất trong HTML và nó có ý nghĩa đặc biệt quan trọng khi SEO.
Code mẫu:

<html>

<head>
<title>Tiêu đề bài viết</title>
</head>

<body>
Nội dung bài viết
</body>

</html>

Ứng dụng

  • Cung cấp tiêu đề trên toolbar của trình duyệt
Tiêu đề bài viết hiện trên thanh toolbar
  • Hiển thị tiêu đề cho trang khi được thêm vào danh sách ưa thích của trình duyệt
Tiêu đề bài viết hiện lên trong danh sách ưa thích (còn gọi là dấu trang)
  • Cung cấp tiêu đề cho các bài viết trong kết quả trả về của các cỗ máy tìm kiếm (thí dụ: Google, Bing...)
Tiêu đề hiện trên kết quả trả về của Google

Trình duyệt hỗ trợ

Được hỗ trợ bởi tất cả các trình duyệt phổ biến gồm Chrome, FireFox, Opera, Safari và IE

Các chú ý

  • Mỗi một trang HTML chỉ được phép chứa duy nhất một phần tử title mà thôi
  • Nếu không có thẻ <title> nào trong trang HTML thì trang HTML đó sẽ được xác định là không hợp lệ
Tôi tạo một trang HTML không có thẻ title rồi sử dụng http://validator.w3.org để check lỗi, và đây là kết quả:

Thông báo lỗi khi thiếu thẻ title

Thông báo nói với chúng ta rằng, thẻ head bị thiếu thẻ title và bạn cần bổ sung nó.

Thursday, November 14, 2013

Thẻ form trong HTML

Thẻ form là một trong những thẻ quan trọng nhất trong HTML, giữ vai trò tương tác giữa người dùng và trang web. Các thao tác trao đổi nội dung như đăng nhập, đăng ký, bình luận đều thông qua form và các thành phần khác liên quan.

Code mẫu

<form action="#" method="get">
Họ tên: <input type="text" name="hoten"><br />
Quê quán: <input type="text" name="quequan"><br />
<input type="submit" value="Submit">
</form>


Kết quả:

Họ tên:
Quê quán:

Trình duyệt hỗ trợ

Thẻ form được tất cả các trình duyệt thông dụng hỗ trợ, trong đó có Chrome, FireFox, Opera, Safari và IE.

Các thành phần trong form

Các thuộc tính

2 thuộc tính quan trọng hàng đầu trong form là action và method

Thuộc tính action

<form action="xuly.php" method="get">
Họ tên: <input type="text" name="hoten"><br />
Quê quán: <input type="text" name="quequan"><br />
<input type="submit" value="Submit">
</form>

Thuộc tính action dùng để xác định địa chỉ trang web mà những dữ liệu được nhập vào được gửi đến và xử lý, tùy vào ngôn ngữ lập trình web mà bạn có thể thấy đuôi file là php hoặc asp - Đoạn code ở form trên có nghĩa là thông tin về họ tên và quê quán được gửi tới file xuly.php

Thuộc tính method

<form action="xuly.php" method="post">
Họ tên: <input type="text" name="hoten"><br />
Quê quán: <input type="text" name="quequan"><br />
<input type="submit" value="Submit">
</form>


Thuộc tính method dùng để xác định cách thức dữ liệu được đẩy lên. Có 2 giá trị cho method:
  • get: dữ liệu sẽ được đưa lên và nhìn thấy được qua URL (và bạn sẽ thấy cặp tên=giá trị được gắn vào địa chỉ web), vì URL có chiều dài tối đa khoảng 3000 ký tự nên phương thức này không dành để gửi dữ liệu lớn. Ngoài ra vì dữ liệu đầu vào hiện trên URL nên phương thức này cũng không thích hợp với dữ liệu nhạy cảm - thí dụ như password. Tất nhiên ở phía ngược lại nó hợp với dữ liệu không nhạy cảm, chẳng hạn như các truy vấn tìm kiếm.
  • post: không giới hạn dung lượng dữ liệu, thích hợp với dữ liệu nhạy cảm, password chắc chắn phải dùng phương thức post.

Xử lý form

Thẻ textarea trong HTML

Thẻ textarea chuyên dụng trong Form, dùng để nhập văn bản. Thẻ input kiểu text cũng để nhập văn bản, nhưng thường là đoạn ngắn còn textarea được dùng để nhập cả đoạn văn bản dài.

Code mẫu:

<textarea rows="5" cols="40" placeholder="Gõ nội dung thông điệp vào đây">
</textarea>


Kết quả:

Trình duyệt hỗ trợ

Thẻ textarea được tất cả các trình duyệt phổ thông hỗ trợ, trong đó có Chrome, FireFox, Opera, Safari và IE.

Đặc điểm

  • Không giới hạn số ký tự nhập vào.
  • Kích thước của textarea được thay đổi thông qua thuộc tính rows và cols, nhưng cách tốt hơn để tác động đến kích thước là thông qua thuộc tính width và height trong CSS.

Các thuộc tính

#1. autofocus: khi vào trang thì con trỏ tập trung ngay lập tức tại textarea

Code:

<textarea rows="5" cols="40" autofocus>
</textarea>

Kết quả (nhấn phím F5 rồi kéo xuống đây - bạn sẽ thấy con trỏ chuột nhấp nháy trong ô textarea):



#2. cols - quy định chiều rộng tính theo số ký tự, rows - quy định số dòng

Code:

<textarea rows="5" cols="40">
</textarea>

Kết quả:



#3. disabled: vô hiệu hóa textarea

Code:

<textarea rows="5" cols="40" disabled>
</textarea>


Kết quả (bạn không thể gõ chữ vào texarea được nữa - vì nó đã bị vô hiệu hóa):



#4. form: quy định form mà textarea thuộc về.

Code:

<form action="#" id="yform">
Name: <input type="text" name="yname">
<input type="submit" value="Gửi">
</form>

<textarea name="comment" form="yform">Gõ vào đây...</textarea>

Kết quả (bạn có thể thấy textarea nằm ngoài thẻ form, nhưng nhờ thuộc tính form, trình duyệt vẫn biết rằng nó thuộc về form có id là yform):

Name:


#5. maxlength: số ký tự tối đa được phép nhập

Code:

<textarea rows="5" cols="40" maxlength="40">
</textarea>


Kết quả (bạn không thể nhập hơn 40 ký tự):



#6. name: tên của textarea - nó sẽ được dùng để định danh cho trường và là thông tin được gửi đi xử lý kèm văn bản được nhập.

Code:

<form action="xuly.php">
<textarea name="comment" rows="5" cols="40">Để lại bình luận của bạn.</textarea><br>
<input type="submit" value="Gửi">
</form>

Kết quả:


#7. placeholder: thông tin hướng dẫn, thường có màu xám và biến mất khi người dùng bắt đầu nhập dữ liệu



Code:

<textarea cols="40" placeholder="Văn bản màu xám này chính là placeholder" rows="5">
</textarea>

#8. readonly: quy định chỉ đọc văn bản trên textarea mà không cho nhập dữ liệu

Code:

<textarea rows="5" cols="40" readonly>
Bạn chỉ đọc được đoạn văn bản này mà không sửa hay thay đổi gì.
</textarea>


Kết quả:



#9. required: yêu cầu phải nhập văn bản mới được submit

Code:

<form action="#">
<textarea rows="5" cols="40" required>
</textarea><br >
<input type="submit" value="Submit">
</form>


Kết quả (bạn để trống textarea rồi nhấn Submit xem điều gì xẩy ra):


#10. wrap

    Wednesday, November 13, 2013

    Thuộc tính value trong thẻ input

    Thuộc tính value là thuộc tính quan trọng trong thẻ input, chức năng của nó còn tùy thuộc vào loại thẻ input type cụ thể.

    Code mẫu

    <form action="#">
    <label>Nam:<input type="radio" name="gioi" value="nam"></label><br />
    <label>Nữ:<input type="radio" name="gioi" value="nu"></label><br />
    <input type="submit" value="Gửi">
    </form>

    Kết quả:



    Trình duyệt hỗ trợ

    Thuộc tính value được tất cả các trình duyệt phổ thông hỗ trợ, trong đó có Chrome, FireFox, Opera, Safari và IE.

    Cách dùng

    Như đã nói ở phần đầu tùy loại input mà thuộc tính value có tác dụng khác nhau:

    A. Trong các nút reset và submit thì value có tác dụng hiển thị đoạn text trên nút nhấn. Ví dụ:


    Code:

    <form>
    <input type="reset" value="Reset" />
    <input type="submit" value="Submit" />
    </form>

    B. Cho input kiểu text, password và hidden thì value xác định giá trị ban đầu của trường. Ví dụ:



    Code:

    <label>Họ tên: <input type="text" value="Nguyễn Đức Anh" /></label>

    C. Cho input kiểu checkbox, radio và image thì value xác định giá trị của các trường đó, và sẽ là thông tin được gửi đi khi submit. Ví dụ:






    Code:

    <label>Xe máy<input name="phuongtien" type="checkbox" value="xemay" /></label><br />
    <label>Xe bus<input name="phuongtien" type="checkbox" value="xebus" /></label><br />
    <label>Xe đạp<input name="phuongtien" type="checkbox" value="xedap" /></label><br />
    <label>Đi bộ<input name="phuongtien" type="checkbox" value="dibo" /></label>

    Các input type kiểu text, password hay hidden có thể không cần thuộc tính value vẫn OK, nhưng input kiểu checkbox và radio, thuộc tính value là bắt buộc, vì nếu không có thì nó sẽ gửi giá trị rỗng khi submit.

    Thông tin cuối cùng, thuộc tính value không được phép sử dụng với <input type="file">

    Thẻ fieldset trong HTML

    Thẻ fieldset là thẻ chuyên dùng cho Form, nó có tác dụng nhóm các thành phần liên quan đến nhau trong Form.

    Code mẫu

    <form action="#">
    <fieldset>
    <legend>Thông tin cá nhân</legend>
    <label>Họ và tên: <input type="text" name="hoten"></label><br>
    <label>Quê quán<input type="text" name="quequan"></label>
    </fieldset>
    </form>

    Kết quả:

    Thông tin cá nhân

    Đặc điểm

    • Thẻ fieldset được hỗ trợ bởi tất cả các trình duyệt thông dụng, trong đó có Chrome, FireFox, Opera, Safari và IE.
    • Thẻ fieldset tạo đường viền màu xám xung quanh các thành phần mà nó nhóm lại.
    • Thẻ legend luôn đi kèm với fieldset, dùng để tạo tiêu đề cho nó. Trong thí dụ ở trên, đó chính là đoạn Thông tin cá nhân nằm trong legend. 

    Các thuộc tính mới

    • name: đặt tên cho fieldset
    • disabled: vô hiệu hóa fieldset
    • form: giúp bạn không cần lồng fieldset vào trong thẻ form nhưng vẫn chỉ định được nó thuộc về form nào.

    Tuesday, November 12, 2013

    Thuộc tính placeholder của thẻ input

    Thuộc tính placeholder là thuộc tính mới trong HTML5 dành cho thẻ input. Tác dụng của placeholder là cung cấp thêm thông tin cho người dùng, giúp họ biết cần nhập dữ liệu gì.
    Code mẫu:

    <form action="#">
    <label>Họ tên:<input type="text" name="hoten" placeholder="Điền đầy đủ họ tên"></label>
    <label>Quê quán:<input type="text" name="quequan" placeholder="Quê trong Chứng Minh Thư"></label>
    <input type="submit" value="Gửi">
    </form>

    Kết quả:




    Khi người dùng bắt đầu nhập liệu, thông tin gợi ý sẽ biến mất.

    Trình duyệt hỗ trợ

    Được hầu hết các trình duyệt hỗ trợ trong đó có: Internet Explorer 10, Firefox, Opera, Chrome và Safari. Chú ý là IE 9 và các phiên bản sớm hơn không được hỗ trợ.

    Những thẻ input type dùng placeholder

    Gồm các input type sau: text, search, url, tel, email và password.

    Thuộc tính required của thẻ input

    Thuộc tính required là thuộc tính mới trong HTML5 dành cho thẻ input. Tác dụng của required là buộc người dùng phải nhập dữ liệu thì mới gửi được (submit). Dĩ nhiên thao tác này đỡ cho chúng ta khá nhiều code JavaScript.
    Code mẫu:

    <form action="#">
       <label>Họ tên:<input type="text"  name="hoten" required></label>
       <input type="submit" value="Gửi">
    </form>

    Kết quả:


    Giờ bạn không điền gì vào trường Họ tên, rồi nhấn nút Gửi thử xem, bạn sẽ nhận được thông báo kiểu như "Vui lòng điền vào trường này"

    Trình duyệt hỗ trợ

    Thuộc tính required được Internet Explorer 10, Firefox, Opera và Chrome hỗ trợ, đáng tiếc hiện Safari chưa đưa tính năng này vào. Nhưng tôi nghĩ sớm muộn gì Safari cũng cập nhật, vì những thuộc tính mới của input rất hữu ích với người thiết kế và người dùng.

    Những thẻ input type dùng requried

    Các input sau đây dùng thuộc tính requried: text, checkbox, radio, email, password, search, url, tel, date pickers, number,  file.

    Cách dùng

    Required là thuộc tính kiểu boolean, nghĩa là nó chỉ nhận 2 giá trị có hoặc không có. Nếu không có requried trong thẻ input nghĩa là không yêu cầu phải nhập đủ dữ liệu, ngược lại nếu có thì phải nhập đủ mới được Submit.

    Có sự khác biệt giữa XHTML và HTML. Vì XHTML không cho phép rút gọn thuộc tính cho nên với XHTML chúng ta phải viết đầy đủ như sau: <input required="required" />

    Cách dùng thẻ abbr trong HTML

    Thẻ abbr dùng để chú thích từ viết tắt giúp cho máy tìm kiếm, công cụ dịch thuật, công cụ kiểm tra chính tả hiểu nội dung web tốt hơn.
    Code mẫu:

     <abbr title="Unidentified Flying Object">UFO</abbr> còn gọi là Vật thể bay không xác định.

    Kết quả:

    UFO còn gọi là Vật thể bay không xác định.

    Thông tin được đưa vào thuộc tính title của thẻ abbr sẽ được sử dụng để biết từ đầy đủ của từ viết tắt. Khi bạn di chuột qua từ viết tắt, thông tin từ title cũng hiện ra.

    Bonus

    Nếu bạn muốn tìm nghĩa của các từ viết tắt mà mình chưa biết thì hãy vô trang web: http://www.acronymfinder.com/ nó chứa hơn 4 triệu từ viết tắt trong CSDL.

    Monday, November 11, 2013

    Cách dùng thẻ label trong HTML

    Thẻ label dùng để định nghĩa nhãn cho các thẻ input trong HTML. Tác dụng của label là làm cho thao tác nhập liệu trở nên dễ dàng hơn.
    Code mẫu:

    <label for="hoten">Họ tên:</label><input type="text" name="hoten" id="hoten">

    Kết quả:


    Giờ bạn có thể nhấn vào chữ Họ tên để vào ô nhập liệu, hay nói cách khác, thẻ label làm tăng diện tích click chuột bắt đầu thao tác nhập. Nếu không có thẻ label, khi click vào chữ Họ tên sẽ không có điều gì xảy ra, giống như ví dụ dưới đây:

    Họ tên:

    Cú pháp của thẻ label

    Thẻ label yêu cầu thuộc tính for phải được điền giá trị, và giá trị trong thuộc tính id của input phải giống với giá trị trong thuộc tính for của label. Làm như thế để label biết được nó được dùng cho input nào.

    Mẹo

    Nếu bạn cho rằng cách dùng for và id lằng nhằng, thì bạn có thể không cần dùng nó mà vẫn cho kết quả tương tự, nhưng khi ấy bạn phải cho thẻ input nằm trong label, code mẫu:

    <label>Họ tên:<input type="text" name="hoten"></label>

    Kết quả:


    Các ví dụ khác

    Label  cho thẻ radio button




    Code mẫu:

    <form action="#">
    <label for="nam">Nam</label><input id="nam" name="gioi" type="radio" value="Nam" /
    <br />
    <label for="nu">Nữ</label><input id="nu" name="gioi" type="radio" value="Nữ" />
    <br />
    <input type="submit" value="Gửi" />
    </form>

    Sunday, November 10, 2013

    9 thẻ input thường dùng trong HTML

    Các thẻ input type chuyên dụng trong các form, dùng để nhập liệu, kiểu như: đăng ký, đăng nhập, liên hệ, gửi file...Hôm nay chúng ta sẽ xem xét các thẻ input phổ biến nhất.

    Các input đều giống nhau về cấu trúc, chỉ khác nhau về type. Chính type này quyết định kiểu của input. Có đến hơn 20 type khác nhau. Một số type input chỉ được hỗ trợ trong HTML5. Các type giới thiệu trong ngày hôm nay được tất cả các trình duyệt thông dụng hỗ trợ.

    Nhập text

    Ví dụ:

    Họ tên:

    Code mẫu:

    Họ tên: <input name="hoten" type="text" />

    Giá trị của thuộc tính name sẽ được dùng để lấy giá trị input, cả PHP và JavaScript đều căn cứ vào name để biết giá trị nằm trong input.

    Nhập password

    Ví dụ:

    Mật khẩu:

    Code mẫu:

    <input name="psw" type="password" />

    Vì là nhập password nên khi bạn gõ vào trường này nó sẽ hiện ra các dấu hoa thị *, để người khác không nhìn thấy mật khẩu.

    File đính kèm

    Ví dụ:

    Chọn ảnh của bạn:

    Code mẫu:

    <input type="file" name="anh">

    Button reset

    Tác dụng của nút nhấn reset là xóa các dữ liệu mà bạn nhập không đúng, giả dụ nhập tên và quê quán vào 2 trường dưới đây, rối nhấn reset xem điều gì xảy ra:

    Họ tên:
    Quê quán:
    Code mẫu:

    <form action="#">
    Họ tên: <input type="text" name="hoten"><br />
    Quê quán: <input type="text" name="que"><br />
    <input type="reset" value="Reset">
    </form>

    Button submit

    Tác dụng của nút nhấn submit là gửi dữ liệu, khi bạn nhập đầy đủ các trường, và nhấn submit thì dữ liệu từ các trường bạn nhập sẽ được gửi đến đâu đó để xử lý tiếp. Có thể nó sẽ được Validate bằng JavaScript để chuẩn hóa, sau đó gửi lên Server để ghi thông tin vào cơ sở dữ liệu bằng PHP (hoặc ngôn ngữ lập trình web khác).

    Ví dụ:
    Tên đăng nhập:
    Mật khẩu:

    Code mẫu:

    <form action="#">
    Tên đăng nhập: <input name="user" type="text" /><br />
    Mật khẩu: <input name="pass" type="text" /><br />
    <input type="submit" value="Submit" />
    </form>

    Ẩn input

    Họ tên:
    Code mẫu:

    <form action="#">
    Họ tên: <input type="text" name="hoten"><br>
    <input type="hidden" name="quocgia" value="Việt Nam">
    <input type="submit" value="Submit">
    </form>

    Bạn có thể thấy input có name là quocgia bị ẩn không hiện trong form. Tuy bị ẩn nhưng nếu chúng ta Submit nó giá trị "Việt Nam" vẫn được gửi đi.

    Radio button

    Dùng để chọn chỉ 1 trong nhiều lựa chọn, ví dụ:

    Nam
    Nữ
    Khác

    Code mẫu:

    <form action="#">
    <input name="gioitinh" type="radio" value="Nam" />Nam<br />
    <input name="gioitinh" type="radio" value="Nữ" />Nữ<br />
    <input name="gioitinh" type="radio" value="Khác" />Khác
    </form>

    Checkbox

    Dùng để chọn nhiều lựa chọn cùng lúc, có thể 1 hoặc nhiều, ví dụ:

    Bóng đá
    Bơi lội
    Điền kinh
    Cầu lông
    Võ thuật

    Code mẫu:

    <form action="#">
    <input name="thethao" type="checkbox" value="Bóng đá" />Bóng đá<br />
    <input name="thethao" type="checkbox" value="Bơi lội" />Bơi lội<br />
    <input name="thethao" type="checkbox" value="Điền kinh" />Điền kinh<br />
    <input name="thethao" type="checkbox" value="Cầu lông" />Cầu lông<br />
    <input name="thethao" type="checkbox" value="Võ thuật" />Võ thuật
    </form>

    Thông tin đầy đủ hơn về Checkbox và Radio button bạn có thể đọc để tham khảo thêm.

    Email

    Type cuối cùng tôi đề cập là email, sở dĩ như vậy vì type này chỉ được hỗ trợ trong HTML5 - tuy nhiên nói là vậy thôi, chứ chúng ta cũng không phải lo gì cả, vì input email đã được support tốt bới các trình duyệt. Code mẫu:

    <form action="#">
    Email: <input name="email" type="email" />
    <input type="submit">
    </form>

    Kết quả:

    Email:
    Nó validate email cho chúng ta rồi, nên bạn không cần viết JavaScript - trừ khi bạn muốn chuẩn hóa dữ liệu nhập vào cao hơn nữa.

    Saturday, November 9, 2013

    Thực hành thuộc tính word-spacing trong CSS

    word-spacing: 1em

    Trong bài viết trước đây về 8 thuộc tính văn bản trong CSS tôi có đề cập đến word-spacing. Tuy nhiên bài đó chỉ là cái nhìn tổng quát. Hôm nay chúng ta sẽ đi vào chi tiết và các ví dụ cụ thể.

    Thuộc tính word-spacing được dùng để điều khiển khoảng cách chữ với nhau.

    Code mẫu

    p
    {
    word-spacing:20px;
    }


    Kết quả:

    Hà Nội mùa này vắng những cơn mưa. Cái rét đầu đông khăn em bay hiu hiu gió lạnh.

    Đặc điểm

    • Giá trị mặc định: normal - giá trị này sẽ để khoảng cách chữ theo mặc định của font.
    • Tính kế thừa: có kế thừa - tính kế thừa làm cho các thẻ con cháu tự động có cùng thuộc tính với thẻ cha. Nghĩa là thẻ cha có thuộc tính word-spacing như thế nào thì các thẻ con cháu cũng có thuộc tính word-spacing như thế.
    • Phiên bản CSS: word-spacing thuộc về phiên bản CSS1
    • Cú pháp trong JavaScript, thí dụ: object.style.wordSpacing="7px"
    • Hỗ trợ trình duyệt: được hỗ trợ bởi hầu hết các trình duyệt lớn gồm: FireFox, Google Chrome, Opera, Safari, IE.

    Các giá trị

    • normal: khoảng cách mặc định
    • độ dài: ngoài px các đơn vị pt, cm, em đều OK cả, các giá trị âm cũng được chấp thuận.

    Thực hành

    p {word-spacing: 5px;}
    Hà Nội mùa này vắng những cơn mưa. Cái rét đầu đông khăn em bay hiu hiu gió lạnh.

    p {word-spacing: 15px;}
    Hà Nội mùa này vắng những cơn mưa. Cái rét đầu đông khăn em bay hiu hiu gió lạnh.

    p {word-spacing: -5px;}Hà Nội mùa này vắng những cơn mưa. Cái rét đầu đông khăn em bay hiu hiu gió lạnh.

    p {word-spacing: 1em;}
    Hà Nội mùa này vắng những cơn mưa. Cái rét đầu đông khăn em bay hiu hiu gió lạnh.

    p {word-spacing: 0.5em;}
    Hà Nội mùa này vắng những cơn mưa. Cái rét đầu đông khăn em bay hiu hiu gió lạnh.

    p {word-spacing: 1cm;}
    Hà Nội mùa này vắng những cơn mưa. Cái rét đầu đông khăn em bay hiu hiu gió lạnh.

    Cách dùng thẻ sup và sub trong HTML


    Nếu hay phải viết các công thức toán học, hóa học, bạn sẽ cần dùng thường xuyên hai thẻ sup và sub. Nó được dùng để tạo chỉ số trên và chỉ số dưới.

    Thẻ sub

    Thí dụ công thức hóa học 2H2 + O2 = 2H2O, nếu không áp dụng chỉ số dưới sub thì trông sẽ như đoạn vừa gõ, để sửa lại, ta dùng đoạn code sau:

    2H<sub>2</sub> + O<sub>2</sub> = 2H<sub>2</sub>O

    Kết quả:

    2H2 + O2 = 2H2O

    Thẻ sup

    Thí dụ phương trình bậc 2: ax2 + bx + c = 0

    Đáng ra số 2 phải ở bên trên biến x. Để sửa lại dòng trên, ta dùng đoạn code sau:

    ax<sup>2</sup> + bx + c = 0

    Kết quả:

    ax2 + bx + c = 0

    Ngoài ra thẻ sup cũng hay được dùng để tạo các chú thích, chẳng hạn:

    Trăm năm trong cõi người ta
    Chữ tài chữ mệnh khéo là ghét nhau[1]

    [1]: Trích trong tác phẩm Truyện Kiều của Nguyễn Du.

    Bên cạnh cách dùng thẻ sub và sup, bạn có thể dùng thuộc tính vertical-align, nó cũng cho kết quả tương tự, nhưng bạn sẽ chủ động hơn trong việc điều chỉnh CSS.

    Friday, November 8, 2013

    Thực hành với thẻ select và option trong HTML

    Select và Option

    Thẻ select dùng để lựa chọn, ở khía cạnh nào đó nó giống với radio button, nhưng điểm khác biệt là select có kiểu dáng dạng drop-down menu (xổ xuống).
    Code mẫu:

    <select>
       <option value="0">Chọn giá nhà bạn muốn mua</option>
       <option value="34">Từ 300 triệu đến 400 triệu</option>
       <option value="46">Từ 401 triệu đến 600 triệu</option>
       <option value="68">Từ 601 triệu đến 800 triệu</option>
       <option value="812">Từ 801 triệu đến 1.2 tỷ đồng</option>
    </select>

    Kết quả:

    Thuộc tính name

    Đây là thành phần không thể thiếu của các thẻ nằm trong form, trong đó phải kể đến các thẻ input, textarea. Thẻ select cũng vậy, thuộc tính name cho phép JavaScript và các ngôn ngữ lập trình web như PHP lấy được dữ liệu mà người dùng nhập sau khi họ nhấn nút submit. Code mẫu:

    <select name="gianha">
       <option value="0">Chọn giá nhà bạn muốn mua</option>
       <option value="34">Từ 300 triệu đến 400 triệu</option>
       <option value="46">Từ 401 triệu đến 600 triệu</option>
       <option value="68">Từ 601 triệu đến 800 triệu</option>
       <option value="812">Từ 801 triệu đến 1.2 tỷ đồng</option>
    </select>

    Thuộc tính disabled

    Dùng để làm cả danh sách thả xuống hoặc một lựa chọn nào đó không khả dụng, ví dụ:



    Code mẫu:

    <select disabled name="gianha">
       <option value="0">Chọn giá nhà bạn muốn mua</option>
       <option value="34">Từ 300 triệu đến 400 triệu</option>
       <option value="46">Từ 401 triệu đến 600 triệu</option>
       <option value="68">Từ 601 triệu đến 800 triệu</option>
       <option value="812">Từ 801 triệu đến 1.2 tỷ đồng</option>
    </select>

    Giờ giả dụ các nhà có giá từ 300 - 400 triệu đã hết, bạn sẽ ngăn không cho người dùng chọn giá đó, các nhà có giá khác vẫn select được:



    <select name="gianha">
       <option value="0">Chọn giá nhà bạn muốn mua</option>
       <option disabled value="34">Từ 300 triệu đến 400 triệu</option>
       <option value="46">Từ 401 triệu đến 600 triệu</option>
       <option value="68">Từ 601 triệu đến 800 triệu</option>
       <option value="812">Từ 801 triệu đến 1.2 tỷ đồng</option>
    </select>

    Thuộc tính size

    Với size, bạn sẽ quy định xem có bao nhiêu lựa chọn được hiển thị ra ngoài. Như ở trên có 4 giá nhà, và hiển thị ra ngoài ngay cái nhìn đầu tiên chỉ là 1 (khi đã nhấn vào rồi thì sẽ hiện hết). Giờ nếu bạn có 9 lựa chọn và muốn hiển thị ra ngoài 4 lựa chọn. Ví dụ:



    Code mẫu:

    <select name="gianha" size="4">
       <option value="0">Chọn giá nhà bạn muốn mua</option>
       <option value="34">Từ 300 triệu đến 400 triệu</option>
       <option value="46">Từ 401 triệu đến 600 triệu</option>
       <option value="68">Từ 601 triệu đến 800 triệu</option>
       <option value="812">Từ 801 triệu đến 1.2 tỷ</option>
       <option value="812">Từ 1.2 tỷ đến 1.5 tỷ</option>
       <option value="812">Từ 1.5 tỷ triệu đến 2 tỷ</option>
       <option value="812">Từ 2 tỷ triệu đến 3 tỷ</option>
       <option value="812">Từ 3 tỷ triệu đến 5 tỷ</option>
    </select>

    Có một số chú ý:
    • Khi bạn sử dụng size lớn hơn 1, theo mặc định có ít nhất 4 lựa chọn sẽ hiện ra, tức là nếu bạn chọn size là 2, 3 hoặc 4 thì đều ra 4 lựa chọn hết. Từ 4 trở lên thì mới chính xác hoàn toàn, giả dụ để 5 thì có 5 lựa chọn, để 7 thì có 7 lựa chọn.
    • Nếu size lớn hơn 1 nhưng nhỏ hơn số khả năng lựa chọn thì sẽ xuất hiện thanh cuộn dọc để bạn kéo lên kéo xuống.

    Thuộc tính multiple

    Với multiple, bạn sẽ cho phép người dùng có nhiều lựa chọn cùng lúc thay vì chỉ một lựa chọn như mặc định:



    Giữ phím Ctrl và tick nhiều cái, với giả định là bạn có thể mua nhà từ giá thấp nhất đến gần cao nhất :)

    Code mẫu:

    <select multiple name="gianha">
       <option value="0">Chọn giá nhà bạn muốn mua</option>
       <option value="34">Từ 300 triệu đến 400 triệu</option>
       <option value="46">Từ 401 triệu đến 600 triệu</option>
       <option value="68">Từ 601 triệu đến 800 triệu</option>
       <option value="812">Từ 801 triệu đến 1.2 tỷ đồng</option>
    </select>

    Rõ ràng multiple làm cho select giống với checkbox hơn. Tuy nhiên cũng dễ thấy checkbox thì chuyên nghiệp hơn trong việc thiết kế ứng dụng đa lựa chọn.

    Nhóm các lựa chọn liên quan bằng optgroup

    Nếu bạn có một danh sách khá dài các chọn lựa, bạn có thể muốn nhóm các chọn lựa lại với nhau để người dùng dễ dàng quan sát và thao tác. Khi ấy bạn nên dùng thẻ optgroup. Code mẫu:

    <select name="gianha">
    <optgroup label="Dưới 500 triệu">
    <option value="499">499 triệu - 60m2</option>
    <option value="350">350 triệu - 40m2</option>

    <option value="250">250 triệu - 25m2</option>
    </optgroup>


    <optgroup label="Trên 500 triệu">
    <option value="700">700 triệu - 85m2</option>
    <option value="900">350 triệu - 100m2</option>

    <option value="1200">1.2 tỷ - 150m2</option>
    </optgroup>
    </select>

    Kết quả:



    Bạn có thể thấy các nhà có giá dưới 500 triệu được nhóm lại dưới nhãn được bôi đậm. Thẻ optgroup có 2 thuộc tính, ngoài thuộc tính label bạn đã thấy trong code ở trên, nó còn thuộc tính disabled dùng để vô hiệu hóa một nhóm lựa chọn, giả dụ, tất cả các nhà có giá dưới 500 triệu đã được bán hết, ta sẽ không cho người dùng có chọn lựa này, code mẫu:

    <select name="gianha">
    <optgroup label="Dưới 500 triệu" disabled>
    <option value="499">499 triệu - 60m2</option>
    <option value="350">350 triệu - 40m2</option>

    <option value="250">250 triệu - 25m2</option>
    </optgroup>
    <optgroup label="Trên 500 triệu">
    <option value="700">700 triệu - 85m2</option>
    <option value="900">350 triệu - 100m2</option>

    <option value="1200">1.2 tỷ - 150m2</option>
    </optgroup>
    </select>


    Kết quả:



    Như vậy là cả nhóm dưới 500 triệu đã không thể chọn lựa được.

    Thẻ radio button và checkbox trong HTML

    Thực ra chúng đều thuộc về nhóm thẻ input nhưng có thuộc tính type là radio button và checkbox. Nhóm thẻ input là không thể thiếu khi muốn làm Form nhập liệu và chúng thường xuyên kết hợp với Javascript để validate. Bên cạnh 5 type rất hay dùng gồm: text, password, submit, resetemail thì 2 type chuyên dụng để tạo các lựa chọn là Radio button và Checkbox bạn cũng cần nắm rõ.

    Radio button

    Type này được dùng để chọn một trong nhiều lựa chọn, chẳng hạn chọn giới tính, chọn quốc gia đang sinh sống. Code mẫu:

    <form>
    <input name="gioitinh" type="radio" value="Nam" />Nam<br />
    <input name="gioitinh" type="radio" value="Nữ" />Nữ<br />
    <input name="gioitinh" type="radio" value="Khác" />Khác
    </form>

    Kết quả:

    Nam
    Nữ
    Khác

    Nếu bạn không để name có cùng tên thì bạn sẽ chọn được 2 cái cùng lúc, do vậy cần lưu ý name khi dùng radio.

    Checkbox

    Radio buttons dùng để chọn chỉ một cái trong nhiều lựa chọn còn checkbox thì ngược lại, nó cho phép bạn không chọn lựa cái nào hoặc chọn nhiều cái (từ một cho đến tất cả), code mẫu:

    <form>
    <input type="checkbox" name="thethao" value="Bóng đá">Bóng đá<br>
    <input type="checkbox" name="thethao" value="Bơi lội">Bơi lội<br>
    <input type="checkbox" name="thethao" value="Điền kinh">Điền kinh<br>
    <input type="checkbox" name="thethao" value="Cầu lông">Cầu lông<br>
    <input type = "checkbox" name= "thethao" value="Võ thuật">Võ thuật
    </form>

    Kết quả:

    Bóng đá
    Bơi lội
    Điền kinh
    Cầu lông
    Võ thuật

    Thuộc tính checked

    Đây là thuộc tính được dùng để đánh dấu trước một lựa chọn nào đó, chẳng hạn một Form nhập liệu yêu cầu bạn nhập Quốc gia đang sinh sống, nhưng nó cũng xác định được địa chỉ IP của bạn xuất phát từ Việt Nam nên đã tick sẵn vào đây từ trước cho bạn. Điều này giúp bạn giảm thiểu các thao tác phải nhập. Ví dụ:

    Việt Nam
    Trung Quốc
    Nhật Bản
    Hàn Quốc

    Code mẫu:

    <form>
    <input checked="checked" name="gioitinh" type="radio" value="VN" />Việt Nam<br />
    <input name="gioitinh" type="radio" value="TQ" />Trung Quốc<br />
    <input name="gioitinh" type="radio" value="NB" />Nhật Bản<br />
    <input name="gioitinh" type="radio" value="HQ" />Hàn Quốc
    </form>

    Ngắt dòng tự động với thuộc tính word-wrap trong CSS3

    Thuộc tính word-wrap dùng để ngắt những từ quá dài, mà nếu bạn không dùng đến nó sẽ gây ra tình trạng phá vỡ layout của trang.

    Cách đơn giản nhất để hiểu thuộc tính này là thông qua ví dụ, chẳng hạn tôi có một danh sách các tên miền ưa thích như sau:

    1.vnexpress.net
    2.dantri.vn
    3.www.google.com
    4.www.mangluoitoancau.com

    Bạn dễ dàng thấy tên miền www.mangluoitoancau.com bị tràn ra khỏi layout, sở dĩ như vậy vì nó dài hơn chiều rộng của box chứa nó. Để khắc phục tình trạng này ta dùng word-wrap với giá trị là break-word, code mẫu:

    <div style="border: 3px solid aqua; padding: 5px; width: 120px; word-wrap: break-word;">
    1.vnexpress.net<br />
    2.dantri.vn<br />
    3.www.google.com<br />
    4.www.mangluoitoancau.com
    </div>

    Kết quả:

    1.vnexpress.net
    2.dantri.vn
    3.www.google.com
    4.www.mangluoitoancau.com

    Như bạn đã thấy, một từ dài đã không còn tràn ra ngoài nữa mà bị ngắt rồi xuống dòng kế tiếp (bình thường thì không thể ngắt được, vì nó thuộc về cùng một từ)

    Ngoài giá trị break-word, còn có giá trị khác là normal. Giá trị normal là dạng mặc định, tức là từ quá dài sẽ tràn ra khỏi layout.

    Cú pháp tổng quát: word-wrap: normal | break-word;

    Dĩ nhiên là bạn chỉ được chọn một trong 2 giá trị thôi nhá, hoặc là normal, hoặc là break-word.

    Câu hỏi: liệu còn cách nào để tránh tràn trong diện tích hẹp như vậy không?

    Câu trả lời là có. Bạn có thể dùng thuộc tính overflow. Chẳng hạn tôi có thể sửa hộp trên như sau:

    1.vnexpress.net
    2.dantri.vn
    3.www.google.com
    4.www.mangluoitoancau.com

    Tuy nhiên như bạn đã biết (hoặc bây giờ sẽ biết) đối với người dùng thì thanh cuộn dọc hoàn toàn OK nhưng họ không ưa thanh cuộn ngang cho lắm. Vì vậy word-wrap vẫn hữu ích hơn trong trường hợp này.

    Thuộc tính box-shadow trong CSS3

    Box-shadow là thuộc tính mới trong CSS, nằm trong phiên bản CSS3. Nó có tác dụng tạo bóng cho hộp (xem thêm mô hình hộp trong CSS).
    Ví dụ:

    div
    {width:300px;
    height:150px;
    background-color:red;
    box-shadow: 20px 10px;
    }

    Kết quả:

    Khi sử dụng box-shadow có một số lưu ý sau:
    • Bóng là một hộp có kích thước tương tự hộp ban đầu
    • Màu sắc mặc định của bóng là đen (mã màu: #000000)
    • box-shadow: 20px 10px; quy định độ dịch chuyển của bóng so với vị trí gốc, theo đó giá trị đầu là dịch chuyển theo chiều ngang (20px), giá trị tiếp theo là dọc (10px).
    Bạn có thể đặt giá trị âm cho độ dịch chuyển, ví dụ:

    div
    {width:300px;
    height:150px;
    background-color:red;
    box-shadow: 20px -10px;
    }

    Kết quả:

    Tạo độ mờ cho bóng

    Đã là bóng thì nó thường mờ (blur) hơn vật chủ, để bổ sung độ mờ cho bóng, ta thêm giá trị nữa đằng sau, ví dụ:

    div
    {width:300px;
    height:150px;
    background-color:red;
    box-shadow: 20px 10px 10px;
    }

    Kết quả:

    Thay đổi độ lớn của bóng

    Để thay đổi độ lớn của bóng, bạn thêm tiếp giá trị vào đằng sau độ mờ, ví dụ:

    div
    {width:300px;
    height:150px;
    background-color:red;
    box-shadow: 30px 20px 10px -10px;
    }

    Kết quả:
    Với giá trị -10px; kích thước bóng sẽ giảm đi 10px cả 2 chiều so với kích thước gốc, nghĩa là lúc này, bóng rộng 290px = 300px - 10px và cao 140px = 150px - 10px;

    Thay đổi màu cho bóng

    Để quy định màu cho bóng, bạn thêm mã màu vào (xem thêm: cách khai báo màu sắc trong CSS), nó nằm ở vị trí cuối cùng, code mẫu:

    div
    {width:300px;
    height:150px;
    background-color:red;
    box-shadow: 30px 20px 10px -10px gray;
    }

    Kết quả là bóng sẽ có màu xám:

    Bóng đổ ngay bên trong hộp

    Từ nãy đến giờ chúng ta vẫn chỉ thực hành với bóng bên ngoài hộp, nhưng bóng không phải lúc nào cũng ở bên ngoài, đôi khi ngay bên trong hộp cũng có bóng, để làm điều này, ta dùng giá trị inset:

    div
    {width:300px;
    height:150px;
    background-color:red;
    box-shadow: 30px 20px 10px -10px pink inset;
    }

    Kết quả:
    Một vài kết quả khác:
    Cũng là đổ bóng, nhưng dành cho văn bản, bạn dùng thuộc tính text-shadow.

    Điều gì xẩy ra khi đổ bóng cho hình tròn

    Ở một bài viết trước đây tôi có nói về code bo tròn ảnh - cũng bằng CSS3, giờ tôi sẽ thử đổ bóng cho bức ảnh hình tròn này xem sao.

    Bóng cho đối tượng hình tròn
    Như vậy là không có vấn đề gì với việc tạo bóng cho hình tròn. Nó cho kết quả tương tự như hình chữ nhật. Giờ tôi sẽ nghịch thử một chút. Tôi sẽ tạo hào quang cho bức ảnh (nói ghê vậy chứ nó cũng không giống hào quang lắm), bí quyết là ta không dịch chuyển bóng nhưng làm tăng blur của nó lên, điều đó tạo ảo giác có vật chiếu sáng đằng sau bức ảnh:
    Hào quang cho ảnh
    Hiệu ứng cũng khá đẹp mắt, đây là code mẫu:
    <img  border="0" src="images/cap-doi-hoan-canh.jpg" style="border-bottom-left-radius: 50%; border-bottom-right-radius: 50%; border-top-left-radius: 50%; border-top-right-radius: 50%; box-shadow: 0px 0px 50px 0px blue;" />
    • Thay đổi giá trị 50px để điều chỉnh độ rộng của hào quang.
    • Thay đổi blue sang màu khác để đổi màu hào quang.

    Thursday, November 7, 2013

    Bộ chọn hay Selector trong CSS

    Trong khi code CSS, bộ chọn (selector) là cái được viết ra đầu tiên. Nó là đối tượng mà chúng ta muốn tác động, tiếp theo mới viết các khai báo, trong khai báo có thuộc tính và giá trị (xem thêm cú pháp của CSS).

    Đễ cho dễ tưởng tượng hơn, giả dụ bạn là thợ sơn chuyên nghiệp, khách hàng alo cho bạn, anh ta muốn sơn ngôi nhà có màu xanh, và các viền cửa màu nâu. OK, chuyện đó chẳng khó gì với bạn, thế nhưng nếu khách hàng không cho biết địa chỉ cụ thể của ngôi nhà thì bạn biết sơn vào đâu? Địa chỉ ngôi nhà có thể nói là selector. Dưới đây là các dòng code thực tế. Thí dụ:

    #menu {
    font-size: 18px;
    background-color: lime;
    }

    Cái #menu chính là bộ chọn.
    Nếu không nắm rõ về selector, bạn sẽ gặp khó khăn trong việc CSS, rất có thể bạn sẽ lạm dụng id và class, các đoạn mã bị rối loạn, chồng chéo và thiếu kiểm soát.
    Câu hỏi đầu tiên, CSS có những bộ chọn nào?

    1. Chọn tất cả các thành phần HTML

    Sử dụng dấu * để chọn tất cả các thành phần của HTML, ví dụ:

    * {
        margin: 0;
        padding: 0;
    }

    Bạn có thấy đoạn code trên quen quen không? nó thường dùng để khử mặc định trình duyệt về lề và đệm của tất cả các thẻ trong HTML.

    2. Chọn tất cả thành phần có cùng tên class

    Sử dụng dấu chấm (.) theo sau đó là tên class để làm bộ chọn, thí dụ ta có mã đánh dấu HTML như sau:

    <h2 class="tieude">Blog Mạng Lưới Toàn Cầu</h2>

    Để tác động vào các thẻ có class là tieude, trong CSS viết:

    .tieude {
       color: red;
    }

    Lưu ý: tất cả các class có cùng tên đều bị tác động bởi câu lệnh trên.

    3. Chọn thành phần có tên id

    Với id, sử dụng dấu # để bắt đầu bộ chọn, sau đấy là tên của íd, ví dụ đầu bài về menu chính là minh họa về cách sử dụng id làm selector.

    #menu {
    font-size: 18px;
    }

     Bạn có thể đọc bài viết sự giống và khác nhau giữa id và class để có thêm thông tin.

    4. Chọn tất cả các thẻ cùng loại

    Thí dụ tôi muốn văn bản có font là arial thì viết như này:

    p {
       font-family: Arial Helvetica sans-serif;
    }

    Khi ấy, bất kỳ văn bản nào trong trang web đều được quy định font là Arial...Tương tự, câu lệnh:

    h2 {
       margin-left: 10px;
       padding: 5px;
    }

     Làm tất các các thẻ h2 có lề về bên trái là 10px và khoảng đệm là 5 px.

    5. Chọn nhiều thẻ khác nhau cùng một lúc

    Giả dụ nếu bạn muốn cả thẻ h2, h3 và thẻ p cùng có lề trên là 10px thì viết như sau:

    h2, h3, p {
       margin-top: 10px;
    }

    Lưu ý:
    • Các thẻ ngăn nhau bằng dấu phẩy
    • Không giới hạn số thẻ 
    Tác dụng lớn nhất của selector này là nó giúp chúng ta đỡ phải viết code lặp đi lặp lại.

    6. Chọn thành phần nằm trong một thành phần khác

    Câu lệnh:

    div h3 {
        font-weight: normal;
    }

    Dòng code trên sẽ làm tất cả các thẻ h3 nằm trong div đều chịu ảnh hưởng của lệnh, dù là thẻ con, cháu, chắt...của div

    7. Chọn chính xác thành phần phải là con của một thành phần khác

    Câu lệnh:

    #right>h2{
       font-size: 12px;
       color: blue;
    }

    Selector trên sẽ chọn tất cả các thẻ h2 là con của id có tên là right. Có bạn sẽ hỏi: câu lệnh này với câu lệnh chọn thành phần nằm trong một thành phần khác có gì khác nhau?

    Sự khác nhau nằm ở độ sâu của tác động. Một cái tác động rất sâu và rộng vào mọi thành phần con và cháu, còn một cái chỉ tác động vào các thẻ nào là con mà thôi.

    8. Chọn các lớp giả

    Các lớp giả bao gồm :link, :hover, :visited, :active, :focus, :first-letter, :first-line, :first-child, :before, :after, :lang (mã ngôn ngữ) - nổi tiếng nhất trong nhóm này là hover. Ví dụ:

    a:hover {
       color: gray;
    }

    Câu lệnh này làm cho người dùng khi di chuột qua liên kết thì link đổi sang màu xám. Đọc thêm bài CSS cho thẻ a để biết chi tiết hơn cách tạo style cho liên kết.

    9. Chọn dựa vào thuộc tính của thẻ

    Bạn chọn thẻ muốn tác động dựa vào thuộc tính của nó, thí dụ đoạn code sau:

    <!DOCTYPE html>
    <html>
    <head>
    <style>
    a[target=_blank]
    {
    background-color:lime;
    }
    </style>
    </head>
    <body>

    <a href="http://vi.wikipedia.org">vi.wikipedia.org</a>
    <a href="www.mangluoitoancau.com" target="_blank">www.mangluoitoancau.com</a>
    <a href="http://vnexpress.net">vnexpress.net</a>

    </body>
    </html>

    Có 3 thẻ a trong body, nhưng bằng cách sử dụng thuộc tính để tác động, làm cho chỉ thẻ a ở giữa có màu nền là lime, 2 thẻ a còn lại không bị ảnh hưởng gì.