Thứ Bảy, 6 tháng 9, 2014

Đừng lạm dụng jquery hoặc JavaScript Frameworks quá mức


Đừng lạm dụng jquery quá mức
Hôm nay tôi viết bài này vì gàn đây tôi bắt gặp khá nhiều bạn hỏi hiệu ứng nọ kia bằng jquery. Tôi không có ý nói và cũng không thể nói việc đi từ A đến B phải đi bằng con đường này mà không phải là con đường kia. Và việc dùng thế nào là quyền của người dùng, miễn sao họ tới dích là được. Thậm trí tôi còn ủng hộ xu hướng "đa đảng" vì có như thế mới có sự phát triển nếu không html, css hay jq sẽ độc tôn và dừng một chỗ.
Qua nhiều câu hỏi và các demo dường như nhiều bạn đang lạm dụng jquery nhiều hơn là tham khảo tìm tòi học hỏi. Vì có nhiều hiệu ứng khá đơn giản mà vẫn dùng jquery, có vẻ một số chưa học html css một cách nghiêm túc nhất, thực tế thì cho dù bạn có đến lớp gặp thầy dạy html css thì cũng không ai dạy bạn hết món. Chỉ có tự học trên w3c lần lượt từ đầu và tham khảo các ví dụ ở mấy trang nước ngoài mới vỡ ra nhiều điều.
Thực tế html css ngày nay có thể làm được nhiều việc hơn mọi ngưởi tưởng, các hiệu ứng chuyển động, xử lý thời gian, thuộc tính sự kiện, thậm trí đến cả tính toán mà không cần đụng đến dòng <script> nào
Vậy nên ngoại trừ học hỏi tìm hiểu những thứ lặt vặt trong jquery để góp vốn xây dựng những tiện ích lớn hơn thì những gì html css không thể làm được thì mới phải cầu đến jquery hoặc loại JavaScript Frameworks khác. Mặt khác khi tham khảo các ứng dụng lạ lạ của nước ngoài đôi khi họ cũng tính toán tìm một loại Framework Javascript thích hợp nhất chứ không nhất thiết phải Jquery như thói quen số đông Việt Nam.
Một điểm yếu của html css là sự lỗi thời của một số trình duyệt bảo thủ như IE vì nó là "doanh nghiệp nhà nước". Có nhiều cái không có tác dụng.
Nhưng ưu điểm lớn nhất là nhẹ, ngắn, chạy nhanh hơn.
Còn nhược điểm của jquery là dài dòng, chậm. Nếu áp dụng không đúng chỗ thì nó giống như cảnh bạn dùng ô tô để chở 1 cái bánh mì nhỏ thay vì đi bộ hoặc xe đạp sẽ tiện hơn.

thaotrinh
jquery là gì, lạm dụng jquery, tận dụng html css, lợi thế của html, JavaScript Frameworks css
Thứ Năm, 17 tháng 7, 2014

Js - Đo kích thước màn hình để tự động chuyển trang bằng javascript



Có nhiều cách khác nhau để website tự động chuyển trang
Ở đây tôi giới thiệu một mẹo nhỏ dùng javascript đo kích thước màn hình thiết bị, tùy kích thước màn hình thì nó sẽ tự động chuyển trang. Hiện tượng này tương tự như khi truy cập dantri.vn trên di động.
<script type="text/javascript">
//<![CDATA[
document.write("<p>Kích thước màn hình của máy bạn là: " + screen.width + " x " + screen.height + "</p>");
if(screen.width>=100)
    {self.location = "http://m.bendoi.vn";}
//]]>
</script>
thaotrinh
javascript đo kích thước màn hình, javascript measurement sizes of the screen
Thứ Hai, 10 tháng 2, 2014

[js] Tự động thay thế chuỗi ký tự trong bài viết


Tự động thay thế chuỗi ký tự trong bài viết
Đây là code bằng js đơn giản, dùng js tìm kiếm những thừ khóa được liệt kê, những từ khóa này sẽ bị thay thế bằng những chuỗi ký tự tùy ý. Chúng ta ứng dụng nó vào việc như: Tự động chèn link vào từ khóa, tự động tạo định dạng cho từ khóa, hoặc tạo hiệu ứng khi di chuột vào từ khóa sẽ xuất hiện box quảng cáo.

 <script type='text/javascript'>
window.onload=function replaceText()
{
if(!document.getElementById){return;}
bodyText = document.getElementById("bodytext");
theText = bodyText.innerHTML;
theText = theText.replace(/bd/gi, "<a href=\'http://bendoi.vn\' target=\'_blank\'/>bên đời</a> ");
theText = theText.replace(/facebook/gi, "<b>facebook</b> ");
theText = theText.replace(/fb/gi, "<a href=\'https://www.facebook.com/groups/bendoibendoi/\' target=\'_blank\'>bendoibendoi</a>");
bodyText.innerHTML = theText;
}
replaceText();
</script>
<div id="bodytext">
bd có trang facebook là fb
</div>


kết quả:
bên đời có trang facebook là bendoibendoi
Thao Trịnh
Thứ Bảy, 14 tháng 9, 2013

CSS - Hiệu ứng trượt lên xuống trái phải


Khi lang thang vào những website chuyên giới thiệu các sản phẩm công nghệ, phong cách giao diện metro. Chúng ta thấy đôi khi họ sử dụng hiệu ứng trượt theo chiều ngang hoặc chiều dọc khá đẹp mắt.

Để làm được hiệu ứng đó, nhiều bạn cứ nghĩ phải đụng đến jquery hay đại loại là cần đến javascript. Và hầu hết các website giải quyết vấn đề theo cách này.
Với tôi thì nghĩ khác, tại sao chúng ta lại phải dùng js, nếu trinh duyệt tắt js thì sao. Trong khi vấn đề đó có thể được giải quyết đơn giản.

CSS Hiệu ứng trượt lên xuống trái phải

 Bài viết này là một demo mẫu viết bằng HTML + CSS, rất dễ tùy biết, nhanh gọn đẹp.
<style>
    #bendoi{width:500px; height:300px; border:0px solid #ccc; float:left;overflow:hidden;}
    .ngang, .doc {float:left; margin:5px; padding:5px; border:1px solid #ccc;display: block;overflow:hidden;box-align:center;text-align:center; min-width:50px; min-height:100px; position: relative;
    display: table-cell;vertical-align: middle;
    }
    /*ngang*/
    .ngang .trai {float: left;position: absolute;transition-duration: 1s;-moz-transition-duration: 1s;-webkit-transition-duration: 1s;   -o-transition-duration: 1s;
      padding-top:35px}
 
   .ngang .phai { float: right;width: ;transition-duration: 1s;-moz-transition-duration: 1s;-webkit-transition-duration: 1s;      -o-transition-duration: 1s; padding-top:35px}
 
    .ngang:hover .trai {margin-left: 120px;}
    .ngang:hover .phai {margin-right: 120px;}
    /*doc*/
    .doc .tren {position: absolute;transition-duration: 1s;-moz-transition-duration: 1s;-webkit-transition-duration: 1s;   -o-transition-duration: 1s; top:10px}
 
   .doc .duoi {position: absolute;transition-duration: 1s;-moz-transition-duration: 1s;-webkit-transition-duration: 1s;      -o-transition-duration: 1s;
      bottom:10px;}
 
    .doc:hover .tren {margin-top: 70px;}
    .doc:hover .duoi {margin-bottom: 70px;}
 
  </style>

  <div id="bendoi">
    <div class="ngang" style="width:150px; ">
      <div class="trai"> trai </div>
      <div class="phai"> phai </div>
    </div>
 
    <div class="doc" style="width:; height:;">
      <div class="tren"> tren </div>
      <div class="duoi"> duoi </div>
    </div>
 
 
    <div class="doc" style="width:; height:;">
      <div class="tren"> tren </div>
      <div class="duoi"> duoi </div>
    </div>
 
     <div class="ngang" style="width:150px; height:;">
      <div class="trai"> trai </div>
      <div class="phai"> phai </div>
    </div>
 
    <div class="ngang" style="width:150px;  height:;">
      <div class="trai"> trai </div>
      <div class="phai"> phai </div>
    </div>
 
    <div class="doc" style="width:; height:;">
      <div class="tren"> tren </div>
      <div class="duoi"> duoi </div>
    </div>
   
     <div class="ngang" style="width:150px; height:;">
      <div class="trai"> trai </div>
      <div class="phai"> phai </div>
    </div>
 
    <div class="doc" style="width:; height:;">
      <div class="tren"> tren </div>
      <div class="duoi"> duoi </div>
    </div>
 
  </div>   gửi email đến tôi nếu bạn muốn có một thiết kế riêng thật đẹp mắt và không "đụng hàng"
trai
phai
tren
duoi
tren
duoi
trai
phai
trai
phai
tren
duoi
trai
phai
tren
duoi


Thứ Sáu, 6 tháng 9, 2013

HTML - Hiển thị chú thích giữ chỗ trong input text


Hồi mới đầu "vọc" web tôi không biết làm thế nào để hiện dòng chữ chú thích như "Nhập vào đây ..." mà mỗi khi click chuột vào đó thì chữ biến mất dành chỗ cho chúng ta gõ từ mới.
Tôi view source thấy có tý ứng dụng đó mà họ cũng cho nhiều dòng js. Rồi tôi lên các forum hỏi cũng không nhận được sự trả lời ưng ý. Cuối cùng sau thời gian tự học web căn bản đi từ HTML mà lên cuối cùng tôi thấy hóa ra những vấn đề tưởng phức tạp lại giả quyết rất đơn giản nếu chúng ta nắm chắc kiến thức cơ bản.

Hôm nay tôi giới thiệu 2 kiểu code cho chúng ta hiệu ứng này, nhưng tôi vẫn khuyên bạn nếu làm web thì nên học thật chắc kiến thức cơ bản, để đừng phức tạp hóa vấn đề. Tôi biết có nhiều bạn trẻ, làm blog cũng khá đẹp và cũng có thể nói là sớm có sản phẩm & kinh nghiệm. Nhưng các bạn ấy, làm web theo kiểu ngọn, sử dụng khá tốt mã nguồn mở, biết ứng dụng hoặc module cho web và tất nhiên xây nhà cũng rất nhanh. Tuy nhiên lệ thuộc quá nhiều vào mã nguồn, các ứng dụng được viết sẵn, đụng tý là đi tìm ứng dụng thay vì nhận ra rằng vấn đề đó có thể giải quyết theo hướng nào.

Bạn nên biết rằng hầu hết các tiện ích không liên quan đến cơ sở dữ liệu, tức là không cần phải lưu thông tin gì lên database website hoặc không liên quan đến "cân đo đong đếm" bài viết, những tiện ích ấy hầu hết viết bằng HTML + CSS + JAVASCRIPT. Đây là ngôn ngữ cơ bản trong các website, nó hoạt động trên bất kỳ website nào, bạn đừng bận tâm đến các mã nguồn. Mà nên chăng hiểu nó và ứng dụng nó vào các mục đích khác nhau.

Để ứng dụng hiệu ứng này có 2 cách chính:
Cách 1: Thêm thuộc tính sự kiện vào input text
<input type="text" onblur='if(this.value==&apos;&apos;)this.value=this.defaultValue;' onfocus='if(this.value==this.defaultValue)this.value=&apos;&apos;' value='Nhập từ cần tìm vào đây'/>
Ví dụ:


Cách 2: Thêm placeholder vào input text với HTML5
<input type="text" value=""  placeholder="Nhập từ cần tìm vào đây"/><br/>
Ví dụ:

Thứ Hai, 2 tháng 9, 2013

jquery - 4 kiểu Hiển thị một popup


 Đây là code hiển thị một popup lên màn hình khi bạn click vào một liên kết. Tôi tìm thấy code này tại một site blogger Ấn Độ. Tại Việt Nam, một số blogger nổi tiếng cũng đã giới thiệu lại thủ thuật này, tuy nhiên nội dung js bỏ vào link js, css lại rồi thêm nội dung khác vào popup. Do đó mọi người có thể khó xác định nguồn và sử dụng nó hơi thụ động nếu không quen code.

Bài này tôi giới thiệu code cơ bản để các bạn nhanh hiểu, dễ tùy biến, tường minh về các phong cách. Cùng một thủ thuật này, có 2 kiểu hiệu ứng.
1. Để tắt khối popup thì phải click close.
2. Để tắt khối popup thì chỉ cần click vào màn hình hoặc click close cũng được

Hiệu ứng jquery hiện popup và tắt khi click vào nút close (cần nút tắt)

<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//open popup
$("#pop").click(function(){
  $("#overlay_form").fadeIn(1000);
  positionPopup();
});
//close popup
$("#close").click(function(){
$("#overlay_form").fadeOut(500);
});
});
//position the popup at the center of the page
function positionPopup(){
  if(!$("#overlay_form").is(':visible')){
    return;
  }
  $("#overlay_form").css({
      left: ($(window).width() - $('#overlay_form').width()) / 2,
      top: ($(window).width() - $('#overlay_form').width()) / 7,
      position:'absolute'
  });
}
//maintain the popup at center of the page when browser resized
$(window).bind('resize',positionPopup);
</script>
<style>
#overlay_form{
position: absolute;
border: 5px solid gray;
padding: 10px;
background: white;
width: 270px;
height: 190px;
}
</style>
<a href="#" id="pop" >PopUp</a>
<br />
<div id="overlay_form" style="display:none">
<a href="#" id="close" >Close</a>
</div>


Hiệu ứng jquery hiện popup và tắt popup bằng cách click lên vị trí bất kỳ bên ngoài (có thể không cần nút close)

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//open popup
$("#pop").click(function(){
  $("#overlay_form").fadeIn(1000);
  $(".background_overlay").fadeIn(500);
  positionPopup();
});
//close popup
$("#close, .background_overlay").click(function(){
$("#overlay_form").fadeOut(500);
$(".background_overlay").fadeOut(500);
});
});
//position the popup at the center of the page
function positionPopup(){
  if(!$("#overlay_form").is(':visible')){
    return;
  }
  $("#overlay_form").css({
      left: ($(window).width() - $('#overlay_form').width()) / 2,
      top: ($(window).width() - $('#overlay_form').width()) / 7,
      position:'absolute'
  });
}
//maintain the popup at center of the page when browser resized
$(window).bind('resize',positionPopup);
</script>
<style>
#overlay_form{
position: absolute;
border: 5px solid #8DC748;
padding: 10px;
background: white;
width: 270px;
height: 190px;
z-index: 200;
}
.background_overlay { position: fixed; left: 0px; top: 0px; width: 100%; height: 100%; z-index: 1; background:black; opacity: 0.5;}
</style>
<a href="#" id="pop" >PopUp</a>
<br />
<div class="background_overlay" style="display:none"></div>
<div id="overlay_form" style="display:none">
Nội dung ...
<a href="#" id="close" >Close</a>
</div>



Ở hai kiểu hiệu ứng trên, để hiện popup đều phải click lên một siêu liên kết. Nếu bạn muốn nó tự động xuất hiện popup khi load xong trang thì sửa lại phần js ở trên như sau:
jquery popup
Tức là loại bỏ dòng số 9 và dòng thứ 12 như hình trên
Ta có thể áp dụng cho 2 hiệu ứng trên. Tức là chúng ta sẽ có thêm 2 hiệu ứng nữa là:
3. Tự động hiện pupup, tắt popup bằng cách click vào nút close.
4. Tự động hiện popup, tắt popup bằng cách click bất kỳ bên ngoài popup (ko cần nút close)

Tham khảo
www.theonlytutorials.com/demo/typewriter/

jquery kiểu chữ đánh máy


Đây là hiệu ứng nhã từng chữ lên màn hình, giống như kiểu người ta đang đánh máy với thời gian thực. Code này Tôi sưu tầm từ một site ấn độ. Theo tôi để có hiệu ứng đánh máy như thế này, bạn phải thêm thư viện jquery vào site thì có vẻ hơi "tốn đất". Bạn nên áp dụng thủ thuật này khi mà site đã có file jquery đang áp dụng cho tính năng khác. Như vậy để tận dụng jquery.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<style>
.typewrite{ font-size: 20px;}
.typing-cursor{ position: relative; display: inline-block; width: 8px; text-indent: -999em; background: #ccc;}
</style>
<script>
$(document).ready(function(){
//get the content
var content = $('.typewrite').html();
//find the length of the content
var contentLength = content.length;
var char = 0;
$('.typewrite').html('<span class="typing-cursor">|</span>');
//Here is the function
(function typeFunc() {  
//dynamic delay to get the typewriting feel
    var typingSpeed = Math.round(Math.random() * 120) + 60;
    setTimeout(function() {
        char++;
        var type = content.substring(0, char);
$('.typewrite').html(type + '<span class="typing-cursor">|</span>');
//recursive
        typeFunc();
    }, typingSpeed);
}());
});
</script>
<div class="typewrite">
  Những dòng chữ viết theo kiểu đánh máy! <br/>
  Những dòng chữ viết theo kiểu đánh máy! <br/>
  Những dòng chữ viết theo kiểu đánh máy! <br/>
  Những dòng chữ viết theo kiểu đánh máy! <br/>
</div>
 
Những dòng chữ viết theo kiểu đánh máy!
Những dòng chữ viết theo kiểu đánh máy!
Những dòng chữ viết theo kiểu đánh máy!
Những dòng chữ viết theo kiểu đánh máy!
Tham khảo!
http://www.theonlytutorials.com/demo/typewriter/
Thứ Bảy, 31 tháng 8, 2013

CSS - Thủ thuật reset css


Khi viết giao diện website nếu không để ý chúng ta sẽ vướng vào việc chỉnh sửa các thuộc tính cho các thẻ HTML khá chầy chật, chỗ thì thế này, chỗ thì thế khác, thêm chỗ nọ, bớt chỗ kia dẫn đến không động bộ có thể bị thiếu hoặc lặp lại không cần thiết. Những thuộc tính này đã được các trình duyệt hoặc mã nguồn web đó mặc định, đừng tưởng cái gì mình chưa khái báo thì thuộc tính đó là không.
Việc các trình duyệt, thiết bị, mã nguồn có sẵn các thư viện css mặc định sẽ được tự động sử dụng nếu chúng ta không trực trực tiếp khai báo css, cũng có cái lợi những cũng có cái bất tiện.
Điều này thấy rất rõ trong mã nguồn đóng blogger (blogspot), hay thậm chí bạn code một trang html mới tinh trong máy bạn thì mặc định margin đã là 10px (tùy trình duyệt).

Do đó bạn thấy tầm quan trọng của remove css default rồi, để chắc ăn nhất, chúng ta sẽ reset css khi bắt đầu một giao diện.
Cách tiến hành:
Bước 1: Cập nhật tất cả các thẻ HTML.
Bước 2: Liệt kê danh sách những thẻ HTML mà site của bạn sử dụng và có thể sẽ sử dụng, nếu cảm thấy sẽ chẳng có nhu cầu dùng đến thì thôi.
Bước 3: Chia các thẻ này theo nhóm. Những thẻ nào có chung một thuộc tính hoặc vài thuộc tính giống nhau thì thành một nhóm. Những thẻ được sử dụng những chưa xác định thuộc cụ thể thì cũng chung một nhóm.
Bước 4: Viết css cho các nhóm đó theo dạng
nhóm_1 {thuộc_tính_11: giá_trị_11; thuộc_tính_12: giá_trị_12; ...}
nhóm_2 {thuộc_tính_21: giá_trị_21; thuộc_tính_22: giá_trị_22; ...}
...
nhóm_trống {}

Bước 5: viết lại một số css xuống dưới, quy định riêng một số thuộc tính.

Ở đây tôi có một đoạn css tướng đối đủ dùng cho hầu hết các nhu cầu cơ bản. Các bạn tham khảo:
Đoạn css reset phải được viết trước tiên, sau đó mới load đến các css khác.
/*reset css*/
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,dfn,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video
{
border:0;
font:inherit;
font-size:100%;
margin:0;
padding:0;
vertical-align:baseline;
}
article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{ display:block;}
body{ line-height:1;}
ol,ul{ list-style:none;}
blockquote,q{ quotes:none;}
blockquote:before,blockquote:after,q:before,q:after{ content:none;}
table{ border-collapse:collapse; border-spacing:0;}
b,u,i,del,em {/*lấy mặc định*/}
/*tùy ý css*/
...

Thứ Sáu, 30 tháng 8, 2013

PHP code lấy tỷ giá ngoại tệ Vietcombank


code lấy tỷ giá ngoại tệ Vietcombank
Để làm website tin tức thêm sinh động, chúng ta có thể nhúng thêm tiện ích tự động cập nhật tỷ giá ngoại tệ từ các ngân hàng. Đây là code php lấy thông tin tỷ giá các ngoại tệ từ vietcombank, cập nhật thường xuyên. Tôi đã sử lại code gốc để nó trông đẹp hơn và giống vietcombank, đồng thời tối ưu hơn với chuẩn html5 và load nhanh hơn so với trước phải dùng nhiều table lặp.
Tôi có 2 demo cho 2 kiểu xem, kiểu xem rộng và kiểu xem rut gọn để nhúng vào sidebar hoặc xem trên di động.
code lấy tỷ giá ngoại tệ Vietcombank
<!DOCTYPE html>
<html>
<head>
<title>Tỷ giá ngoại tệ vietcombank cập nhật</title>
<style>
/*skin:web.bendoi.vn*/
DIV.tygiangoaite {background:#0E5841;font: normal normal 13px  Tahoma; color:#fff;padding:5px}
table.tygiangoaite {    border-collapse: collapse;    width: 100%;}
table.tygiangoaite th { text-align: center; background:#6EAA58; font: bold normal 13px arial; color:#fff;}
table.tygiangoaite td { border: 1px dotted #ccc; padding:2px;}
table.tygiangoaite td.r {text-align: right;}
table.tygiangoaite tr:hover { background:#D4E6CC;}
</style>
</head>
<body>
<?php
class Rate{
var $source;
var $mydate;
function getXML(){return file_get_contents($this->source);}
function getRate(){
$xmlData = NULL;
$p = xml_parser_create();
xml_parse_into_struct($p,$this->getXML() , $xmlData);
xml_parser_free($p);
$this->mydate = $xmlData['1']['value'];
$data = array();
if($xmlData){
foreach($xmlData as $v)
if(isset($v['attributes']))
{$data[] = $v['attributes'];}
return $data;
}
return false;
}
function show(){$data = $this->getRate();
print '<table class="tygiangoaite">';
print '<tr class="th"><td colspan="5">Tỷ giá các ngoại tệ của Ngân hàng thương mại cổ phần Ngoại thương Việt Nam (Vietcombank) cập nhật '.$this->mydate.'</td></tr>';
print '<tr class="td"><td>Mã ngoại tệ</td><td>Tên ngoại tệ</td><td>Mua tiền mặt</td><td>Chuyển khoản</td><td>Bán</td></tr>';
foreach($data as $k=>$v){print '<tr><td>'.$v['CURRENCYCODE'].' </td><td>'.$v['CURRENCYNAME'].' </td><td class="r"> '.$v['BUY'].' </td><td class="r"> '.$v['TRANSFER'].'</td><td class="r">'.$v['SELL'].'</td></tr>';}
print '</table>';}}
$rate = new Rate();
$rate->source = 'http://www.vietcombank.com.vn/ExchangeRates/ExrateXML.aspx';
$rate->show();
?>
</body>
</html>

Bạn cũng có thể dùng luôn code dưới đây nhúng vào sidebar trong site của bạn cho nhanh gọn, bạn đặt đâu cũng được. Không cần chỉnh gì hết, nó tự động thu nhỏ cho vừa vùng chứa cho bạn.
<iframe style="height:420px;width:100%;border:0px;overflow:hidden;margin:0px;padding:0px;" src="http://bendoi.vn/tool/tygia/ngoai-te_vietcombank.php"></iframe>

Thứ Hai, 19 tháng 8, 2013

Sự kỳ diệu của Background linear-gradient & Background radial-gradient.


Background là thành phần trong css mà gần như ai thiết kế web cũng biết
Nói đến background là nghĩ ngay đến :
- Cách đơn giản nhất Background: #fff;
- Hoặc background:#ffcc00 url(link_img) repeat-x 0 50%; [#color] [link_img] [tính lặp] [vị trí]
Nếu bạn chưa rõ về kiểu viết thứ 2 ở trên thì xem lại bài về background trong phần tổng hợp css.

Tại bài này Tôi sẽ giới thiệu một số cách viết background phức tạp hơn. Đó là sự chuyển màu và các hướng chuyển màu mà trong css.
Cho tới thời điểm hiện nay, vẫn chưa có sự thống nhất chuẩn trong cách viết này, vì cách viết giống nhau không hẳn sẽ hiển thị giống nhau ở trình duyệt khác nhau, cách viết khác nhau có thể cho hiển thị như nhau dù cùng 1 trình duyệt. Tôi từng băn khoăn không biết mình nên viết theo kiểu nào để hiển thị được đúng nhất cho nhiều trình duyệt nhất và tôi đã giải quyết vấn đề này như sau, mời các bạn theo dõi.

Nói đến sự chuyển màu bạn sẽ thấy hiện nay có những loại chuyển màu sau:
- Linear Gradient : dạng đường thẳng.
- Ridial Gradient: dạng tròn.
Background linear-gradient, Background radial-gradient
Đối với loại hòa trộn màu theo dạng thẳng Linear Gradient
Phương màu sẽ được tạo ra từ điểm màu đầu tiên đến điểm màu cuối cùng, phương màu đi qua mổi điểm ảnh thì các điểm ảnh vuông góc với phương màu sẽ thay đổi một giá trị so với màu kế bên.
Cú pháp cơ bản:
Background: -[kiểu trình duyệt]-[tính lặp]-linear-gradient ([phương hướng màu], [màu 1] [vị trí màu 1],  [màu 2] [vị trí màu 2],  [màu 3] [vị trí màu 3],  [màu n] [vị trí màu n]);

- Kiểu trình duyệt: o, moz, webkit, ms.

- Tính lặp:
Giá trị: repeating có thể có hoặc không.

- Phương hướng màu gồm 2 loại:

+ Phương hướng cơ bản:
Có kiểu viết đầy đủ là [x_bắt_đầu  y_bắt_đầu], [x_kết_thúc  y_kết_thúc]
trong đó X là LEFT, RIGHT. Y là TOP, BOTTOM
ví dụ : LEFT TOP, RIGHT BOTTOM
Tuy nhiên nếu là phướng thẳng đứng (90deg) hoặc ngang (0deg) thì chỉ cần viết  y_kết_thúc

+  Phương hướng tùy chọn: viết cụ thể số góc mong muốn: ví dụ: 15deg, 30deg, 40deg, 50deg,...

- Màu:
Viết thieo kiển HEX (ví dụ: #ffcc00) hoặc RGB (ví dụ: rgb(0,100,255))

- Vị trí màu: giá trị từ điểm đầu tiên (0%) đến điểm cuối cùng (100%)

Tôi thấy cách viết đầy đủ nhất, tương thích với nhiều trình duyệt thì nên viết như sau:
background: #0B751D; /*phòng trường hợp xấu nhất*/
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0B751D, endColorstr=#1B8025);/* Internet Explorer 5.5 - 7 */
-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#0B751D, endColorstr=#1B8025)";    /* For Internet Explorer 8 */
background-image: -ms-linear-gradient(bottom, #0B751D 0%, #EBEBEB 52%, #1B8025 100%); /* Internet exlorer 9+ */
background-image: linear-gradient(bottom, #0B751D 0%, #EBEBEB 52%, #1B8025 100%); /*chuẩn chung*/
background-image: -o-linear-gradient(bottom, #0B751D 0%, #EBEBEB 52%, #1B8025 100%); /* opera */
background-image: -moz-linear-gradient(bottom, #0B751D 0%, #EBEBEB 52%, #1B8025 100%); /* mozilla firefox */
background-image: -webkit-linear-gradient(bottom, #0B751D 0%, #EBEBEB 52%, #1B8025 100%); /* Google Chrome,...*/
background-image: -webkit-gradient( linear, left bottom, left top, color-stop(0, #0B751D), color-stop(0.52, #EBEBEB), color-stop(1, #1B8025));
Kiểu hòa trộn màu dạng tròn Ridial Gradient
Background linear-gradient, Background radial-gradient
Cú pháp chung:
background-image: -[Kiểu trình duyệt]-[tính lặp]-radial-gradient([vị trí tâm], [hình dạng] [phạm vi], [màu 1]  [vị trí màu 1], [màu 2] [vị trí màu 2], [màu 3] [vị trí màu 3], [màu n] [vị trí màu n])

- Kiểu trình duyệt o, moz, webkit, ms

- Tính lặp
Giá trị: repeating có thể có hoặc không.

- Vị trí tâmVị trí tâm màu thứ 1 so với khung hình của DIV. Cú pháp [X] [Y]. Có 2 loại vị trí.
Vị trí cơ bản: Giá trị X là: LEFT, CENTER, RIGHT. Giá trị Y là: TOP, CENTER, BOTTOM.
Vị trí tùy chọn: Đơn vị là PX, EM, %. Ví dụ: 20px, 2em, 50%.
Do đó có thể viết: 20px center hoặc 50% 30% hoặc 50px 100px.

- Hình dạng
Chỉ có 2 giá trị: ellipse hoặc circle

- Phạm vi
Hiện nay có 6 loại giá trị mặc định sau:
closest side (bên gần nhất)
closest corner (góc gần nhất)
farthest side (phía xa nhất)
farthest corner (góc xa nhất)
contain (chứa)
cover (che)

- Màu:
Có 2 loại hệ màu: Màu loại RGR-A (ví dụ rgba(184, 138, 79, 0.4)) hoặc HEX (ví dụ: #ccdd00)
- Vị trí màu:
là vị trí từ tâm màu thứ nhất đến màu thứ n. Đơn vị là PX, EM, %

Ví dụ hoàn chỉnh:
background-color:rgba(255, 255, 255, 0.6);
background-image: -moz-radial-gradient(21% 44%, ellipse cover, rgba(255, 255, 255, 0.6), rgba(93, 153, 95, 0.4) -100%,rgba(184, 138, 79, 0.2) 100%);
background-image: -webkit-radial-gradient(21% 44%, ellipse cover, rgba(255, 255, 255, 0.6), rgba(93, 153, 95, 0.4) -100%,rgba(184, 138, 79, 0.2) 100%);
background-image: -o-radial-gradient(21% 44%, ellipse cover, rgba(255, 255, 255, 0.6), rgba(93, 153, 95, 0.4) -100%,rgba(184, 138, 79, 0.2) 100%);
background-image: -ms-radial-gradient(21% 44%, ellipse cover, rgba(255, 255, 255, 0.6), rgba(93, 153, 95, 0.4) -100%,rgba(184, 138, 79, 0.2) 100%);
background-image: radial-gradient(21% 44%, ellipse cover, rgba(255, 255, 255, 0.6), rgba(93, 153, 95, 0.4) -100%,rgba(184, 138, 79, 0.2) 100%)

Như vậy, tôi đã giới thiệu các bạn 2 kiểu trộn màu cơ bản nhất. Kỹ thuật này vẫn đang được phát triển nên các bạn có thể tham khảo các tài liệu phân tích về vấn đề này tại đây:



Bạn xem thêm vài ví dụ :...