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 - Border Image - Tạo đường viền bằng hình

Có một số đường viền mang những hoa văn rất đẹp mà ta không thể sử dụng thuộc tính border trong CSS để tạo được. Trường hợp trong CSS thường ta phải tạo bốn thẻ HTML và thiết lập background và cho nó repeat-x để giả đường viền. Nhưng đến với CSS3 thì bạn không cần sử dụng background nữa mà sẽ sử dụng thuộc tính border-image.

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.

1. Border Image trong CSS3

Với thuộc tính border-image trong CSS3 bạn có thể thiết lập hình ảnh làm đường viền cho thẻ HTML.

Thuộc tính này hỗ trợ ở các trình duyệt:

  • IE > 11.0
  • Chrome > 16.0
  • Firefox > 15.5
  • Safary > 6.0
  • Opera > 15.0

Lưu ý: Chiều cao của đường viền phụ thuộc vào chiều cao của thuộc tính border nên bạn phải tạo border thì mới sử dụng được border-image.

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

Cú pháp: border-image: url(border-image.png) 25 repeat;

Trong đó:

  • url(border-image.png) (SOURCE) là đường dẫn đến file hình ảnh
  • 25 (OFFSET) đây là kiểu ghi tắt của thuộc tính offset, nếu ghi đầy đủ sẽ là 25 25 25 25 tương ứng với: lề trên, lề phải, lề dưới và lề trái.
  • repeat (REPEAT) cách sử dụng các phần hình ảnh đã cắt đó.

Code Hack CSS cho các trình duyệt:

  • -webkit-border-image đối với Chrome và Safary.
  • -moz-border-image đối với Firefox.
  • -o-border-image đối với Opera.

Chi tiết các thành phần như sau:

SOURCE

Là đường dẫn đến file hình ảnh dùng để làm border.

OFFSET

Để cho border được đẹp thì bạn phải tính chuẩn xác từng pixel cho hình ảnh để kết hợp với border-width và giá trị OFFSET.

Offset chính là khoảng cách tính từ ngoài biên đi vào trong hình ảnh sẽ được lấy để làm border.

Thuộc tính offset gồm có bốn cạnh như hình sau:

border image png

Giá trị OFFSET tuân theo quy tắc rút gọn trong CSS như sau:

  • Nếu có 4 giá trị (25 25 25 25) thì tương đương với (cạnh trên, cạnh phải, cạnh dưới, cạnh trái).
  • Nếu có 3 giá trị (25 25 25) thì tương đương với (cạnh trên, cạnh trái + phải, cạnh dưới)
  • Nếu có 2 giá trị (25 25) thì tương đương với (cạnh trên + dưới, cạnh trái + phải)
  • Nếu có 1 giá trị (25) thì tương đương với (cạnh trên + dưới + trái + phải)

Như vậy với bốn đường thẳng kéo dài của bốn cạnh của bốn OFFSET sẽ tạo thành 9 phần như sau (hình ảnh này mình cố tình kéo dài khoảng cách cho hai cạnh hai bên để dễ đánh dấu từng phần):

offset border image png

Lúc này ta chú ý các phần (1, 3, 7, 9) chính là phần border cho bốn góc và nó cố định, phần 5 sẽ là vị trí trung tâm và những phần còn lại sẽ bị ảnh hưởng bởi thuộc tính REPEAT.

REPEAT

Chúng ta có các giá trị thường sử dụng sau:

  • stretch
  • repeat
  • round

Note: Các giá trị này đều chỉ có tác dụng với các phần 2, 6, 8, 4.

Stretch: kéo giãn hình ảnh cho tương thích với chiều rộng của các cạnh.

Ví dụ RUN
div{
    width: 108px;
    height: 108px;
    border-style: solid;
    border-width: 27px;
    border-image: url(https://freetuts.net/upload/tut_post/images/2015/10/23/477/border.png)  27 stretch;
    -webkit-border-image: url(https://freetuts.net/upload/tut_post/images/2015/10/23/477/border.png)  27 stretch;
    -moz-border-image: url(https://freetuts.net/upload/tut_post/images/2015/10/23/477/border.png) 27 stretch;
    -o-border-image: url(https://freetuts.net/upload/tut_post/images/2015/10/23/477/border.png) 27 stretch;
}

Kết quả:

stretch border image png

Repeat: lặp lại hình ảnh cho các cạnh (lưu ý là nó sẽ lặp từ giữa đi ra hai phía).

Vi dụ RUN
div{
    width: 108px;
    height: 108px;
    border-style: solid;
    border-width: 27px;
    border-image: url(https://freetuts.net/upload/tut_post/images/2015/10/23/477/border.png) 27 repeat;
    -webkit-border-image: url(https://freetuts.net/upload/tut_post/images/2015/10/23/477/border.png) 27 repeat;
    -moz-border-image: url(https://freetuts.net/upload/tut_post/images/2015/10/23/477/border.png) 27 repeat;
    -o-border-image: url(https://freetuts.net/upload/tut_post/images/2015/10/23/477/border.png) 27 repeat;
}

Kết quả:

repeat border image 1 png

Round: Lặp lại hình ảnh cho các cạnh nhưng nó sẽ fit lần lặp theo tỉ lệ phần trăm, nghĩa là nó sẽ co giãn sao cho lặp vừa khít với kích thước màn h. Chính vì vậy nếu ta chọn OFFSET chuẩnchọn chế độ round thì sẽ đẹp, tuy nhiên backgroud sẽ bị co giãn nếu chiều rộng không tương thích với hình ảnh.

Ví dụ RUN
div{
    width: 70px;
    height: 108px;
    border-style: solid;
    border-width: 27px;
    border-image: url(https://freetuts.net/upload/tut_post/images/2015/10/23/477/border.png) 27 round;
    -webkit-border-image: url(https://freetuts.net/upload/tut_post/images/2015/10/23/477/border.png) 27 round;
    -moz-border-image: url(https://freetuts.net/upload/tut_post/images/2015/10/23/477/border.png) 27 round;
    -o-border-image: url(https://freetuts.net/upload/tut_post/images/2015/10/23/477/border.png) 27 round;
}

round border image png

Lưu ý: Giá trị của repeat có thể chia làm hai phần đó là VerticalHorizontal.

Ví dụ
border-image: url(https://freetuts.net/upload/tut_post/images/2015/10/23/477/border.png) 27 round repeat;

Trong đó roundVerticalrepeatHorizontal.

2. Lời kết

Đáng lẽ mình sẽ đưa ra nhiều ví dụ nữa nhưng mình sẽ để dành nó ở một bài thực hành khác, quan trọng ở bài này là bạn hiểu bản chất của nó và sử dụng đúng theo hình ảnh giao diện.

Như vậy là mình đã giới thiệu xong cách sử dụng thuộc tính border-image trong CSS3, đây quả thật là một bài viết khá nhức đầu và nó mất khá nhiều thời gian biên soạn của mình, hy vọng các bạn hiểu.

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