Jun
17

10 cách viết CSS tốt cho bạn mới học

Nếu bạn là người thiết kế và thường xuyên phải viết CSS cho các trang web thì chắc bạn biết rõ tầm ảnh hưởng của các file CSS đối với trình duyệt (ở đây babyinternet gọi là browser nhé) trong việc hiển thị website của mình. Thật khó mà có thể làm hài lòng tất cả các bác browser khó tính. Ở đây Nhân xin trình bày một số kinh nghiệm nhỏ nhoi nhằm giúp bạn thực hiện công việc một cách dễ dàng và tốt đẹp hơn.1. Canh lề với tag DIV

Việc canh lề và tạo một cột trái có vẻ sẽ không phải là vấn đề đơn giản chút nào với CSS hiện thời. Và trong khi anh em chúng ta ngồi đây đợi CSS 3 ra mắt thì tôi đã lục lọi trên Internet và tìm được giải pháp cho việc canh lề này một cách tốt nhất. Trước tiên ta hãy xem đoạn mã sau đã:

.wrapper {
width: 100px;
height: 100px;
position: absolute;
top: 50%;
left: 50%;
margin-left: -50px;
margin-top: -50px;
}

Vấn đề ở đây là gì ?
Xem xét đoạn mã CSS trên chúng ta sẽ thấy rằng đoạn code chỉ được định nghĩa chiều cao 100px và trong trường hợp nếu chiều cao của nó nhỏ hơn chiều cao của trình duyệt thì chúng ta không thể có các croll kéo chuột. Trong trường hợp này bạn sẽ đặt ra câu hỏi tại sao lại muốn có croll chuột trong trường hợp này ? Hãy xét một ví dụ khác là nếu dữ liệu bạn chứa trong tag div này lớn hơn chiều cao của tag được định nghĩa. Lúc đó một số dữ liệu bên dưới có thể không được hiển thị trên một số trình duyệt. (Bản thân tôi cũng đã từng gặp không ít trường hợp nà. Híc ! :-( )

Giải pháp:
Baby đưa ra giải pháp cho vấn đề này như sau:

<div id=”shim”/></div>
<div id=”wrapper”>
Content
</div>
html, body {
height: 100%;
margin: 0;
padding: 0;
}
* {
margin:0px auto;
padding:0;
}
div#shim {
visibility: hidden;
width: 100%;
height: 50%;
margin-top: -200px;
float: left;
}
div#wrapper {
width: 1000px;
height: 400px;
clear: both;
background:red;
position: relative;
top: -200px;
/* IE4ever Hack: Hide from IE4 **/
position: static;
/** end hack */
}
/* Hide from IE5mac \*//*/
div#shim {
display: none;
}
html, body {
height: auto;
}
/* end hack */
/* ]]> */

2. Min-Height

selector {
min-height:500px;
height:auto; !important
height:500px;
}

3. PNG transparency
Nếu bạn phải sử dụng một ảnh PNG để làm ảnh nền, vấn đề bạn sẽ gặp phải là khi text của bạn trùng với màu của ảnh dẫn đến bạn sẽ không thể nhìn rõ text.
Hãy xem hình dưới đây:

Vấn đề đặt ra ở đây là bạn cần phải làm thế nào để hình ảnh vẫn hiển thị và bạn vẫn có thể đọc được đoạn text của mình. Babyinternet đã xem cách mà website www.ngoisao.net thực hiện và tôi cũng có một giải pháp tương tự. Đầu tiên bạn code đoạn code sau và save thành file JS.

/*

Correctly handle PNG transparency in Win IE 5.5 & 6.
http://homepage.ntlworld.com/bobosola. Updated 18-Jan-2006.

Use in <HEAD> with DEFER keyword wrapped in conditional comments:
<!–[if lt IE 7]>
<script defer type=”text/javascript” src=”pngfix.js”></script>
<![endif]–>

*/

var arVersion = navigator.appVersion.split(“MSIE”)
var version = parseFloat(arVersion[1])

if ((version >= 5.5) && (document.body.filters))
{
for(var i=0; i<document.images.length; i++)
{
var img = document.images[i]
var imgName = img.src.toUpperCase()
if (imgName.substring(imgName.length-3, imgName.length) == “PNG”)
{
var imgID = (img.id) ? “id=’” + img.id + “‘ ” : “”
var imgClass = (img.className) ? “class=’” + img.className + “‘ ” : “”
var imgTitle = (img.title) ? “title=’” + img.title + “‘ ” : “title=’” + img.alt + “‘ ”
var imgStyle = “display:inline-block;” + img.style.cssText
if (img.align == “left”) imgStyle = “float:left;” + imgStyle
if (img.align == “right”) imgStyle = “float:right;” + imgStyle
if (img.parentElement.href) imgStyle = “cursor:hand;” + imgStyle
var strNewHTML = “<span ” + imgID + imgClass + imgTitle
+ ” style=\”" + “width:” + img.width + “px; height:” + img.height + “px;” + imgStyle + “;”
+ “filter:progid:DXImageTransform.Microsoft.AlphaImageLoader”
+ “(src=’” + img.src + “‘, sizingMethod=’scale’);\”></span>”
img.outerHTML = strNewHTML
i = i-1
}
}
}

Phần header bạn cho thêm đoạn sau:

<!–[if lt IE 7.]>
<script defer type=”text/javascript” src=”pngfix.js”></script>
<![endif]–>

Một cách khác là bạn có thể làm như www.ngoisao.net:

.someelement {
background-image: url(images/image.png);
}
* html .someelemen {
background-color: #333;
back\ground-color: transparent;
background-image: url(images/blank.gif);
filter: progid:DXImageTransform.Microsoft.
AlphaImageLoader(src=”images/image.png”, sizingMethod=”scale”);
}

Baby cũng tìm thấy nhiều điều thú vị khi thử thay thế theo một cách khác nữa:

.someelement:hover {
background: #333;
}

.someelement:hover {
background-image: url(images/image2.gif);
}

4. Tự xóa định dạng

.container:after {
content: “.”;
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.container {display: inline-table;}
/* Hides from IE-mac \*/
* html .container {height: 1%;}
.container {display: block;}
/* End hide from IE-mac */

5. Reset CSS

body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,
fieldset,input,p,blockquote,th,td {
margin:0; padding:0;
}
table {border-collapse:collapse;border-spacing:0;}
fieldset,img {border:0;}
address,caption,cite,code,dfn,em,strong,th,var {
font-style:normal;font-weight:normal;
}
ol,ul {list-style:none;}
caption,th {text-align:left;}
h1,h2,h3,h4,h5,h6 {font-size:100%;}
q:before,q:after {content:”;}

6. Scrolling Render IE

html {
background : url(null) fixed no-repeat;
}

7. Opacity

#transdiv {
filter:alpha(opacity=75);
-moz-opacity:.75;
opacity:.75;
}

8. PRE Tag

pre {
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}

9. Li Background Repeat IE

<!–[if lt IE 7]>
<style>
#leftnav li { zoom: 1;} /* haslayout=true */
</style>
<![endif]–>

10. cách tốt nhất là

@charset “UTF-8″;
/* ———————————————————————-
WinIE7
———————————————————————- */
*:first-child+html selector{property:value;}
/* ———————————————————————-
WinIE6 & Mac IE
———————————————————————- */
* html selector{property:value;}
/* ———————————————————————-
WinIE6
———————————————————————- */
/*\*/
* html selector{property:value;}
/**/
/* ———————————————————————-
MacIE
———————————————————————- */
/*\*//*/
selector{property:value;}
/**/

Chúc các bạn có thêm nhiều kinh nghiệm trong thiết kế website.

Bạn nên đọc

  • Audio các bài thuyết pháp của Thượng Tọa Thích Chân Quang (36)
    Mình là Phật tử lúc nhỏ nhưng do điều kiện gia đình nên không thể tiếp tục đi sinh hoạt được nữa :( Không cần biết các bạn theo Đạo hay không, theo đạo phái nào cũng được :D Các bạn nên bỏ thời gian nghe các bài thuyết pháp này...
  • Hướng dẫn đăng ký tài khoản Paypal tại VN (34)
    Paypal cho phép VN nhận và rút tiền từ tài khoản VN là một tin vui cho giới webmaster bởi từ trước đến giờ muốn rút được tiền rất khó khăn và phải nhờ bạn bè ở nước ngoài làm là chủ yếu. Giờ thì mọi việc đã đơn giản hơn nhi...
  • Tạo con dấu đỏ bằng photoshop (33)
    Hôm nay khai trương cái box đồ họa, cũng là đang rãnh hơi chưa có làm gì nên viết cái tutorial này tặng bà con, cũng là đáp ứng nhu cầu của thằng em ngoài HN. Mong rằng cái này thỏa mãi được cái tính thích tự khẳng định mình của mọi ng...
  • Mời hợp tác kiếm tiền (designer và coder) (26)
    Do mục đích ... kiếm tiền nên mình mời các anh em có cùng đam mê... kiếm tiền và có kinh nghiệm làm việc ở lĩnh vực thiết kế website và lập trình cùng chung tay. Bạn nào có khả năng và có thời gian xin reply mình nhé. Nhưng trước tiên mời...
  • Sử dụng Gravatar để tạo Avatar tại mọi mặt trận Wordpress (21)
    Bạn có bao giờ nghĩ rằng bạn có thể comment ở bất cứ blog WordPress nào (ví dụ như tại NhanWeb chẳng hạn) cũng có thể hiển thị hình ảnh Avatar mặc định của mình mà không cần phải đăng ký là người dùng và upload hình ảnh của mình c...
  • Xử lý dấu tiếng Việt trong URL WordPress (16)
    Theo mặc định bình thường Wordpress rất "ngu" phần Tiếng Việt. Do đó, Permalink được tạo ra thường chứa các kí tự tiếng Việt kiểu nửa ta nữa tây rất khó chịu. Đã vậy nó còn mã hóa thành vào chục cái dấu % nữa chứ. Nhân vừa tiế...
  • Những điều bạn nên làm khi xây dựng website cá nhân (14)
    Bài viết này tôi giành riêng cho các bạn trẻ muốn xây dựng website nhằm khẳng định tên tuổi của bản thân mình cũng như giao lưu với các bạn khác thông qua môi trường internet (bao gồm cả thiết kế blog, forum, thiết kế website cá nhân...). ...
  • Hướng dẫn đăng ký 000webhost (13)
    Việc xây dựng website hầu như là mong muốn chính đáng của hầu hết các bạn khi tham gia vào hoạt động trực tuyến. Tôi có nhận được nhiều email và cả điện thoại về những khó khăn của nhiều bạn - đặc biệt là sinh viên về vấn đ...
  • Bài thuyết pháp Bóng Mây (Đại Đức Thích Thiện Thuận) (13)
    Đây là một bài thuyết pháp chủ đề về mẹ rất hay. Thật sự  cảm động và cần phải nhìn lại mình. Hi vọng bài thuyết pháp của thầy Thích  Thiện Thuận sẽ đem lại cho bạn nhiều điều chưa biết về người mẹ của mình hơn. ...
  • Zing “vượt mặt” Yahoo! như thế nào ? (13)
    Sau khi bài viết Zing vượt Yahoo tại thị trường Việt Nam của bác Khải được bạn nào đó đăng tải trên LinkHay, mình có tham gia chém gió một xíu về cú tăng tốc của Zing, cũng có nhận được vài Comment của bác Khải trả lời về vấn đ...

7 Comments to “10 cách viết CSS tốt cho bạn mới học”

  • mrlight June 19, 2009 at 3:09 pm

    cầm-men cái chơi :) )

  • emily9 June 20, 2009 at 6:42 am

    Cám ơn bạn Nhân đã bỏ nhiều công sưu tầm để viết ra giúp cho mọi người.
    Ước mong bạn Nhân ghi thêm nhiều chú thích hướng dẩn để những người mới học thu thập được dể dàng hơn.
    Tôi có vài trở ngại khi dùng CSS xin bạn Nhân hướng dẩn giúp:
    Tôi dùng CSS cho nhiều trang Web, khi mỡ với IE thì hoàn chỉnh, nhưng khi mỡ với FireFox thì nó hiện ra sai, cã kích thước lẫn màu.
    Cám ơn

  • Nguyễn Duy Nhân June 20, 2009 at 1:22 pm

    Mỗi trình duyệt có một mức độ hỗ trợ CSS khác nhau cũng như chế độ hiển thị CSS cũng khác nhau (có trình duyệt tự thiết lập thuộc tính, có trình duyệt không tự thiết lập thuộc tính…). Bạn phải nắm rõ sự khác nhau của mỗi trình duyệt mới có thể đồng hóa được chúng.
    Mình sẽ PM yahoo bạn xem có giúp được gì ko :)

  • hung July 21, 2009 at 6:50 pm

    copy nguoi khac ko mà sao comment dc :D

  • Nguyễn Duy Nhân July 21, 2009 at 10:36 pm

    Mình không hiểu ý bạn.

  • Có tài liệu học css thì cho tôi với October 16, 2009 at 11:29 pm

    tôi đang cần học css nhưng không biết bắt đầu từ đâu và như thế nào? có gì đồng chí trợ giúp cho với, cảm ơn!

  • Nguyễn Duy Nhân October 17, 2009 at 4:52 pm

    Bạn có thể tìm thấy nhiều tài liệu về CSS (và nhiều tài liệu về thiết kế website) tại câu lạc bộ webmaster Việt Nam: http://vnwebmaster.com

Post comment

:D :) >:D< :P :(( :beat: ;):x L-) ;)) :shot: =)) :kill: >:) =P~ more »