CodeGym /Các khóa học /Frontend SELF VI /Các loại định vị

Các loại định vị

Frontend SELF VI
Mức độ , Bài học
Có sẵn

1.1 Định vị static

Định vị trong CSS quyết định cách các phần tử được đặt trên trang web. Hiểu về các loại định vị khác nhau giúp tạo ra giao diện phức tạp và động. Hôm nay mình sẽ đi sâu vào từng loại định vị: static, relative, absolute, fixedsticky.

staticgiá trị định vị mặc định cho tất cả các phần tử. Các phần tử với loại định vị này được đặt trong dòng chảy bình thường của tài liệu, tức là chúng được sắp xếp lần lượt theo thứ tự được xác định bởi HTML-markup.

Ví dụ sử dụng:

CSS
    
      .static-box {
        background-color: #3498db;
        color: white;
        padding: 20px;
        margin: 10px;
      }
    
  
HTML
    
      <div class="static-box">Phần tử 1</div>
      <div class="static-box">Phần tử 2</div>
      <div class="static-box">Phần tử 3</div>
    
  

Giải thích mã:

  • .static-box: các phần tử với position: static;, được đặt trong dòng chảy bình thường của tài liệu lần lượt

1.2 Định vị relative

relative cho phép định vị phần tử tương đối với vị trí bình thường của nó trong dòng chảy của tài liệu. Phần tử vẫn giữ nguyên trong dòng chảy nhưng có thể được di chuyển bằng cách sử dụng các thuộc tính top, right, bottomleft.

Ví dụ sử dụng:

CSS
    
      .box {
        margin: 5px;
        padding: 20px;
        color: white;
        background-color: #2ecc71;
      }

      .relative-box {
        position: relative;
        top: 15px;
        left: 15px;
        color: white;
        background-color: #e74c3c;
      }
    
  
HTML
    
      <div>
        <div class="box">Phần tử bình thường</div>
        <div class="box relative-box">Phần tử đã di chuyển</div>
        <div class="box">Phần tử bình thường</div>
      </div>
    
  

Giải thích mã:

  • .relative-box: phần tử với position: relative;, di chuyển xuống 15 pixels và sang phải 15 pixels so với vị trí bình thường của nó

1.3 Định vị absolute

absolute cho phép định vị phần tử tương đối với tổ tiên gần nhất có định vị khác static. Nếu không có tổ tiên nào như vậy, phần tử được định vị tương đối với bối cảnh ban đầu (thường là <html>).

Ví dụ sử dụng:

CSS
    
      .container {
        position: relative;
      }

      .box {
        margin: 5px;
        padding: 20px;
        color: white;
        background-color: #2ecc71;
      }

      .absolute-box {
        position: absolute;
        top: 15px;
        left: 15px;
        color: white;
        background-color: #e74c3c;
      }
    
  
HTML
    
      <div class="container">
        <div class="box">Phần tử bình thường</div>
        <div class="box absolute-box">Phần tử định vị absolute</div>
        <div class="box">Phần tử bình thường</div>
      </div>
    
  

Giải thích mã:

  • .container: container với position: relative;, bên trong đó phần tử absolute được định vị
  • .absolute-box: phần tử với position: absolute, được định vị tương đối với container. Di chuyển xuống 15 pixels và sang phải 15 pixels từ góc trên bên trái của container.

1.4 Định vị fixed

fixed cho phép định vị phần tử tương đối với cửa sổ trình duyệt. Phần tử đó vẫn giữ nguyên vị trí khi cuộn trang.

Ví dụ sử dụng:

CSS
    
      .container {
        height: 200px;
        overflow: auto;
      }
      .fixed-box {
        position: fixed;
        background-color: #f39c12;
        color: white;
        padding: 20px;
        top: 15px;
        right: 15px;
      }
    
  
HTML
    
      <div class="container">
        <div class="fixed-box">Phần tử cố định</div>
        Suspendisse tellus sem, sollicitudin ac sapien vitae, consectetur molestie nunc. Suspendisse gravida efficitur est, quis sagittis lectus tincidunt ut. Vestibulum ut tortor vel ligula laoreet fermentum ut quis orci. Nulla facilisi. Cras a vehicula ante. Nullam auctor magna sed justo fringilla condimentum. Aenean lacinia mauris ac neque rhoncus iaculis. Sed iaculis mattis ipsum sed facilisis. Ut non elit mi. Vestibulum tempus lectus eget turpis bibendum, id venenatis urna eleifend.
        Fusce at augue at tellus vehicula condimentum quis vitae massa. Vivamus faucibus lectus ut diam pharetra sollicitudin. Sed eu pretium lectus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed vitae venenatis purus. Nullam sed porttitor elit. Praesent condimentum sem sit amet odio tempus, at finibus ante feugiat.
        Morbi fringilla magna vitae tellus ultrices convallis. Donec pharetra mollis velit et elementum. Ut aliquam odio quis pellentesque eleifend. Nullam vel auctor magna. Sed mollis vitae odio non bibendum. Suspendisse ornare, tellus vitae vehicula mattis, justo lorem ullamcorper orci, elementum pretium augue justo ut ante. Nulla volutpat finibus porta.
        Nam ex sem, dignissim ac scelerisque vel, luctus vel orci. Donec sed elit finibus, pretium dolor non, bibendum purus. Morbi in mollis nunc. Nulla finibus enim at iaculis sagittis. Phasellus a dictum purus, in consectetur felis. Aliquam odio turpis, pharetra et interdum quis, fermentum at mi. Vestibulum nec leo mauris. Morbi urna lacus, eleifend vel turpis finibus, ultricies pretium urna. Donec convallis ipsum quis massa porttitor tincidunt et id nibh. Nullam dictum interdum diam, vel mollis tortor. Curabitur lobortis lorem nulla, sed malesuada quam cursus ac. Nulla ac diam enim. Nullam nibh odio, consectetur rutrum egestas nec, elementum at nisl. Pellentesque vitae tristique nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aliquam condimentum metus id eros dignissim, vel auctor sem lacinia.
        Donec nisl nisi, luctus ut turpis nec, vestibulum tempor velit. Nullam tristique ut turpis nec congue. Vivamus sed turpis nunc. Nulla vulputate, urna vitae fermentum sollicitudin, eros quam facilisis felis, ac tristique ex mauris maximus quam. Morbi eu laoreet turpis, non semper ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nulla hendrerit, orci quis aliquam finibus, magna metus dapibus elit, eget rutrum leo nulla non nisi.
        Vivamus id tempor massa, at consectetur nisi. Maecenas magna augue, ultrices vel neque sit amet, porttitor varius tortor. Maecenas consequat neque tristique, cursus eros in, pretium mauris. Quisque eu euismod nunc, a mattis enim. Cras vel sollicitudin arcu, quis suscipit sem. Donec imperdiet nunc sit amet risus feugiat, et fermentum dui venenatis. Mauris quis lectus eu velit scelerisque suscipit eu sit amet sapien. Donec sed sagittis sem, in ultricies nulla. Suspendisse placerat elit sit amet ullamcorper auctor. Aliquam condimentum quis ex id vestibulum. Vivamus erat dolor, tincidunt vitae bibendum nec, euismod a dui. Nullam odio risus, interdum sit amet orci sit amet, porta interdum urna. Aenean at risus nec nulla scelerisque fringilla in ultricies ante.
        Sed malesuada quis massa sed convallis. Praesent non erat vulputate, convallis nunc a, finibus tellus. Proin sit amet turpis a est aliquam scelerisque. Praesent vestibulum enim id odio faucibus, quis sollicitudin tellus ultrices. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec maximus luctus libero, sed faucibus ante feugiat id. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Fusce pellentesque lacus magna, sit amet suscipit felis fermentum porta. Pellentesque vulputate vehicula elit, id lacinia nisi aliquet eget. In sed ligula sed nunc dapibus accumsan id ut risus. Integer tristique eros a turpis congue, sit amet condimentum lacus ultricies. Curabitur pulvinar, leo eu elementum lacinia, sapien mauris faucibus libero, ut commodo neque arcu ac nibh. Integer eu sapien convallis, fermentum risus et, euismod odio. Maecenas maximus lectus nec dui facilisis finibus. Duis volutpat, sapien sit amet vehicula convallis, dui lectus finibus risus, faucibus gravida leo quam non eros.
      </div>

    
  

Giải thích mã:

  • .fixed-box: phần tử với position: fixed;, giữ nguyên vị trí khi cuộn trang. Nó nằm ở góc trên bên phải của cửa sổ trình duyệt

1.5 Định vị sticky

sticky cho phép phần tử hành xử như relative cho đến khi nó đạt được vị trí đã định khi cuộn, sau đó nó sẽ trở thành cố định (hành xử như fixed).

Ví dụ sử dụng:

CSS
    
      .sticky-box {
        position: sticky;
        background-color: #8e44ad;
        color: white;
        padding: 20px;
        top: 0;
      }

      .text {
        margin-top: 15px;
      }

      .content {
        height: 200px;
        background-color: #ecf0f1;
        overflow: auto;
      }
    
  
HTML
    
      <div class="content">
        <div class="sticky-box">Phần tử Sticky</div>
        <div class="text">
          Suspendisse tellus sem, sollicitudin ac sapien vitae, consectetur molestie nunc. Suspendisse gravida efficitur est, quis sagittis lectus tincidunt ut. Vestibulum ut tortor vel ligula laoreet fermentum ut quis orci. Nulla facilisi. Cras a vehicula ante. Nullam auctor magna sed justo fringilla condimentum. Aenean lacinia mauris ac neque rhoncus iaculis. Sed iaculis mattis ipsum sed facilisis. Ut non elit mi. Vestibulum tempus lectus eget turpis bibendum, id venenatis urna eleifend.
          Fusce at augue at tellus vehicula condimentum quis vitae massa. Vivamus faucibus lectus ut diam pharetra sollicitudin. Sed eu pretium lectus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed vitae venenatis purus. Nullam sed porttitor elit. Praesent condimentum sem sit amet odio tempus, at finibus ante feugiat.
          Morbi fringilla magna vitae tellus ultrices convallis. Donec pharetra mollis velit et elementum. Ut aliquam odio quis pellentesque eleifend. Nullam vel auctor magna. Sed mollis vitae odio non bibendum. Suspendisse ornare, tellus vitae vehicula mattis, justo lorem ullamcorper orci, elementum pretium augue justo ut ante. Nulla volutpat finibus porta.
          Nam ex sem, dignissim ac scelerisque vel, luctus vel orci. Donec sed elit finibus, pretium dolor non, bibendum purus. Morbi in mollis nunc. Nulla finibus enim at iaculis sagittis. Phasellus a dictum purus, in consectetur felis. Aliquam odio turpis, pharetra et interdum quis, fermentum at mi. Vestibulum nec leo mauris. Morbi urna lacus, eleifend vel turpis finibus, ultricies pretium urna. Donec convallis ipsum quis massa porttitor tincidunt et id nibh. Nullam dictum interdum diam, vel mollis tortor. Curabitur lobortis lorem nulla, sed malesuada quam cursus ac. Nulla ac diam enim. Nullam nibh odio, consectetur rutrum egestas nec, elementum at nisl. Pellentesque vitae tristique nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aliquam condimentum metus id eros dignissim, vel auctor sem lacinia.
          Donec nisl nisi, luctus ut turpis nec, vestibulum tempor velit. Nullam tristique ut turpis nec congue. Vivamus sed turpis nunc. Nulla vulputate, urna vitae fermentum sollicitudin, eros quam facilisis felis, ac tristique ex mauris maximus quam. Morbi eu laoreet turpis, non semper ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nulla hendrerit, orci quis aliquam finibus, magna metus dapibus elit, eget rutrum leo nulla non nisi.
          Vivamus id tempor massa, at consectetur nisi. Maecenas magna augue, ultrices vel neque sit amet, porttitor varius tortor. Maecenas consequat neque tristique, cursus eros in, pretium mauris. Quisque eu euismod nunc, a mattis enim. Cras vel sollicitudin arcu, quis suscipit sem. Donec imperdiet nunc sit amet risus feugiat, et fermentum dui venenatis. Mauris quis lectus eu velit scelerisque suscipit eu sit amet sapien. Donec sed sagittis sem, in ultricies nulla. Suspendisse placerat elit sit amet ullamcorper auctor. Aliquam condimentum quis ex id vestibulum. Vivamus erat dolor, tincidunt vitae bibendum nec, euismod a dui. Nullam odio risus, interdum sit amet orci sit amet, porta interdum urna. Aenean at risus nec nulla scelerisque fringilla in ultricies ante.
          Sed malesuada quis massa sed convallis. Praesent non erat vulputate, convallis nunc a, finibus tellus. Proin sit amet turpis a est aliquam scelerisque. Praesent vestibulum enim id odio faucibus, quis sollicitudin tellus ultrices. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec maximus luctus libero, sed faucibus ante feugiat id. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Fusce pellentesque lacus magna, sit amet suscipit felis fermentum porta. Pellentesque vulputate vehicula elit, id lacinia nisi aliquet eget. In sed ligula sed nunc dapibus accumsan id ut risus. Integer tristique eros a turpis congue, sit amet condimentum lacus ultricies. Curabitur pulvinar, leo eu elementum lacinia, sapien mauris faucibus libero, ut commodo neque arcu ac nibh. Integer eu sapien convallis, fermentum risus et, euismod odio. Maecenas maximus lectus nec dui facilisis finibus. Duis volutpat, sapien sit amet vehicula convallis, dui lectus finibus risus, faucibus gravida leo quam non eros.
        </div>
      </div>
    
  

Giải thích mã:

  • .sticky-box: phần tử với position: sticky;, hành xử như relative cho đến khi biên trên chạm đến phần trên cùng của cửa sổ trình duyệt. Sau đó, phần tử sẽ cố định tại vị trí này và vẫn giữ nguyên khi cuộn tiếp

1.6 So sánh các loại định vị

So sánh các loại định vị:

Loại định vị Mô tả Sử dụng
static Định vị mặc định. Các phần tử đi theo dòng chảy bình thường của tài liệu. Đặt phần tử cơ bản.
relative Định vị tương đối với vị trí bình thường của phần tử. Di chuyển phần tử mà không xoá khỏi dòng chảy bình thường.
absolute Định vị tương đối với tổ tiên gần nhất có định vị khác static. Đặt chính xác phần tử bên trong container.
fixed Định vị tương đối với cửa sổ trình duyệt. Các phần tử cần giữ nguyên vị trí khi cuộn trang.
sticky Phần tử hành xử như relative cho đến đạt được vị trí định, sau đó cố định. Ghim phần tử khi cuộn.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION