Hướng dẫn css remove height

While this answer feels somewhat cheap, I truly believe it's the answer you're looking for...


You can't.

Once you've set a height on the img in CSS, the HTML declaration gets immediately overridden. There is no way further along in the CSS to then ignore that declaration and use the HTML-specified height, because things like initial refer to CSS-defined properties (source), not associated HTML attributes.

See this reference for CSS Height, which lists all Property Values: *Experimental/non-supported values ommitted

height: auto | length | % | inherit | initial

If you attempt to re-define the height of img using any of the above property values, they will not work - I've just tried each and every one to be sure.

  • length and % require a defined height, which seems to be the exact thing you're trying to avoid

  • initial will just grab the initial CSS declaration of height: auto;

  • inherit doesn't have an ancestor to inherit from, therefore it falls back to the default of auto


Your only real choice is to override the height in CSS, either using in-line styles (as suggested by Carter)...

Hướng dẫn css remove height

Nếu bạn mới làm quen với CSS, việc căn chỉnh các phần tử với thuộc tính position có thể không dễ dàng như bạn tưởng tượng. Mọi thứ sẽ trở nên phức tạp hơn khi dự án lớn hơn và nếu không hiểu rõ cách CSS giải quyết vấn đề căn chỉnh các phần tử HTML, bạn sẽ không thể khắc phục các vấn đề về căn chỉnh của mình.

Có nhiều cách/phương pháp khác nhau để định vị (xác định vị trí) các phần tử bằng CSS thuần túy. Sử dụng các thuộc tính float, displayposition trong CSS là những phương pháp phổ biến nhất. Trong bài viết này, mình sẽ giải thích một trong những cách khó hiểu nhất để căn chỉnh các phần tử bằng CSS thuần túy: thuộc tính position.

Bạn cũng có thể xem hướng dẫn căn chỉnh với position trong CSS bằng video tại đây.

Bây giờ thì bắt đầu thôi!

Thuộc tính position và helper

Chúng ta có 5 giá trị chính cho thuộc tính position:

position: static | relative | absolute | fixed | sticky

và các thuộc tính bổ sung để thiết lập tọa độ của một phần tử (mình gọi chúng là “thuộc tính helper”):

top | right | bottom | left AND the z-index

Lưu ý quan trọng: thuộc tính helper không hoạt động nếu không có position nào được khai báo hoặc với position: static.

z-index là gì?

Tưởng tượng rằng chúng ta có các thuộc tính height (chiều cao) là xwidth (chiều rộng) là y. Vậy z là chiều thứ 3. Một phần tử trong trang web đứng trước các phần tử khác khi giá trị z-index của nó tăng lên.

z-index không hoạt động với position: static hoặc không có position nào được khai báo.

Các phần tử được sắp xếp từ sau ra trước, khi z-index của chúng tăng lên:

Hướng dẫn css remove height

Bạn có thể xem video tại đây để biết cách sử dụng z-index chi tiết hơn.

Giờ thì tiếp tục với các giá trị của thuộc tính position!

1. Static

position: static là giá trị mặc định. Cho dù chúng ta có khai báo hay không, các phần tử vẫn sẽ được định vị theo thứ tự bình thường trên trang web. Ví dụ:

Đầu tiên, chúng ta định nghĩa một cấu trúc HTML:

<body>
  <div class="box-orange">div>
  <div class="box-blue">div>
body>

Sau đó, tạo 2 hộp và xác định widths, heights & positions của chúng:

.box-orange {          // without any position declaration
  background: orange;
  height: 100px;
  width: 100px;       
}

.box-blue {
  background: lightskyblue;
  height: 100px;
  width: 100px; 
  position: static;   // Declared as static
}

Kết quả là như nhau với việc có và không có khai báo position: static:

Hướng dẫn css remove height

2. Relative

position: relative: Vị trí mới của một phần tử so với vị trí bình thường của nó.

Bắt đầu từ position: relative (và đối với tất cả các giá trị position non-static) trở đi, chúng ta có thể thay đổi vị trí mặc định của phần tử bằng cách sử dụng các thuộc tính helper mà mình đã đề cập ở trên.

Thử di chuyển hộp màu cam sang bên cạnh hộp màu xanh:

.box-orange {
  position: relative;  // We are now ready to move the element
  background: orange;
  width: 100px;
  height: 100px;
  top: 100px;         // 100px from top relative to its old position
  left: 100px;        // 100px from left
}

Hộp màu cam được di chuyển 100px xuống dưới cùng và bên phải, so với vị trí bình thường của nó:

Hướng dẫn css remove height

Lưu ý: Sử dụng position: relative cho một phần tử, không ảnh hưởng đến vị trí của các phần tử khác.

3. Absolute

Trong position: relative , phần tử được định vị tương đối với chính nó. Tuy nhiên, một phần tử có position: absolute (định vị tuyệt đối) lại liên quan đến phần tử cha của nó.

Phần tử position: absolute bị xóa khỏi vị trí bình thường trên trang web. Nó được định vị tự động đến điểm bắt đầu (góc trên bên trái) của phần tử cha. Nếu nó không có bất kỳ phần tử cha nào thì thẻ gốc ban đầu sẽ là phần tử cha của nó.

Từ vị trí của phần tử có thuộc tính position: absolute, các phần tử khác có thể bị ảnh hưởng và hoạt động như phần tử position: absolute đã bị xóa hoàn toàn khỏi trang web.

Ví dụ nhé, thêm một container làm phần tử chính:

<body>
  <div class="container">
    <div class="box-orange">div>
    <div class="box-blue">div>
  div>
body>
.box-orange {
  position: absolute;
  background: orange;
  width: 100px;
  height: 100px;
}

position: absolute đưa phần tử màu cam về đầu phần tử cha của nó:

Hướng dẫn css remove height

Bây giờ nhì thì có vẻ như hộp màu xanh lam đã biến mất, nhưng chưa đâu

Hướng dẫn css remove height
Hộp màu xanh dương hoạt động giống như hộp màu cam bị loại bỏ, vì vậy nó sẽ dịch chuyển đến vị trí của hộp màu cam.

Giờ thì thử di chuyển hộp màu cam 5 pixels, chúng ta đã có thể nhìn thấy hộp màu xanh đang nằm ở vị trí nào rồi nhé!

.box-orange {
  position: absolute;
  background: orange;
  width: 100px;
  height: 100px;
  left: 5px;
  top: 5px;
}

Hướng dẫn css remove height

Tọa độ của một phần tử có position: absolute là tương đối với phần tử cha của nó nếu phần tử cha cũng có vị trí non-static.

.container {
  position: relative;
  background: lightgray;
}

.box-orange {
  position: absolute;
  background: orange;
  width: 100px;
  height: 100px;
  right: 5px;    // 5px relative to the most-right of parent
}

Hướng dẫn css remove height

4. Fixed

Giống như position: absolute, các phần tử cóposition: fixed cũng bị xóa khỏi vị trí bình thường trên trang. Sự khác biệt là:

  • Chúng chỉ có quan hệ tương đối với thẻ , không phải bất kỳ phần tử cha nào khác.
  • Chúng không bị ảnh hưởng bởi thao tác cuộn.
.container {
  position: relative;
  background: lightgray;
}

.box-orange {
  position: fixed;
  background: orange;
  width: 100px;
  height: 100px;
  right: 5px;    // 5px relative to the most-right of parent
}

Ví dụ: Thay đổi vị trí của hộp màu cam thành position: fixed và lần này nó có vị trí tương đối là 5px so với lề phải của thẻ chứ không phải so với phần tử cha (vùng chứa) của nó:

<div class="container">
  <div class="box-orange">div>
  <div class="box-blue">div>
  <p>Scroll down the pagep>
div>
.container { 
  position: relative;
  background: lightgray;
  width: 50%;
  margin: 0 auto;
  height: 1000px;
}

.container p {
  text-align: center;
  font-size: 20px;
}

.box-orange {
  background: orange;
  width: 100px;
  height: 100px;
  position: fixed;
  right: 5px;
}

...
}

Hướng dẫn css remove height

Xem cụ thể cuộn trang tại đây. Như chúng ra có thể thấy, việc cuộn trang cũng không ảnh hưởng đến vị trí cố định của hộp màu cam. Nó không còn liên quan đến phần tử cha (vùng chứa) của nó nữa.

5. Sticky

position: sticky có thể được giải thích như là sự pha trộn giữa position: relativeposition: fixed.

Ban đầu, nó hoạt động như một phần tử có position: relative, cho đến khi thuộc tính helper được khai báo thì nó được thay đổi hành vi thành position: fixed. Cách tốt nhất để giải thích position: sticky là bằng một ví dụ:

<div class="container">
  <div class="box-orange">div>
  <div class="box-blue">div>
  <p>Scroll down the pagep>
  <p class="sticky">I am stickyp>![](https://images.viblo.asia/b9225e4f-46e7-4d0c-86c0-683007885b24.png)

div>
.container { 
  position: relative;
  background: lightgray;
  width: 50%;
  margin: 0 auto;
  height: 1000px;
}

...

.sticky {
  position: sticky;
  background: red;
  top: 0;
  padding: 10px;
  color: white;
}

Ban đầu khi chưa có thao tác cuộn hoặc có thao tác cuộn nhưng phần tử có position: sticky chưa ở vị trí top: 0 thì nó hoạt động như position: relative:

Hướng dẫn css remove height

Khi thao tác cuộn và phần tử có position: sticky bắt đầu lên đến vị trí top: 0 thì nó hoạt động như position: fixed:

Hướng dẫn css remove height

Lưu ý quan trong: position: sticky không được hỗ trợ trong Internet Explorer và một số phiên bản cũ của các trình duyệt khác. Bạn có thể kiểm tra hỗ trợ của trình duyệt tại caniuse.com.

Hướng dẫn css remove height

Cách tốt nhất để hiểu thuộc tính position trong CSS là thực hành. Tiếp tục viết mã cho đến khi bạn hiểu rõ hơn. Nếu có bất kỳ thắc mắc nào về bài viết, hãy dể lại ý kiến ở phần bình luận nhé!

Tham khảo: Nguồn bài viết

Thank for reading!!