미디어 쿼리가 없는 3열 데스크톱에서 1열 모바일 레이아웃까지
P粉085689707
P粉085689707 2023-12-23 14:03:05
0
1
539

여기에서 몇 가지 질문을 조사했지만 제가 찾고 있는 문제를 완전히 해결하지는 못했습니다.

나에게 웹사이트가 있고 그것을 원한다고 가정해 보세요. 데스크탑에서 나는 이것을 원합니다:

쉽습니다. grid-template-columns: 重复(3, 33%) (기본적으로)

하지만 모바일에서는 이걸 원해요

내가 만난 일은 단일 열로 바뀌기 전에 일어났습니다.

나는 clamp()minmax() 온갖 노력을 다하고 있지만 아무것도 내가 원하는 대로 되지 않습니다. 예, 확실히 미디어 쿼리를 사용할 수 있지만 기본 레이아웃 변경을 수행하는 데 미디어 쿼리가 필요하지 않도록 최신 CSS(예: 클램프, 그리드, minmax 등)를 사용하여 진정한 유동 그리드/플렉스 레이아웃을 만들고 싶습니다. < /p>

이것이 작동하지 않는다는 것을 알고 있지만 요청의 시작점으로 여기에 내 100번 시도 중 하나의 간단한 버전이 있습니다. :) 이 버전에서는 클램프를 사용하여 반복(3)에서 반복(1)으로 전환하려고 합니다. .

으아악 으아악

P粉085689707
P粉085689707

모든 응답(1)
P粉070918777

더 일반적인 규칙이 포함된 전체 기사: https://css-tricks.com/반응성-layouts-fewer-media-queries/

이것은 flex-basis에서 사용됩니다 max(0px, (400px - 100vw)*1000) 的想法。如果 100vw(屏幕尺寸)大于 400px,则此公式将给出 0px,或者在相反情况下给出一个非常大的值,为每个元素提供一个big flex-basis 并创建一个包装。只需调整 400px 即可扮演 @media (max-width:400px)

으아아아 으아아아

CSS 그리드를 사용하면 다음과 같이 보일 수 있습니다:

으아아아 으아아아

미디어 쿼리 없이 최대 열 수를 제어하는 ​​비슷한 질문: CSS 그리드 - 미디어 쿼리 없이 최대 열 수


위 솔루션을 확장하여 더 복잡한 사례를 고려할 수 있습니다.

6열에서 3열, 1열로 이동하는 예:

으아아아 으아아아

이러한 값을 이해하려면 다음 범위를 고려하세요.

으아아아

6개의 열을 얻으려면 ]14.3% 16.7%] 范围内的值(我考虑的是 15%) 3개의 열을 얻으려면 ]25% 33.3%] 范围内的值(我考虑的是 30%)

이 필요합니다.

우리는 간격을 고려하기 위해 가장자리를 피합니다.

CSS 변수를 사용하는 보다 일반적인 솔루션입니다. 여기에 0.1%를 추가하여 값이 원하는 열 수를 얻을 만큼 충분히 크고 간격을 수용할 수 있는지 확인합니다.

동적 색상도 추가합니다(관련: 높이 또는 너비에 따라

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿