+15

Position Bạn đã thật sự hiểu rõ

Có lẽ câu hỏi phân biệt position: relativeposition: absolute là câu hỏi khôn thể thiếu khi đi phỏng vấn front end. Mình thấy câu hỏi này không quá khó nhưng có khá nhiểu bạn không trả lời được hay trả lời sai vì đơn giản là lâu không động đến nên dễ lẫn lộn giữa 2 cái đó, mình cũng thế 😅😅. Vậy nên hôm nay mình quyết định viết 1 bài về các thuộc tính của Position để mọi người cùng lắm được và chủ yếu là để khi nào mình quên thì có thể lên đây xem lại 😆😆. Bắt đầu luôn nào.

1 Khái niệm

Thuộc tính Position xác định loại phương thức định vị được sử dụng cho một phần tử nó thường đi kèm với các thuộc tính khác như left, right, top, bottom.

Position5 giá trị :

  • static
  • relative
  • fixed
  • absolute
  • sticky

Tuy nhiên trong phạm vi bài viết này mình chỉ tập trung vào 4 thuộc tính static relative fixed absolute và cùng xem relaiveabsolute khác nhau như thế nào. Còn thuộc tính sticky phức tạp và ít được dùng hơn nên mình sẽ dành 1 bài riêng để nói về nói 😄

position: static

Đây là giá trị hiển thị mặc định của position. Nó không bị ảnh hưởng bởi các thuộc tính left, right, top, bottom.

position: relative

Xác định vị trí tuyệt đối của của thành phần, khi sử dụng thuộc tính này chúng ta sẽ sử dụng kèm với các giá trị left, right, top, bottom, và bạn chỉ có thể sử dụng nhiều nhất 2 giá trị lền kề nhau ví dụ như (botton, left), (left, top), (top, right), (right, botton) nó cũng tương tự như hướng các hướng tây nam, tây bắc ,đông bắc, đông nam trog địa lý vậy 😂😂😂.

Một lưu ý là: thuộc tính position: relative sẽ không làm thay đổi tới việc hiển thị ban đầu, mình sẽ đi vào ví dụ luôn để chứng minh điểu mình nói. Mình có mọt đoạn html và css như sau:

HTML

        <div class="container">
            <div class="item item-a" style="background-color: red"></div>
            <div class="item item-b" style="background-color: yellow"></div>
            <div class="item item-c" style="background-color: green"></div>
        </div>   

css

	                <style type="text/css">
                        .container {
                        width: 500px;
                        height: 250px;
                        border: 1px solid;
                        margin-left: 400px;
                        margin-top: 50px;
                        background-color: #0b7cde;
                        line-height: 60px;
                        }	
                        .item {
                        height: 60px;
                        width: 60px;
                        margin: 10px;
                        }
                    </style>

Và đây là kết quả trên màn hình:

Bây giờ mình sẽ thêm thuộc tính position: relative và xét cách trên 70px, trái 300px cho item màu vàng

                    position: relative;
                    top: 70px;
                    left: 300px;

và đây là kết quả

Như các bạn thấy thì item màu vàng đã dịch chuyển trên 70px, trái 300px và item màu xanh không dịch chuyển lên để lấp vào chỗ item màu vàng để lại.

position: absolute

Xác định vị trí tương đối theo thẻ cha có thuộc tính là position: relative nếu thẻ cha không phải là position: relative thì nó sẽ được xác đinh theo thẻ body của trang web.

Lưu ý là: thuộc tính position: absolute sẽ làm thay đổi tới việc hiển thị ban đầu

Tương tự như ví dụ trên mình cũng thêm position: absolute và xét cách trên 0px, phải 0px cho item màu vàng và thêm thuộc tính position: relative cho thẻ div container, ta được kết quả sau.

Như các bạn thấy thì ngay khi xét lại vị trí của item màu vàng thì item màu xanh đã tràn lên vị trí của item màu vàng. Tiếp theo mình sẽ không để thuộc tính position: relative cho thẻ div container để xem kết quả như thế nào nhé 😄

Do không có thẻ cha nào khai báo là position: relative nên giá trị top và right của item màu vàng được xác định theo thẻ body của trang web

position: fixed

Xác định vị trí tương đối cho cửa sổ trình duyệt, có nghĩa là nó luôn ở một vị trí ngay cả khi trang được cuộn. Nó dùng các thuộc tính left, right, top, bottom để xác định vị trí. Ứng dụng điển hình của nó có thể kể ra như giữ thanh menu của các trang web không bị mất đi khi cuộn xuống xem các nội dung khác.

Đây là ví dụ về menu có dùng thuộc tính position: fixed

Còn đây là không dùng thuộc tính position: fixed

Lời kết.

Vậy là mình đã cùng các bạn tìm hiểu về thuộc tính position và và cùng xem relaiveabsolute khác nhau như thế nào. Rất cảm ơn các bạn đã đọc.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí