Archive for the ‘Học CSS’ category

Ebook học CSS

April 7th, 2008

Mình có tổng hợp được Ebook học CSS khá hay và dễ hiểu.Post lên share cho anh em.Download tại đây

Những điều cần biết khi viết mã CSS

March 22nd, 2008

Những điều cần tránh trong khi viết mã HTML và CSS nếu bạn muốn website của mình hiển thị tốt ở hầu hết các browser.

1. Không bao giờ sử dụng padding cho các đối tượng có độ rộng cố định (fixed width)

Đây là nguyên tắc cơ bản vì cách căn lề của Internet Explorer khác với các trình duyệt khác và cũng là 1 lỗi của trình duyệt này. Lỗi này được gọi là "Box Model Bug" hình dưới là một hình ảnh minh họa cho lỗi này.

Bạn có thể thấy rằng độ rộng của đối tượng "được" cộng thêm khi hiển thị ở IE nếu như có padding. Vậy đơn giản là không dùng padding cho các đối tượng có độ rộng cố định (fixed width).

2. Cố định cỡ chữ bằng đơn vị % và em

Thông thường các browser hiển thị cỡ chữ theo cách khác nhau nếu như bạn chưa định cỡ cho chúng. Khi mới bắt đầu học CSS, chúng ta thường định dạng cỡ chữ theo cách sau:

PLAIN TEXT

CSS:

  1. h1 {font-size:18px;}

  2. h2 {font-size:16px;

Dòng mã là cách cơ bản, nhưng vấn đề là ở IE người xem sẽ không thể thay đổi cỡ chữ. Điều này rất cần thiết với những người để độ phân giải cao. Nhưng bạn đừng lo, có một giải pháp khác tốt hơn, hãy dùng % và em để định dạng cỡ chữ như sau:

PLAIN TEXT

CSS:

  1. body {font-size:62.5%;}

  2. h1 {font-size:1.8em;}

  3. h2 {font-size: 1.6em;}

3. Không nên dùng đơn vị 100%

Sử dụng 100% để căn chiều rộng của một đối tượng rất dễ gặp rủi ro trong việc bố trí kết cấu của website vì mỗi trình duyệt hiển thị chiều rộng 100% rất khác biệt. Theo kinh nghiệm bản thân thì những lần thử định vị 100% thì gần như rất khó có thể đạt được kết quả tốt nhất. Hãy chọn một con số khác có thể là nhỏ hơn 100% (95% có thể sẽ tốt hơn). Hoặc đơn giản hơn là hãy… cố định nó.

4. Không dùng 0px để định chiều cao

Các browser không thích việc bạn chọn 0px để định chiều cao cho đối tượng và thưởng hiển thị nó theo cách bạn… không muốn chút nào. Nếu có thể hãy thay nó bằng 1px sẽ tốt hơn rất nhiều.

PLAIN TEXT

CSS:

  1. height:1px

5. Không dùng ">" trong CSS

Mình đã từng thấy có người, thậm chí rất nhiều người viết mã CSS như sau:

PLAIN TEXT

CSS:

  1. #menubar>a {color:#cccccc;}

Với dòng mã CSS như trên IE6 sẽ không hiểu và không thể hiển thị được định dạng trên. Hãy dùng đoạn mã dưới đây, sẽ an toàn hơn rất nhiều.

PLAIN TEXT


CSS:

  1. #menubar a {color:#cccccc;}

Hướng dẫn vẽ Web 2.0 Badge bằng Adobe illustrator

March 22nd, 2008

Bài viết dưới đây sẽ hướng dẫn các bạn thực hiện vẽ một trong những dạng Badge trong Adobe illustrator. Đây là một thành phần được sử dụng phổ biến trong những trang Website có style 2.0

 

 

 

 

 

 

 

 

1. Thực hiện vẽ một Badge dạng vecto

Để vẽ badge dạng thô các bạn chọn công cụ Vẽ hình ngôi sao. Sau đó click chuột vào nơi cần vẽ trên vùng làm việc (Work space). Kế đến bạn sẽ cài đặt các thông số cho badge như trong hình.

 

 

 

 

 

Trong đó Radius 1 là bán kính thứ nhất của hình, Radius 2 là bán kính thứ hai của hình, Point là số đỉnh của badge.

2. Thêm hiệu ứng Gradient cho dạng Badge 2.0.

 

 

 

 

 

3. Xử lí đối tượng cần tạo bóng.

Trong phần 3 này chúng ta cần thực hiện một số thao tác như sau:

  

 

 

 

 

 

 

1.  Tạo một bản sao của dạng badge, bạn chọn đối tượng sau đó ấn tổ hợp phím Ctrl+C hoặc vào menu Edit \ Copy. Tiếp theo bạn sẽ paste lại bằng cách ấn tổ hợp phím Ctrl+F để paste nó ra phía trên đối tượng vừa copy.
   2. Chọn đối tượng vừa paste vào menu Object > Path \ Offset Path trong phần Offset gõ giá trị bằng -2px
   3. Chọn phần phía ngoài dùng Direct Selection Tool để xóa nó.
   4. Tiến hành cắt phần dưới của badge. Bạn chọn công cụ Pen tool, vẽ một đường path như hình trên. Bạn chọn cả hai đối tượng (đối tượng cần cắt và đường path vừa vẽ), mở cửa số Pathfinder (Windows \ Pathfinder) sau đó chọn mục Divide.

4. Tạo bóng và viết chữ

Sau khi tạo được hình phía trên chúng ta tiến hành tạo bóng và viết chữ.

  

 

 

 

 

 

1.  Chọn đối tượng cần tạo bóng sau đó click chọn nút Gradient, chúng ta sẽ điều chỉnh phần Gradient của đối tượng phía trên sao cho phù hợp với đối tượng phía dưới.
   2. Để viết Text chúng ta chọn công cụ Text Type tool (T), chọn font chữ phù hợp và tiến hành viết chữ lên hình.

Cuối cùng chúng ta được một hình vẽ như hình trên.


 

Tổng hợp từ CSSYeah

 

Làm rõ thuật ngữ (Id) và (Class)

March 22nd, 2008

Cũng có khá nhiều bạn hỏi tôi về việc làm sao để phân biệt được id và class. Khi nào dùng id, khi nào dùng class trong HTML và CSS. Trong bài viết này tôi xin giải thích kỹ hơn về hai thuật ngữ này và cách dùng chúng trong quá trình viết mã HTML.
1. Id.
Đầu tiên chúng ta sẽ đi tìm hiểu về thuật ngữ id
1.1 Id là gì?
id hay là index(chỉ số) được dùng để xác định một đối tượng duy nhất nào đó. Do đó trong một trang HTML của bạn mỗi đối tượng chỉ có duy nhất một id, nếu có 2 đối tượng trở lên có id giống nhau trong cùng một trang thì điều đó có nghĩa là trang đó của bạn không validate HTML.
1.2 Id dùng khi nào?.

Do mỗi trang HTML mỗi đối tượng chỉ có thể có duy nhất một id chính vì vậy id được dùng cho những đối tượng nào mang tính duy nhất trong trang (ví dụ: khung viền (wrapper), menu chính (main menu),…).
1.3. Cách dùng id.

<div id="mainwrapper">
    Nội dung thông tin…
  </div>

Trong file CSS chúng ta sẽ dùng dấu "#" trước tên đối tượng mà chúng ta đặt là id

.
2. Class

Bây giờ chúng ta tiếp tục đi tìm hiểu về thuật ngữ class và cách sử dụng chúng trong quá trình viết mã HTML.
2.1 Class là gì?

class hay còn gọi là lớp dùng để chỉ một lớp các đối tượng có chung các thuộc tính. Các đối tượng trong cùng một class có tính thừa kế lẫn nhau, chính vì vậy trong một trang HTML của bạn có thể có rất nhiều các đối tượng có thể thuộc một class nào đó. Ví dụ sau đây sẽ minh chứng cho các bạn về tính thừa kế và việc định nghĩa nhiều đối tượng cùng thuộc một class nào đó.

Giả sử rằng chúng ta có một trang HTML như sau:

<html>
  <head>
  </head>
 
  <body>
    <div id="wrapper">

      <div class="info">
        <p>Nội dung thông tin…<p>
      </div>

      <div class="author">
        <div class="info">
          <p>Nội dung thông tin 2…<p>
        </div>
      </div>

    </div>
  </body>
</html>

Giả sử rằng chúng ta định nghĩa các thuộc tính của class="info" như sau:

.info {
  margin: 5px 10px;
  padding: 10px;
  border: 1px solid #F0F0F0;
}

Bây giờ bạn muốn định nghĩa cho thẻ div nằm trong phần author có màu nền là màu đen và chữ là màu trắng thì ta chỉ cần định nghĩa thêm hai thuộc tính này còn thẻ <div class="info"> đã thừa kế các thuộc tính margin, padding, border của class ở trên. Phần định nghĩa thêm như sau:

div.author .info {
  background-color: #000000;
  color: #FFFFFF;
}

Khi đó đối tượng <div class="info"> trong phần author sẽ bao gồm các thuộc tính sau.

div.author .info {
  margin: 5px 10px;
  padding: 10px;
  border: 1px solid #F0F0F0;
  background-color: #000000;
  color: #FFFFFF;
}

Qua ví dụ trên chúng ta cũng thấy được việc sử dụng nhiều đối tượng thuộc cùng một class trong cùng một trang như thế nào.
2.1 Dùng class khi nào?

Do tính chất của class đã trình bày ở trên có thể suy ra rằng nếu khi nào chúng ta muốn nhiều đối tượng dùng chung một số thuộc tính nào đó (vd: color, background, border,…) thì chúng ta nên gộp chúng vào chung một class.
2.3 Cách dùng class.

Trong HTML chúng ta dùng như sau:

<div class="subwrap">
    Nội dung thông tin…
  </div>

  <p class="paragraph1">
    Nội dung thông tin…
  </p>

  <span class="highlight">Dòng nổi bật</span>

Trong file CSS chúng ta đặt dấu "." trước tên của đối tượng mà chúng ta đặt là class.

Chúc các bạn thành công.
 

Tổng hợp từ  cssYeah.com

Menu dạng tab - Phần I.

January 31st, 2008

Trong chúng ta tôi giám chắc rằng không còn ít người vẫn còn mặc cảm với những menu dạng tab, không phải vì nó xấu mà luôn nghĩ rằng làm nó khó và cấu trúc của nó rất phức tạp. Chính bản thân tôi trước đây cũng như vậy. Nhưng thực ra có phải như vậy không? để trả lời câu hỏi đó bây giờ chúng ta cùng nhau thử Style cho một kiểu tab đơn giản để xem nó có thực sự khó như chúng ta vẫn thường nghĩ không?.

Trong menu dạng này bao giờ cũng gồm 2 phần, phần 1 để chứa các tab và phần thứ hai là phần để chứa nội dung của các tab. để có hình dung rõ hơn chúng ta sẽ xem hình ảnh minh họa dưới đây.

Đầu tiên chúng ta sẽ định dạng cho phần khung của tab như sau:

div#wrapper {
margin: 50px;
padding: 0;
}

Chúng ta sẽ dùng định dạng của thẻ <ol> để tạo lên các tab ở phần 1. Về nguyên tắc thì chúng ta có thể dùng một trong ba thẻ <ul>, <ol>, <dl>. Nhưng tại sao tôi lại dùng thẻ <ol>, là bởi vì một lý do nào đó mà trình duyệt của người xem không tải được CSS từ Website của bạn thì họ vẫn hiểu được cấu trúc tab của bạn. Định dạng của phần một như sau

<ol class=”tab”>
<li class=”active”>Trang chủ</li>
<a href=”gioithieu.html” title=”Giới thiệu”>Giới thiệu</a>
<a href=”sanpham.html” title=”Sản phẩm”>Sản phẩm</a>
<a href=”tintuc.html” title=”Tin tức”>Tin tức</a>

<a href=”lienhe.html” title=”Liên hệ”>Liên hệ</a>
</ol>

Bây giờ chúng ta sẽ định dạng sao cho các tab nằm trên cùng một hàng và có hình dáng của tab.

ol.tab {
background: url(../dot.gif) repeat-x left bottom; /* ảnh 1px */
list-style: none;
margin: 0;
padding: 6px 0;
position: relative;
}

ol.tab li {
background: #F2F5FA;
border: 1px solid #D3DDED;
display: inline; /* các thẻ li ở trên một dòng */
margin-right: 5px;
padding: 0;
}

Trong cách định dạng này ta có sử dụng một kỹ thuật nhỏ, đó là chúng ta có sử dụng một ảnh .gif có kích thước 1px x 1px để thay thế border-bottom của <ol>

Khi đang ở trong trang nào đó thì tab của trang đó sẽ có màu khác với những tab khác, do vậy chúng ta sẽ đặt cho tab đó một class là active. Vì vậy chúng ta cần phải định dạng cho riêng cho các tab active như sau:

ol.tab li.active {
background: #FFF;
border-bottom: 1px solid #FFF;
font-weight: bold;
padding: 5px 10px;
}

Tiếp theo chúng ta sẽ định dạng cho các link nằm trong thẻ

ol.tab a {
font-weight: bold;
margin: 0;
padding: 5px 10px;
}

Cuối cùng bây giờ chúng ta sẽ định dạng phần chứa nội dung của mỗi tab. Phần này chỉ đơn giản là chúng ta định dạng cho thẻ <div> chứa nội dung.

div#content {
border: 1px solid #D3DDED;
border-top: none;
padding: 10px;
}

Và bây giờ các bạn mở file .html bằng một trình duyệt nào đó và ngắm nhìn kết quả của mình. Các bạn thấy đấy menu dạng tab đâu có quá phức tạp đúng không các bạn? các bạn có thể tải toàn bộ ví dụ tại đây.

Menu dạng tab - Phần I.

Download

Căn bảng vào giữa màn hình.

January 31st, 2008

Bình thường thì bạn muốn đặt một table có chiều rộng cố định vào giữa màn hình thì bạn làm thế nào? có phải bạn đặt thuộc tính align="center" vào trong thẻ <table>?. Nếu bạn làm như vậy thì bạn chỉ được kết quả đúng như ý bạn trên một số trình duyệt, còn một số trình duyệt sẽ không thể hiện kết quả như bạn muốn.

Sau đây tôi muốn giới thiệu với bạn một tips nhỏ trong CSS để đặt một table có kích thước cố định vào giữa trang.

Giả sử rằng bạn có một table như sau: <table class="center">. Nếu bây giờ bạn muốn đặt table đó vào giữa trang màn hình bạn chỉ việc đặt cho hai thuộc tính margin-leftmargin-right của table có giá trị bằng auto.

Chúng ta có mã CSS như sau:

table.center {
width: 780px;
margin-left: auto;
margin-right: auto;
}

Bài 10: CSS padding

January 31st, 2008

CSS padding sẽ định nghĩa khoảng trống giữa mép của các phần tử tới các phần tử con hoặc nội dung bên trong. Chúng ta không thể gán giá trị âm cho thuộc tính này. Cũng giống như margin thuộc tính padding cũng tương ứng với 4 phía của phần tử.

Tương ứng với 4 phía của phần tử chúng ta có 4 thuộc tính padding tương ứng đó là:

  1. padding-top:

  2. padding-right:

  3. padding-bottom:

  4. padding-left:

Các giá trị có thể gán cho các thuộc tính này là : % hoặc length

Để viết cho gọn chúng ta cũng có thể viết thuộc tính padding dưới dạng shorthand.

div.padding {
padding: 5px 3px 2px 8px;
}

Bài 9: Thuộc tính đường bao ngoài (Outline)

January 31st, 2008

Thuộc tính Outline sẽ vẽ một đường bao ngoài toàn bộ một phần tử HTML, đối với phần tử có đường viền (border) thì đường bao này sẽ bao trọn đường viền của phần tử đó. Cũng tương tự như đường viền bạn có thể đặt cho nó các thuộc tính về màu săc, độ lớn và kiểu.

Có một điều cần chú ý là các thuộc tính của đường bao này có thể không được hỗ trợ trên IE

01Đặt thuộc màu cho đường bao

Nếu muốn đặt màu cho đường bao chúng ta có thể sử dụng thuộc tính outline-color:

p {
outline-color: #CC0000;
}

02Đặt độ rộng cho đường bao.

Tương tự như đường viền, để đặt độ rộng cho đường bao chúng ta đặt giá trị độ lớn cho thuộc tính outline-width:

p {
outline-width: 2px;
}

03Chọn kiểu đường bao

Để chọn kiểu cho đường bao chúng ta sẽ đặt lần lượt các giá trị cho thuộc tính outline-style:

p {
outline-style: dotted;
}

STT outline-style
1 none
2 hidden
3 dotted
4 dashed
5 solid
6 double
7 groove
8 ridge
9 inset
10 outset

Để cho gọn chúng ta cũng có thể viết các giá trị của thuộc tính Outline dưới dạng shorthand như sau:

div.outline {
outline: 1px solid #000;
}

Bài 8: Các thuộc tính của margin

January 31st, 2008

Thuộc tính margin sẽ định nghĩa khoảng trắng bao quanh một phần tử HTML. Nó có thể dùng giá trị âm để lồng nội dung vào với nhau. Tương ứng với 4 phía của một phần tử chúng ta có 4 thuộc tính tương ứng. Mặt khác để viết cho gọn chúng ta cũng có thể dùng cách viết giản lược để định nghĩa các giá trị cho thuộc tính margin.

Đối với các trình duyệt Netcape và IE thì giá trị mặc định của thuộc tính margin là 8px. Nhưng Opera thì không hỗ trợ như vậy. Để cho thống nhất chúng ta có thể đặt margin mặc định cho toàn bộ các phần tử.

Các giá trị mà thuộc tính margin có thể nhận được đó là: auto, length, %. Chúng ta đặt giá trị nào là tùy thích cộng với việc tương ứng tỉ lệ với các phần tử khác.

Tương ứng với 4 phía ta có 4 thuộc tính:

  1. margin-top:

  2. margin-right:

  3. margin-bottom:

  4. margin-left:

Để cho gọn chúng ta cũng có thể việt thuộc tính margin dưới dạng shorthand

div.margin {
margin: 10px 4px 5px 9px; /* top | right | bottom | left*/
}

Bài 7: Đường viền và các thuộc tính của đường viền

January 31st, 2008

Các thuộc tính của đường viền (border) sẽ cho phép đặt các giá trị đặc biệt cho đườn viền như kiểu đường viền, kích thước, màu sắc. Thuộc tính này sẽ được áp dụng cho các thẻ HTML như <div>, <li>, <table>,…

Trong thuộc tính đường viền (border) chúng ta có 3 giá trị cơ bản đó là:

  1. border-color:
  2. border-width:
  3. border-style:

01Thuộc tính màu của đường viền

Để đặt màu cho đường viền chúng ta sẽ đặt thông số màu cho thuộc tính border-color:

div.color {
border-color: #CC0000;
}

02Đặt chiều rộng cho đường viền (border)

Nếu muốn đặt chiều rộng của đường viền chúng ta sẽ đặt giá trị cho thuộc tính border-width:

div.borerwidth {
border-width: 2px;
}

STT Giá trị
1 thin
2 medium
3 thick
4 length

03Chọn kiểu của đường viền

Bạn có thể sử dụng thuộc tính border-style để đặt kiểu cho đường viền. Chúng ta có thể gán cho thuộc tính này 9 giá trị khác nhau tương ứng với 9 kiểu đường viền khác nhau.

div.borderstyle {
border-style: solid;
}

STT border-style
1 none
2 hidden
3 dotted
4 dashed
5 solid
6 double
7 groove
8 ridge
9 inset
10 outset

Với 4 phía của đối tượng ta có 4 thuộc tính border tương ứng:

  1. border-top:
  2. border-right:
  3. border-bottom:
  4. border-left:

Ứng với đường viền của mỗi phía chúng ta đều có 3 giá trị (color, width, style)

STT Phía Thuộc tính
1 top border-top-color:
border-top-width:
border-top-style:
2 right border-right-color:
border-right-width:
border-right-style:
3 bottom border-bottom-color:
border-bottom-width:
border-bottom-style:
4 left border-left-color:
border-left-width:
border-left-style:

Chúng ta có thể dùng phương pháp viết mã giản lược (shorthand) để viết các thuộc tính của đường viền gọn hơn. Giả sử chúng ta đặt thuộc tính border của thẻ <div> với độ rộng bằng 1, kiểu solid và màu là #CC0000

div.border {
border: 1px solid #CC0000;
}