2017-12-26 113 views
5

Việc sử dụng grid-template-columns: repeat(auto-fit, minmax(600px, 1fr)) giúp dễ dàng xây dựng lưới CSS đáp ứng. Vùng chứa sẽ được lấp đầy với nhiều thành phần phù hợp với một hàng, mà không sử dụng truy vấn phương tiện.Các mục đáp ứng đầy đủ với lưới CSS và tự động điều chỉnh minmax

.container { 
 
    display: grid; 
 
    grid-gap: 5px; 
 
    grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); 
 
} 
 

 
.item { 
 
    height: 100px; 
 
    background: #ccc; 
 
}
<div class="container"> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
</div>

Vấn đề là các mặt hàng là rộng hơn so với màn hình khi màn hình nhỏ hơn min-giá trị quy định tại minmax(). Bạn có thể khắc phục điều này bằng cách thêm truy vấn phương tiện tại 400px, nhưng điều này chỉ hoạt động khi bạn biết rằng không có nội dung nào xung quanh vùng chứa. Và đó là hầu như không thể khi các container có thể được đặt bất cứ nơi nào.

Có cách nào hay tài sản để nói cho các mục mà chúng không bao giờ nên rộng hơn 100%?

Thứ gì đó như: Đổ đầy thùng chứa với nhiều mục 400px nhất có thể, nhưng đảm bảo rằng chúng không rộng hơn 100% chiều rộng của vùng chứa.

CodePen Demo

+0

Thông tin thêm về tự động điền và tự động điều chỉnh kích thước: https://blog.jonstodle.com/responsive-layout-with-css-grid-part-2-auto- fit-auto-fill/ – tobi

+0

Vì có các yếu tố khác trên trang, truy vấn phương tiện của bạn sẽ phải dựa trên toàn bộ bố cục, không chỉ một vùng chứa này. Vì vậy, khi * tất cả nội dung * trên trang nén vùng chứa này xuống 400px, sau đó kích hoạt truy vấn phương tiện ... –

+0

Nếu không, hãy sử dụng tập lệnh chuyển giá trị của 'grid-template-columns' khi phát hiện chiều rộng là 400px thùng chứa. –

Trả lời

0

Điền container với càng nhiều 400px mục càng tốt, nhưng đảm bảo không rằng trong số họ trở nên rộng hơn 100% chiều rộng của thùng sơn.

Cho rằng bạn có thể sử dụng "max-nội dung" bất động sản, trong ví dụ của bạn này sẽ là:

.unresponsive { 
    grid-template-columns: repeat(auto-fit, minmax(400px, auto)); 
    grid-auto-columns: max-content; 
} 
+0

Ý tưởng hay, nhưng nó không hoạt động.Tôi đoán đó là bởi vì không có các cột lưới ngầm được tạo ra (grid-auto-columns) khi các cột mẫu auto-fit/fill. max-content bên trong minmax cũng không làm việc cho tôi. – tobi

0

Bạn nên thay đổi grid-template-columns-grid-template-columns: repeat(auto-fit, minmax(min-content, 400px))minmax tác phẩm theo cách này: nó cố gắng để áp dụng tối đa giá trị và nếu thất bại nó áp dụng tối thiểu. Nhưng trong này, bạn có thể nhận được khoảng trống trong lưới của bạn ở bên phải. Demo:

.container { 
 
    display: grid; 
 
    grid-gap: 5px; 
 
    grid-template-columns: repeat(auto-fit, minmax(min-content, 400px)); 
 
} 
 

 
.item { 
 
    height: 100px; 
 
    background: #ccc; 
 
}
<div class="container"> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
</div>

Các vấn đề liên quan