Chèn ảnh làm background trong css | Mac Uzma

1) Thuộc tính background-image trong CSS

- Thuộc tính background-image dùng để thiết lập "hình nền" cho phần tử.

- Ví dụ:

Phần tử này có nền là hình các bông hoa

- Lưu ý: Đối với một phần tử HTML, phần diện tích được thiết lập hình nền sẽ bao gồm các thành phần:

  • border.
  • padding.
  • content.
  • (không bao gồm phần margin)

2) Cách sử dụng thuộc tính background-image trong CSS

- Để sử dụng thuộc tính background-image, ta dùng cú pháp như sau:

background-image: url(đường dẫn đến tập tin hình ảnh)|none|initial|inherit;

- Ta thấy giá trị của thuộc tính background-image có thể được xác định bởi một trong bốn loại:

url()

- Xác định đường dẫn đến một tập tin hình ảnh cụ thể mà bạn muốn dùng để làm hình nền cho phần tử.

(Đường dẫn ở đây có thể là đường dẫn tương đối hoặc đường dẫn tuyệt đối)

Xem ví dụ
none

- Xác định việc "không thiết lập hình nền cho phần tử"

- Giá trị này thường được sử dụng để ghi đè lên khi ban đầu phần tử đã được thiết lập hình nền.

Xem ví dụ
initial

- Sử dụng giá trị mặc định của nó.

(Mặc định thì phần tử không có hình nền, hay nói cách khác là trong suốt)

Xem ví dụ
inherit

- Kế thừa giá trị thuộc tính background-image từ phần tử cha của nó

Xem ví dụ

3) Một số kỹ thuật cần quan tâm

- Chúng ta có hai kỹ thuật dùng để thiết lập hình nền cho phần tử cần phải quan tâm:

  • Thứ nhất: Sử dụng nhiều hình ảnh để thiết lập hình nền cho phần tử.
  • Thứ hai: Hình nền kết hợp với màu nền.

3.1) Sử dụng nhiều hình ảnh để thiết lập hình nền cho phần tử

- Việc thiết lập hình nền cho phần tử không phải chỉ có thể sử dụng duy nhất một tấm hình, ta có thể dùng nhiều tấm hình bằng cách sử dụng nhiều giá trị url() (tấm hình nào được khai báo trước thì nó sẽ nằm đè lên tấm hình sau)


<!DOCTYPE html>
        <html>
        <head>
        <style type="text/css">
        body{
        background-image: url(../image/tree.png), url(../image/flower.gif);
    }
    </style>
    </head>
    <body>
    <h2>Tài liệu học Lập Trình Web</h2>
    </body>
</html>

Xem ví dụ

- Lưu ý: Việc sử dụng nhiều tấm hình để thiết lập hình nền cho phần tử chỉ thích hợp khi các tấm hình đó thuộc định dạng GIF hoặc PNG (loại hình ảnh mà có một số vị trí trong suốt). Nếu sử dụng loại hình không có phần trong suốt thì nó sẽ nằm đè hoàn toàn lên tấm hình bên dưới, khiến tấm hình bên dưới không được hiển thị.


<!DOCTYPE html>
        <html>
        <head>
        <style type="text/css">
        body{
        background-image: url(../image/pic1.jpg), url(../image/pic2.jpg);
    }
    </style>
    </head>
    <body>
    <h2>Tài liệu học Lập Trình Web</h2>
    </body>
</html>

Xem ví dụ

3.2) Hình nền kết hợp với màu nền

- Nếu bạn thiết lập hình nền cho phần tử bằng loại hình ảnh có một số vị trí trong suốt, thì khi đó bạn có thể sử dụng kết hợp với thuộc tính background-color để chèn màu nền vào những vị trí trong suốt, làm tăng tính sắc sảo cho nền của phần tử.


<!DOCTYPE html>
        <html>
        <head>
        <style type="text/css">
        div{
        border:1px solid gray;
        padding:180px 50px;
        font-size:30px;
        background-image:url(../image/flower.gif);
        background-color:#eee;
    }
    </style>
    </head>
    <body>
    <div>Tài liệu hướng dẫn học Lập Trình Web</div>
    </body>
</html>

Xem ví dụ

4) Giới thiệu sơ qua về "sự lặp lại của hình nền"

- Mặc định, hình nền sẽ xuất phát từ vị trí góc "phía trên - bên trái" của phần tử.

- Nếu hình ảnh dùng để làm hình nền cho phần tử có kích thước nhỏ hơn kích thước của phần tử thì hình nền sẽ tự động được lặp lại để lấp đầy diện tích của phần tử (Xem ví dụ)

- Chúng ta có thể thiết lập việc lặp lại của hình nền (lặp, không lặp, chỉ lặp theo chiều ngang, chỉ lặp theo chiều dọc, ...) bằng cách sử dụng thuộc tính background-repeat trong CSS.

Hình nền là gì !?

- Hình nền là hình nằm bên dưới phần tử (dùng để làm nền cho phần tử)

- Các nội dung của phần tử sẽ hiển thị đè lên hình nền.

- Ví dụ như phần tử này có hình nền là hai bố con nhà mèo đang ôm nhau ngủ.

1) Cách thiết lập hình nền cho phần tử

- Để thiết lập hình nền cho một phần tử thì chúng ta cần phải thiết lập thuộc tính background-image cho phần tử đó với cú pháp như sau:

background-image: value;

- Trong đó, value có thể được xác định dựa theo một trong bốn loại giá trị:

none

- Không thiết lập hình nền cho phần tử.

Xem ví dụ
url()

- Chỉ định một tập tin hình ảnh dùng làm hình nền cho phần tử.

(đường dẫn đến tập tin hình ảnh phải được đặt bên trong cặp dấu ngoặc)

Xem ví dụ
initial

- Sử dụng giá trị mặc định của nó.

(mặc định thì thuộc tính background-image có giá trị là none)

Xem ví dụ
inherit

- Kế thừa giá trị thuộc tính background-image từ phần tử cha của nó.

Xem ví dụ

- Lưu ý: Chúng ta có thể gán nhiều giá trị url() cho thuộc tính background-image để hòa trộn nhiều tập tin hình ảnh lại với nhau (Xem ví dụ)

- Tuy nhiên, việc sử dụng nhiều tấm hình để thiết lập hình nền cho phần tử chỉ thích hợp khi các tấm hình đó có định dạng là GIF hoặc PNG (loại hình ảnh có một số vị trí trong suốt). Nếu sử dụng loại hình không có phần trong suốt thì nó sẽ nằm "đè hoàn toàn" lên tấm hình bên dưới, khiến tấm hình bên dưới không được hiển thị (Xem ví dụ)

2) Điều chỉnh phạm vi được thiết lập hình nền

- Trong các bài học trước thì tôi đã có giới thiệu sơ qua với các bạn về cấu trúc của một phần tử HTML rồi, nó bao gồm bốn thành phần chính: margin border padding content

- Khi chúng ta sử dụng thuộc tính background-image để thiết lập hình nền cho phần tử thì mặc định phạm vi được thiết lập hình nền sẽ bắt đầu từ phần border cho đến hết phần content

- Tuy nhiên, với việc sử dụng thuộc tính background-clip thì chúng ta có thể điều chỉnh lại phạm vi được thiết lập hình nền của phần tử.

background-clip: value;

- Trong đó, value có thể được xác định dựa theo một trong các giá trị sau đây:

border-box

- Phạm vi được thiết lập hình nền sẽ bao gồm ba phần:

  • border
  • padding
  • content
Xem ví dụ
padding-box

- Phạm vi được thiết lập hình nền sẽ bao gồm hai phần:

  • padding
  • content
content-box

- Phạm vi được thiết lập hình nền chỉ bao gồm phần: content

initial

- Sử dụng giá trị mặc định của nó.

(mặc định thì thuộc tính background-clip có giá trị là border-box)

inherit

- Kế thừa giá trị thuộc tính background-clip từ phần tử cha của nó.

3) Tùy chỉnh cách thức "lặp lại" của hình nền

- Khi chúng ta thiết lập hình nền cho một phần tử, nếu tấm hình được dùng làm hình nền có kích thước nhỏ hơn kích thước của phần tử thì mặc định tấm hình sẽ "tự động lặp lại" để lấp đầy phần tử.

- Tuy nhiên, với việc sử dụng thuộc tính background-repeat thì chúng ta có thể tùy chỉnh việc lặp lại của hình nền (chẳng hạn như chỉ lặp lại theo chiều ngang, chiều dọc, hoặc không lặp lại, . . . .)

background-repeat: value;

- Trong đó, value có thể được xác định dựa theo một trong sáu loại giá trị:

repeat

- Tấm hình lặp lại theo chiều ngang lẫn chiều dọc.

Xem ví dụ
repeat-x

- Tấm hình chỉ lặp lại theo chiều ngang.

repeat-y

- Tấm hình chỉ lặp lại theo chiều dọc.

no-repeat

- Tấm hình không lặp lại.

initial

- Sử dụng giá trị mặc định của nó.

(mặc định thì thuộc tính background-repeat có giá trị là repeat)

inherit

- Kế thừa giá trị thuộc tính background-repeat từ phần tử cha của nó.

4) Thay đổi "vị trí gốc" trong việc thiết lập hình nền

- Vị trí gốc là vị trí xuất hiện của tấm hình gốc (tấm hình gốc là tấm hình được dùng làm tâm điểm trong việc lặp lại của hình nền, nó cũng chính là hình nền khi chúng ta chỉnh chế độ không lặp lại)

- Mặc định thì vị trí gốc sẽ nằm ở ngay góc phía trên bên trái của phần padding, tuy nhiên chúng ta có thể thay đổi bằng cách sử dụng thuộc tính background-origin với cú pháp như sau:

background-origin: value;

- Trong đó, value có thể được xác định dựa theo một trong năm loại giá trị:

border-box

- Vị trí gốc sẽ nằm ở góc phía trên bên trái của phần border.

Xem ví dụ
padding-box

- Vị trí gốc sẽ nằm ở góc phía trên bên trái của phần padding.

content-box

- Vị trí gốc sẽ nằm ở góc phía trên bên trái của phần content.

initial

- Sử dụng giá trị mặc định của nó.

(mặc định thì background-origin có giá trị là padding-box)

inherit

- Kế thừa giá trị thuộc tính background-origin từ phần tử cha của nó

5) Thiết lập vị trí của hình nền

- Khi chúng ta thiết lập hình nền cho một phần tử, mặc định hình nền sẽ nằm ở ngay vị trí gốc. Nếu muốn thiết lập lại vị trí cho hình nền thì chúng ta cần phải sử dụng thuộc tính background-position với cú pháp như sau:

background-position: value;

- Trong đó, value có thể được xác định dựa theo một các loại giá trị sau đây:

X Y

- X là vị trí của hình nền "xét theo chiều ngang", nó có thể được xác định dựa theo một trong các loại giá trị như sau:

Tên vị trí :

left center right

Npx :

Hình nền nằm cách vị trí gốc một khoảng N pixel.

N% :

Hình nền nằm cách vị trí gốc một khoảng N %.

- Y là vị trí của hình nền "xét theo chiều dọc", nó có thể được xác định dựa theo một trong các loại giá trị như sau:

Tên vị trí :

top center bottom

Npx :

Hình nền nằm cách vị trí gốc một khoảng N pixel.

N% :

Hình nền nằm cách vị trí gốc một khoảng N %.

- Lưu ý: Đối với loại giá trị X Y, nếu chúng ta chỉ xác định một tham số thì tham số đó chính là X, tham số Y sẽ mặc định là center.

Xem ví dụ
initial

- Sử dụng giá trị mặc định của nó.

inherit

- Kế thừa giá trị thuộc tính background-position từ phần tử cha của nó.

6) Chỉnh kích thước của hình nền

- Khi chúng ta thiết lập hình nền cho một phần tử thì mặc định hình nền sẽ có kích thước bằng với kích thước của tấm hình được dùng làm hình nền (Xem ví dụ). Nếu muốn thiết lập lại kích thước cho hình nền thì chúng ta cần phải sử dụng thuộc tính background-size với cú pháp như sau:

background-size: value;

- Trong đó, value có thể được xác định dựa theo một các loại giá trị bên dưới:

width height

- width là chiều rộng của hình nền, nó có thể được xác định dựa theo một trong các loại giá trị như sau:

auto :

- Chiều rộng của hình nền sẽ tự động được xác định dựa theo chiều cao của hình nền (với điều kiện là tỷ lệ chiều rộng/cao của hình nền phải bằng với tỷ lệ chiều rộng/cao của tấm hình được sử dụng làm hình nền)

Npx :

- Hình nền sẽ có chiều rộng là N pixel.

N% :

- Hình nền sẽ có chiều rộng bằng N % chiều rộng của vùng được dùng để thiết lập vị trí gốc.

- height là chiều cao của hình nền, nó có thể được xác định dựa theo một trong các loại giá trị như sau:

auto :

- Chiều cao của hình nền sẽ tự động được xác định dựa theo chiều rộng của hình nền (với điều kiện là tỷ lệ chiều rộng/cao của hình nền phải bằng với tỷ lệ chiều rộng/cao của tấm hình được sử dụng làm hình nền)

Npx :

- Hình nền sẽ có chiều cao là N pixel.

N% :

- Hình nền sẽ có chiều cao bằng N % chiều cao của vùng được dùng để thiết lập vị trí gốc.

- Lưu ý: Đối với loại giá trị width height, nếu chúng ta chỉ xác định một tham số thì tham số đó chính là width, tham số height sẽ mặc định là auto.

Xem ví dụ
cover

- Hình nền sẽ tự động được phóng to ra hoặc thu nhỏ lại để lấp đầy vùng được dùng để thiết lập vị trí gốc. Tuy nhiên, nếu gặp phải trường hợp tỷ lệ chiều rộng/cao của phần tử khác với tỷ lệ chiều rộng/cao của tấm hình được dùng làm hình nền thì sẽ xảy ra tình trạng hình nền bị tràn ra khỏi vùng được dùng để thiết lập vị trí gốc, dẫn đến việc hình nền hiển thị không trọn vẹn (nó sẽ bị cắt xén phía dưới hoặc bên phải)

Xem ví dụ
contain

- Hình nền sẽ tự động phóng to ra hoặc thu nhỏ lại sao cho nó được hiển thị trọn vẹn (không bị cắt xén) với kích thước lớn nhất có thể bên trong vùng được dùng để thiết lập vị trí gốc.

Xem ví dụ
initial

- Sử dụng giá trị mặc định của nó.

(mặc định thì thuộc tính background-size có giá trị là auto)

inherit

- Kế thừa giá trị thuộc tính background-size từ phần tử cha của nó.

7) Tùy chỉnh cách thức hiển thị của hình nền

- Thông thường thì hình nền có hai cách thức hiển thị cơ bản:

  • Cách 1: Nó sẽ bị cuốn đi khi người dùng kéo thanh scroll (Xem ví dụ)
  • Cách 2: Nó sẽ nằm ở một vị trí cố định trên màn hình trình duyệt (Xem ví dụ)

- Mặc định thì hình nền sẽ bị cuốn đi khi người dùng kéo thanh scroll, nếu muốn thiết lập lại cách thức hiển thị của hình nền thì chúng ta phải sử dụng thuộc tính background-attachment với cú pháp như sau:

background-attachment: value

- Trong đó, value có thể được xác định dựa theo một trong năm loại giá trị:

scroll

- Hình nền sẽ bị cuốn đi khi người dùng kéo thanh scroll.

Xem ví dụ

- Tuy nhiên, nếu hình nền được thiết lập cho một phần tử nằm ở bên trong <body> và phần tử đó có chứa thanh scroll thì hình nền sẽ nằm ở một vị trí cố định bên trong phần tử đó.

Xem ví dụ
local

- Hình nền sẽ bị cuốn đi khi người dùng kéo thanh scroll.

Xem ví dụ
fixed

- Hình nền sẽ nằm ở một vị trí cố định trên màn hình trình duyệt.

- Lưu ý: Mặc định thì nó sẽ nằm ở góc phía trên bên trái của phần tử <body>, nếu các bạn muốn thiết lập lại vị trí cho hình nền thì các bạn cần phải sử dụng kết hợp với thuộc tính background-position.

Xem ví dụ
initial

- Sử dụng giá trị mặc định của nó.

(mặc định thì thuộc tính background-attachment có giá trị là scroll)

inherit

- Kế thừa giá trị thuộc tính background-attachment từ phần tử cha của nó.