CĂN BẢN
CSS3
CSS RESPONSIVE
CSS PARALLAX
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Học CSS3 - Gradient Background

Trong bài này chúng ta sẽ tìm hiểu về Gradients trong CSS3, đây là những thuộc tính giúp tạo ra những giao diện có background mờ nhạt mà trước giờ chỉ có các phần mềm như photoshop là làm được.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Với Photoshop bạn có thể tạo một hình ảnh với nhiều màu sắc và chúng trộn lẫn với nhau nhìn rất bắt mắt như hình dưới đây.

hoc gradient css3 png

Thì bạn hoàn toàn có thể làm điều này trong CSS3, bằng cách sử dụng thuộc tính background kêt hợp với giá trị Gradient.

Bài viết này được đăng tại [free tuts .net]

Trong CSS3 hỗ trợ hai loại Gradient:

  • Linear Gradients (Kéo theo các vị trí lên, xuống, trái, phải, đường chéo)
  • Radial Gradients (Kéo tại vị trí do lập trình viên chọn và lan tỏa ra tứ phía theo một hình nào đó (ví dụ ellipse))

1. Linear Gradients trong CSS3

Cú pháp:

background : linear-gradient(direction, color1, color2, color3, color4, ...)

Trong đó direction gồm các giá trị:

  • Giá trị đơn to top hoặc to left hoặc to right hoặc to bottom thì nó sẽ kéo theo cạnh đối diện
  • Giá trị đôi (to top left) hoặc (to left right) nếu bạn muốn chỉ rõ kéo từ cạnh nào sang cạnh nào (tức là đường chéo)

Nếu ta không truyền direction thì theo mặc định nó sẽ có giá trị top (tức là top - bottom)

Tương tự chúng ta có code Hack CSS như sau:

background: -webkit-linear-gradient(direction, color1, color2, color3, color4, ...); /* For Safari 5.1 to 6.0 */
background: -o-linear-gradient(direction, color1, color2, color3, color4, ...); /* For Opera 11.1 to 12.0 */
background: -moz-linear-gradient(direction, color1, color2, color3, color4, ...); /* For Firefox 3.6 to 15 */

Có một lưu ý là đối với code Hack CSS thì direction không có chữ to.

Ví dụ RUN
div{
    float : left;
    width: 200px;
    height: 100px;
    margin: 10px;
}
#div1{
    background : linear-gradient(red, yellow);
}
#div2{
    background : linear-gradient(to left, red, yellow);
    background : -moz-linear-gradient(left, red, yellow);
    background : -webkit-linear-gradient(left, red, yellow);
    background : -o-linear-gradient(left, red, yellow);
}
#div3{
    background : linear-gradient(to right, red, yellow);
    background : -moz-linear-gradient(right, red, yellow);
    background : -webkit-linear-gradient(right, red, yellow);
    background : -o-linear-gradient(right, red, yellow);
}
#div4{
    background : linear-gradient(to bottom left, red, yellow);
    background : -moz-linear-gradient(bottom left, red, yellow);
    background : -webkit-linear-gradient(bottom left, red, yellow);
    background : -o-linear-gradient(bottom left, red, yellow);
}

Kết quả:

gradient linear example png

Sử dụng Angles

Bạn có thêm sự lựa chọn đó là sử dụng góc thay vì xác định hướng (to left, to right ...) bằng cách sử dụng cú pháp sau:

background: linear-gradient(angle, color-stop1, color-stop2);

Trong đó Angle là góc xá định giữa đường ngang và đường Gradient đi ngược chiều của kim đồng hồ. Hay nói cách khác 0deg sẽ tạo bottom to top Gradient, 90deg sẽ tạo left to right Gradient.

Ví dụ RUN
div{
    float : left;
    width: 200px;
    height: 100px;
    margin: 10px;
}
#div1{
    background : linear-gradient(0deg, red, yellow);
    background : -moz-linear-gradient(0deg, red, yellow);
    background : -webkit-linear-gradient(0deg, red, yellow);
    background : -o-linear-gradient(0deg, red, yellow);
}
#div2{
    background : linear-gradient(90deg, red, yellow);
    background : -moz-linear-gradient(90deg, red, yellow);
    background : -webkit-linear-gradient(90deg, red, yellow);
    background : -o-linear-gradient(90deg, red, yellow);
}
#div3{
    background : linear-gradient(180deg, red, yellow);
    background : -moz-linear-gradient(180deg, red, yellow);
    background : -webkit-linear-gradient(180deg, red, yellow);
    background : -o-linear-gradient(180deg, red, yellow);
}
#div4{
    background : linear-gradient(360deg, red, yellow);
    background : -moz-linear-gradient(360deg, red, yellow);
    background : -webkit-linear-gradient(360deg, red, yellow);
    background : -o-linear-gradient(360deg, red, yellow);
}

Kết quả:

gradient engles example png

Sử dụng nhiều màu

Nếu bạn muốn trộn nhiều màu với nhau thì chỉ việc bổ sung màu vào thuộc tính Gradient, nhưng bạn phải lưu ý rằng thứ tự màu phải được sắp xếp cho đúng nhé.

Ví dụ RUN
div{
    float : left;
    width: 300px;
    height: 200px;
    margin: 10px;
    background : linear-gradient(to bottom, red, yellow, pink, blue, green);
    background : -moz-linear-gradient(bottom, red, yellow, pink, blue, green);
    background : -webkit-linear-gradient(bottom, red, yellow, pink, blue, green);
    background : -o-linear-gradient(bottom, red, yellow, pink, blue, green);
}

Kết quả:

gradient multiple png

Sử dụng Transparency

Ở bài tìm hiểu Color trong CSS3 chúng ta đã học cách sử dụng HSLA Color hoặc RGBA Color để tạo độ trong suốt, vậy thì chúng ta cũng có thể kết hợp nó trong Gradient để tạo độ trong suốt.

Ví dụ RUN
div{
    float : left;
    width: 300px;
    height: 200px;
    margin: 10px;
    background : linear-gradient(to bottom, rgba(255,0,0,0.5), blue);
    background : -moz-linear-gradient(bottom, rgba(255,0,0,0.5), blue);
    background : -webkit-linear-gradient(bottom, rgba(255,0,0,0.5), blue);
    background : -o-linear-gradient(bottom, rgba(255,0,0,0.5), blue);
}

Kết quả:

transparency gradient png

Lặp - repeating-linear-gradient

Bạn thấy dù chiều cao và chiều rộng của đối tượng HTML bao nhiêu đi nữa thì nó vẫn phủ đầy, nhưng giả sử giờ mình muốn nó chỉ chiếm một khoảng nào đó và lặp tiếp tục lặp lại thì ta dùng thuộc tính repeating-linear-gradient.

Ví dụ RUN
div{
    float : left;
    width: 300px;
    height: 200px;
    margin: 10px;
    background : repeating-linear-gradient(to bottom, red 10%, blue 20%);
    background : -moz-repeating-linear-gradient(bottom, red 10%, blue 20%);
    background : -webkit-repeating-linear-gradient(bottom, red 10%, blue 20%);
    background : -o-repeating-linear-gradient(bottom, red 10%, blue 20%);
}

Kết quả:

repeating gradient png

2. Radial Gradients trong CSS3

Radial Gradient dùng để tạo hiệu ứng tại vị trí nào đó (do lập trình viên chọn) và lan tỏa ra tứ phía, và để có được hiệu ứng thì chắc chắn ban phải sử dụng ít nhất hai màu sắc khác nhau.

Cú pháp:

background: radial-gradient(shape size at position, start-color, ..., last-color);

Trong đó Shape mặc định là hình Ellipse, size là farthest-corner và position là center.

Code Hack CSS:

background: -moz-radial-gradient(shape, position, size, start-color, ..., last-color);
background: -webkit-radial-gradient(shape, position, size, start-color, ..., last-color);
background: -o-radial-gradient(shape, position, size, start-color, ..., last-color);

Lưu ý: Phải sử dụng đúng cấu trúc cú pháp trên

Phân chia khoảng màu đồng đều

Theo mặc định thì các màu sẽ được chia một khoảng không gian bằng nhau.

Ví dụ RUN
div{
    float : left;
    width: 300px;
    height: 200px;
    margin: 10px;
    background : radial-gradient(red, blue, pink);
    background : -moz-radial-gradient(red, blue, pink);
    background : -webkit-radial-gradient(red, blue, pink);
    background : -o-radial-gradient(red, blue, pink);
}

Kết quả:

radial gradient png

Tùy chọn khoảng màu:

Nếu bạn muốn thiết lập mỗi màu sắc chiếm một khoảng bao nhiêu đó thì thêm số phần trăm (%) đằng sau màu đó (khoảng cách tính từ vị trí trung tâm, nghĩa là màu sau phải lớn hơn màu trước).

Ví dụ RUN
div{
    float : left;
    width: 300px;
    height: 200px;
    margin: 10px;
    background : radial-gradient(red 10%, blue 60%, pink 90%);
    background : -moz-radial-gradient(red 10%, blue 60%, pink 90%);
    background : -webkit-radial-gradient(red 10%, blue 60%, pink 90%);
    background : -o-radial-gradient(red 10%, blue 60%, pink 90%);
}

Kết quả:

radial gradient 1 png

Tùy chọn Shape:

Mặc đình là ellipse nhưng bạn có thể thay thế bằng circle.

Ví dụ RUN
div{
    float : left;
    width: 300px;
    height: 200px;
    margin: 10px;
    background : radial-gradient(circle, red 10%, blue 90%);
    background : -moz-radial-gradient(circle, red 10%, blue 90%);
    background : -webkit-radial-gradient(circle, red 10%, blue 90%);
    background : -o-radial-gradient(circle, red 10%, blue 90%);
}

Kết quả:

radial gradient 3 png

Tùy chọn Size

Chúng ta có bốn giá trị sau:

  • closest-side
  • farthest-side
  • closest-corner
  • farthest-corner

Mặc định nếu không chọn size thì nó sẽ lấy farthest-side.

Ví dụ RUN
div{
    float : left;
    width: 200px;
    height: 200px;
    margin: 10px;
    color: #fff;
}
#div1{
    background : radial-gradient(circle closest-side, red, blue);
    background : -moz-radial-gradient(circle, closest-side, red, blue);
    background : -webkit-radial-gradient(circle, closest-side, red, blue);
    background : -o-radial-gradient(circle, closest-side, red, blue);
}
#div2{
    background : radial-gradient(circle farthest-side, red, blue);
    background : -moz-radial-gradient(circle, farthest-side, red, blue);
    background : -webkit-radial-gradient(circle, farthest-side, red, blue);
    background : -o-radial-gradient(circle, farthest-side, red, blue);
}
#div3{
    background : radial-gradient(circle closest-corner, red, blue);
    background : -moz-radial-gradient(circle, closest-corner, red, blue);
    background : -webkit-radial-gradient(circle, closest-corner, red, blue);
    background : -o-radial-gradient(circle, closest-corner, red, blue);
}
#div4{
    background : radial-gradient(circle farthest-corner, red, blue);
    background : -moz-radial-gradient(circle, farthest-corner, red, blue);
    background : -webkit-radial-gradient(circle, farthest-corner, red, blue);
    background : -o-radial-gradient(circle, farthest-corner, red, blue);
}

Kết quả:

radial gradient size png

Tùy chọn Position

Nếu bạn muốn vị trí trung tâm không nằm ở giữa nữa thì có thể chọn một vị trí bất kì bằng cách nhập khoảng cách so với lề trái và lề trên, đơn vị của nó có thể là % hoặc px.

Ví dụ RUN
div{
    float : left;
    width: 300px;
    height: 200px;
    margin: 10px;
    background : -moz-radial-gradient(circle, 100px 200px, farthest-side, red 10%, blue 90%);
    background : -webkit-radial-gradient(circle, 100px 200px, farthest-side, red 10%, blue 90%);
    background : -o-radial-gradient(circle, 100px 200px, farthest-side, red 10%, blue 90%);
    background : radial-gradient(circle farthest-side at 100px 200px, red 10%, blue 90%);
}

Kết quả:

position radial gradient png

Lặp - repeating-radial-gradient

Tương tự như Linear Gradient bạn có thể repeat Radial Gradient bằng cách sử dụng thuộc tính repeating-radial-gradient.

Ví dụ RUN
div{
    float : left;
    width: 200px;
    height: 200px;
    margin: 10px;
    color: #fff;
    background : repeating-radial-gradient(circle closest-side, red 10%, blue 20%);
    background : -moz-repeating-radial-gradient(circle, closest-side, red 10%, blue 20%);
    background : -webkit-repeating-radial-gradient(circle, closest-side, red 10%, blue 20%);
    background : -o-repeating-radial-gradient(circle, closest-side, red 10%, blue 20%);
}

Kết quả:

repeating radial gradient png

3. Lời kết

Gradient trong CSS3 quả nhiên lợi hại phải không các bạn, ban đầu mình cũng không thể tưởng tượng được CSS lại có thể làm được những tấm hình như vậy nhưng khi nghiên cứu mới thực sự tin.

Bài này rất đơn giản nên bạn phải vận dụng thêm các thuộc tính khác nữa mới có thể tạo những hiệu ứng độc và đẹp mắt

Cùng chuyên mục:

Tạo Trang web E-commerce  từ HTML & CSS

Tạo Trang web E-commerce từ HTML & CSS

Validate form bằng HTML5

Validate form bằng HTML5

Trước đây chúng ta hay validate form bằng Javascript, nhưng ...

Thẻ aside trong HTML5

Thẻ aside trong HTML5

Mình cũng không rõ người ta tạo ra thẻ này làm gì, nhưng nếu xét…

Thẻ hgroup trong HTML5

Thẻ hgroup trong HTML5

hgroup là một thẻ được thêm vào kể từ phiên bản ...

Thẻ header trong HTML5

Thẻ header trong HTML5

Nếu nhìn qua một trang web được xây dựng bằng HTML5 thì bạn ...

Các thẻ HTML tạo form thu thập dữ liệu

Các thẻ HTML tạo form thu thập dữ liệu

Trước khi bắt đầu thì bạn phải hiểu khái niệm form dữ liệu là ...

Tạo background và đường viền cho thẻ HTML

Tạo background và đường viền cho thẻ HTML

Để tạo màu nền cho một thẻ HTML bất kì thì ta sử dụng thuộc…

Tạo menu một cấp bằng HTML đơn giản

Tạo menu một cấp bằng HTML đơn giản

Để làm menu 1 cấp thì có rất nhiều giải pháp. Bạn có thể sử…

Tạo HTML danh sách bài viết đơn giản

Tạo HTML danh sách bài viết đơn giản

Mục đích mình đưa ra bài tập này là giúp các bạn hiểu được cách…

Tạo bổ cục layout HTML đơn giản

Tạo bổ cục layout HTML đơn giản

Qua bài học này bạn sẽ biết cách tạo một file style riêng để ..

Phân biệt ID và Class trong HTML

Phân biệt ID và Class trong HTML

Mỗi thẻ HTML đều có những thuộc tính riêng và khác nhau. Tuy nhiền ..

Cách dùng thẻ div trong HTML để tạo các khối giao diện

Cách dùng thẻ div trong HTML để tạo các khối giao diện

Thẻ div đóng vai trò rất quan trọng, nó được dùng để tạo ...

Phân biệt thẻ HTML Block và Inline

Phân biệt thẻ HTML Block và Inline

Có bao giờ bạn thắc mắc rằng, tại sao nội dung ...

Thuộc tính style trong HTML

Thuộc tính style trong HTML

Do chúng ta chưa học CSS nên mình sẽ không nói ...

Thẻ title trong HTML

Thẻ title trong HTML

Cách sử dụng thẻ title html ...

Thẻ style trong HTML

Thẻ style trong HTML

Style là một thẻ HTML bình thường, nó có công dụng là xác ...

Thẻ base trong HTML

Thẻ base trong HTML

Cách sử dụng thẻ base trong html ...

Thẻ link trong HTML

Thẻ link trong HTML

Cách sử dụng thẻ html ...

Thẻ meta trong HTML

Thẻ meta trong HTML

Cách sử dụng thẻ meta html ...

Thẻ script trong HTML

Thẻ script trong HTML

Cách sử dụng thẻ script html ...

Top