Margin trong css là gì

Xin chào mọi người, bài học hôm nay chúng ta hãy bắt tay cùng nhau tìm hiểu về cách sử dụng css margins nhé. Thuộc tính CSS Margin được sử dụng để tạo ra không gian xung quanh các phần tử. Các thuộc tính Margin dùng để thiết lập kích thước của không gian trắng bên ngoài đường viền.

Với CSS, bạn có quyền kiểm soát các margin. Có các thuộc tính CSS để thiết lập lề cho mỗi bên của một phần tử.

Các thuộc tính của Margin

CSS có các thuộc tính để xác định lề cho mỗi cạnh của một phần tử:

  • margin-top
  • margin-right
  • margin-bottom
  • margin-left

Tất cả các thuộc tính căn lề có các giá trị sau:

  • auto – trình duyệt tự căn lề
  • length – căn lề bằng px, pt, cm, v.v …
  • % – căn lề theo % chiều rộng của các phần tử bên trong
  • inherit – căn lề dựa vào thuộc tính của phần tử trước đó

Lưu ý: giá trị  của margin có thể là số âm.

Ví dụ về sử dụng thuộc tính margins:

h3 {
    margin-top: 200px;
    margin-bottom: 110px;
    margin-right: 130px;
    margin-left: 90px;
}

Ở ví dụ trên thẻ h3 sẽ được căn lề với thứ tự trên, dưới, phải, trái cùng với các giá trị sau: 200px,110px,130px và 90px.

Margin còn có cách viết gọn.

Cú pháp:

selecter{
    margin : giá trị;
}

Ví dụ:

p{
  margin:10px 20px 50px 75px;
}

Sau đây mình sẽ giải thích về cách hoạt động của  ví dụ trên.

p{margin:10px 20px 50px 75px;}

các giá trị lần lượt sẽ là:

  • căn lề trên là 10px
  • căn lề phải là 20px
  • căn lề dưới là 50px
  • căn lề trái là 75px

Bên cách đó còn các trường hợp đặc biệt như:

margin: 10px 20px 50px;

Như ở trên thì các giá trị sẽ là:

  • căn lề trên là 10px
  • căn lề trái, phải là 20px
  • căn lề dưới là 50px

margin: 10px 20px;

Như ở trên thì các giá trị sẽ là:

  • căn lề trên, dưới là 10px
  • căn lề trái, phải là 20px

Còn thuộc tính margin với một giá trị thì ta có thể hiểu là căn tất cả lề trên, dưới, trái, phải, với cùng một giá trị.

Margin với giá trị auto và inherit

Giá trị là auto

Bạn có thể dùng thuộc tính margin tự động để căn giữa các phần tử bên trong. Chiều rộng của phần tử này đã được chỉ định cùng khoảng trống còn lại sẽ được phân chia bằng nhau giữa lề trái và lề phải:

div {
    width: 500px;
    margin: auto;
    border: 1px solid green;
}

Giá trị inherit

Ví dụ sau đây cho phép lề trái được sử dụng thuộc tính phần tử bên ngoài của nó:

div.a {
    border: 1px solid green;
    margin-left: 120px;
}
p.b {
    margin-left: inherit;
}

Bạn có thể tham khảo 1 số kiến thức khác:

CSS Layout – Overflow

CSS Box Sizing

CSS Buttons

Cú pháp Css và Selectors

Lời kết

Ở trên là tất cả kiến thức về cách sử dụng của CSS margins. Và đến đây bài viết của mình cũng kết thúc rồi xin chào tất cả mọi người. Hẹn mọi người trong các bài tới nha chúc các bạn có một ngày làm việc và học tập thật tốt.

Trong CSS, Thuộc tính margin được sử dụng để tạo ra khoảng không gian trống (space) xung quanh các phần tử.

Thuộc tính này thiết lập khoảng trống BÊN NGOÀI đường viền (border).

Giá trị của thuộc tính margin không được kế thừa bởi các phần tử con. Bạn có quyền kiểm soát tất cả các lề (trên, dưới, trái và phải) thông qua các thuộc tính mà bạn sẽ được tìm hiểu ngay phía dưới của bài học.


Margin – theo từng cạnh

Để căn lề cho từng cạnh của phần tử, trong CSS bạn có thể sử dụng các thuộc tính sau:

  • margin-top: căn lề trên của một phần tử
  • margin-right: căn lề phải của một phần tử
  • margin-bottom: căn lề dưới của một phần tử
  • margin-left: căn lề trái của một phần tử

Tất cả các thuộc tính liên quan tới margin đều có thể nhận các giá trị sau:

  • auto – Các trình duyệt sẽ tự động ước lượng việc căn lề cho mỗi phần tử.
  • length –  Xác định độ rộng của lề (theo đơn vị px, pt, cm, …). Giá trị mặc định là 0.
  • % – Xác định mối quan hệ giữa lề với độ rộng của phần tử chứa nó.
  • inherit – Kế thừa giá trị lề từ phần tử cha chứa phần tử có thuộc tính margin này.

Tip: Với thuộc tính margin, bạn cũng có thể cho phép chúng nhận giá trị âm

Ví dụ dưới đây sẽ hướng dẫn các bạn cách áp dụng 4 thuộc tính margin như trình bày ở trên để tạo lề cho phần tử  

Ví dụ:


p {
margin-top: 100px;
margin-bottom: 100px;
margin-right: 150px;
margin-left: 80px;
}


Thuộc tính Margin trong CSS

Khi sử dụng thuộc tính margin, bạn có thể đơn giản hơn đoạn code của mình nhưng nó vẫn giúp bạn xác định tất cả các thuộc tính liên quan tới việc căn lề trong CSS như:

  • margin-top
  • margin-right
  • margin-bottom
  • margin-left

Ví dụ:


p {
margin: 100px 150px 100px 80px;
}

Các ví dụ sau sẽ giúp bạn hiểu rõ hơn cách hoạt động của thuộc tính margin:

Thuộc tính margin có 4 giá trị:

  • margin: 25px 50px 75px 100px;
    • Lề trên là 25px
    • Lề phải là 50px
    • Lề dưới là 75px
    • Lề trái là 100px

Nếu thuộc tính margin có 3 giá trị:

  • margin: 25px 50px 75px;
    • Lề trên là 25px
    • Lề phải và trái là 50px
    • Lề dưới là 75px

Nếu thuộc tính margin có 2 giá trị:

  • margin: 25px 50px;
    • Lề trên và lề dưới là 25px
    • Lề phải và lề trái là 50px

Nếu thuộc tính margin có 1 giá trị:

  • margin: 25px;
    • Các lề trên, lề dưới, lề trái, và lề phải là 25px

Giá trị Auto

Bạn có thể thiết lập giá trị Auto cho thuộc tính margin để tự động căn chỉnh giữa các phần tử bên trong container của nó.

Phần tử này sẽ xác định chiều rộng được chỉ định và khoảng trống còn lại sẽ được chia đều giữa lề trái và lề phải:

Ví dụ:


div {
width: 300px;
margin: auto;
border: 1px solid red;
}


Giá trị inherit

Ví dụ này cho phép lề trái được kế thừa từ phần tử cha:

Ví dụ:


div.container {
border: 1px solid red;
margin-left: 100px;
}
p.one {
margin-left: inherit;
}


Margin collapse

Hai phần tử có cùng căn lề, chiều ngang căn lề của lề trên và lê dưới của hai phần tử này lấy theo độ rộng lớn nhất giữa 2 lề.

Điều này không xảy ra ở lề trái và phải! Chỉ có duy nhất ở lề trên và lề dưới của phần tử!

Chúng ta sẽ hiểu hơn qua ví dụ sau:

Ví dụ:


h1 {
margin: 0 0 50px 0;
}
h2 {
margin: 20px 0 0 0;
}

Trong ví dụ này, phần tử h1 có lề dưới là 50px và phần tử h2 có lề trên là 20px. Ta có: khoảng cách giữa h1 và h2 đáng nhẽ phải là 70px (50px + 20px). Tuy nhiên, thuộc tính collapsing trong margin sẽ giúp chúng gộp thành một margin duy nhất. Chiều cao của margin sẽ bằng chiều cao của margin lớn hơn đó là 50px.