목차
Clamp(), Max(), 和 Min() 函数
流体的尺寸和定位" >流体的尺寸和定位
装饰性元素" >装饰性元素
流体高度" >流体高度
Loading Bar" >Loading Bar
Lamp(), Max() 및 Min() 함수
유동적인 크기 및 위치 지정" >유동적인 크기 및 위치 지정
장식 요소" >장식 요소
유체 높이< /a>span>" >유체 높이< /a>span>
바 로드 중" >바 로드 중
动态分割器" >动态分割器
动态 border Radius" >动态 border Radius
间距" >间距
웹 프론트엔드 CSS 튜토리얼 CSS의 비교 기능에 대한 자세한 설명(예제 소개)

CSS의 비교 기능에 대한 자세한 설명(예제 소개)

Oct 31, 2022 pm 07:32 PM
css

CSS 비교 함수는 2020년 4월부터 지원되었습니다. 저는 이러한 함수를 즐겨 사용하지만, 제가 가장 좋아하는 함수는 clamp()입니다. 이 함수는 제가 가장 많이 사용하는 함수이기도 합니다. 이번 강의에서는 이러한 비교 함수에 대해 자세히 살펴보겠습니다.
clamp(),它也是我最常用的一个。在这节课中,我们详细来看下这些比较函数。

CSS의 비교 기능에 대한 자세한 설명(예제 소개)

Clamp(), Max(), 和 Min() 函数

clamp() 函数的作用是把一个值限制在一个上限和下限之间,当这个值超过最小值和最大值的范围时,在最小值和最大值之间选择一个值使用。它接收三个参数:最小值、首选值、最大值。【学习视频分享:css视频教程web前端

流体的尺寸和定位

在下面这个例子中,有一个手机样式,同时有两张图片放置在上面,如下所示:

CSS의 비교 기능에 대한 자세한 설명(예제 소개)

当容器的宽度变小时,我们要缩小图片的尺寸,这样才不会变形。一般使用百分比单位来解决,如 width: 20%,但是这种方式没有给我们太多的控制。

我们希望能够有一个流体尺寸,要求有最小值和最大值,这就是 clamp 出场的地方。

.section-image {
  width: clamp(70px, 80px + 15%, 180px);
}
로그인 후 복사

CSS의 비교 기능에 대한 자세한 설명(예제 소개)

事例地址:codepen.io/shadeed/pen…

装饰性元素

有时候,我们需要在页面边角加一些修饰元素,该修饰元素需要具有响应式,比如 PC 端是这样的(黑点部分):

CSS의 비교 기능에 대한 자세한 설명(예제 소개)

然后在移动端是长这样的:

CSS의 비교 기능에 대한 자세한 설명(예제 소개)

为了做到这,我们可以使用媒体查询:

.decorative--1 {
  left: 0;
}

.decorative--2 {
  right: 0;
}

@media (max-width: 600px) {
  .decorative--1 {
    left: -8rem;
  }

  .decorative--2 {
    right: -8rem;
  }
로그인 후 복사

虽然这样做可以,但我们可以 clamp()函数,这样更简洁:

  .decorative--1 {
    left: clamp(-8rem, -10.909rem + 14.55vw, 0rem);
  }

  .decorative--2 {
    right: clamp(-8rem, -10.909rem + 14.55vw, 0rem);
  }
로그인 후 복사

事例地址:codepen.io/shadeed/pen…

流体高度

有时候,我们页面的主区的高度需要根据视口大小而变化。这种场景,我们倾向于通过媒体查询或使用视口单位来改变这种情况。

CSS의 비교 기능에 대한 자세한 설명(예제 소개)

.hero {
  min-height: 250px;
}

@media (min-width: 800px) {
  .hero {
    min-height: 500px;
  }
}
로그인 후 복사

我们也可以混合使用固定值和视口单位:

.hero {
  min-height: calc(350px + 20vh);
}

@media (min-width: 2000px) {
  .hero {
    min-height: 600px;
  }
}
로그인 후 복사

但需要注意在较大的视口上高度不能太过高,所以我们需要设置一个最大高度,使用CSS clamp(),我们可以只用一个CSS声明来设置最小、首选和最大高度。

.hero {
  min-height: clamp(250px, 50vmax, 500px);
}
로그인 후 복사

当调整屏幕大小时,我们会看到,高度会根据视口宽度逐渐改变。在上面的例子中,50vmax表示着视口最大尺寸的 50%

CSS의 비교 기능에 대한 자세한 설명(예제 소개)

事例地址:codepen.io/shadeed/pen…

Loading Bar

CSS의 비교 기능에 대한 자세한 설명(예제 소개)

进度条一般是从左到右一个加载过程,在 CSS 中,我们可以定位在左边:

.loading-thumb {
  left: 0%;
}
로그인 후 복사

为了将进度条定位到最右边,我们可以使用 left: 100%,但这会带来一个问题。进度条会跑到容器外:

CSS의 비교 기능에 대한 자세한 설명(예제 소개)

.loading-thumb {
  left: 100%;
}
로그인 후 복사

这是正常的情况,100% 是从进度条的末端开始的,而进度条本身也有自己的宽度,所以实际宽度会大于容器的宽度。

我们可以使用 calc() 来减去的进度条宽度,这样就可以了,但这并不是100%有效:

.loading-thumb {
  /* 40px represents the thumb width. */
  left: calc(100% - 40px);
}
로그인 후 복사

我们来看下,如何利用CSS变量和比较函数来更好地实现:

.loading-thumb {
  --loading: 0%;
  --loading-thumb-width: 40px;
  position: absolute;
  top: 4px;
  left: clamp(
    0%,
    var(--loading),
    var(--loading) - var(--loading-thumb-width)
  );
  width: var(--loading-thumb-width);
  height: 16px;
}
로그인 후 복사

上面的步骤如下:

  • 首先,我们设定一个最小值为 0%

  • 首选值是 --loading

    CSS의 비교 기능에 대한 자세한 설명(예제 소개)🎜

    Lamp(), Max() 및 Min() 함수

    🎜clamp() 이 함수의 기능은 값이 상한과 하한 사이에서 값을 제한하는 것입니다. 최소값과 최대값 범위를 초과하는 경우, 최소값과 최대값 사이의 값을 선택하여 사용하세요. 최소값, 선호값, 최대값의 세 가지 매개변수를 받습니다. [학습 동영상 공유: CSS 동영상 튜토리얼, 웹 프론트엔드]🎜

    유동적인 크기 및 위치 지정

    🎜아래 예에는 아래와 같이 두 개의 이미지가 위에 배치된 휴대폰 스타일이 있습니다.🎜 🎜 CSS의 비교 기능에 대한 자세한 설명(예제 소개)🎜🎜 컨테이너 너비가 줄어들수록 이미지가 변형되지 않도록 크기를 줄여야 합니다. 일반적으로 width: 20%와 같은 백분율 단위를 사용하여 해결되지만 이 방법은 우리에게 많은 제어권을 제공하지 않습니다. 🎜🎜우리는 최소값과 최대값이 필요한 유동적인 크기를 원하며 이것이 clamp가 필요한 곳입니다. 🎜
    .loading-progress {
      width: clamp(10px, var(--loading), var(--loading) - 10px);
    }
    로그인 후 복사
    로그인 후 복사
    🎜CSS의 비교 기능에 대한 자세한 설명(예제 소개)🎜🎜 사례 주소: codepen.io/shadeed/pen…🎜

    장식 요소

    🎜때때로 페이지 모서리에 장식 요소를 추가해야 하는 경우가 있습니다. 반응형입니다. 예를 들어 PC 쪽은 다음과 같습니다(검은색 점 부분): 🎜🎜CSS의 비교 기능에 대한 자세한 설명(예제 소개)🎜🎜그러면 모바일 단말기에서는 다음과 같이 보입니다: 🎜🎜CSS의 비교 기능에 대한 자세한 설명(예제 소개)🎜🎜이를 위해 미디어 쿼리를 사용할 수 있습니다: 🎜
    .section {
      display: flex;
      flex-direction: column;
      gap: 1rem;
    }
    
    .section:before {
      content: "";
      border: 1px solid #d3d3d3;
      align-self: stretch;
    }
    
    @media (min-width: 700px) {
      .section {
        align-items: center;
        flex-direction: row;
      }
    }
    로그인 후 복사
    로그인 후 복사
    🎜이 작업이 작동하는 동안 clamp( ) 함수, 더 간결함: 🎜
    .section {
      --breakpoint: 400px;
      display: flex;
      flex-wrap: wrap;
    }
    
    .section:before {
      content: "";
      border: 2px solid lightgrey;
      width: clamp(0px, (var(--breakpoint) - 100%) * 999, 100%);
    }
    로그인 후 복사
    로그인 후 복사
    🎜예제 주소: codepen.io/shadeed/pen…🎜

    유체 높이< /a>span>

    🎜뷰포트 크기에 따라 페이지의 기본 영역 높이를 변경해야 하는 경우가 있습니다. 이 시나리오에서는 미디어 쿼리나 뷰포트 단위를 사용하여 상황을 변경하는 경향이 있습니다. 🎜🎜CSS의 비교 기능에 대한 자세한 설명(예제 소개)🎜
    .card {
      border-radius: max(
        0px,
        min(8px, calc((100vw - 4px - 100%) * 9999))
      );
    }
    로그인 후 복사
    로그인 후 복사
    🎜 고정 값과 뷰포트 단위를 혼합할 수도 있습니다. 🎜
    .wrapper {
      display: grid;  
      grid-template-columns: repeat(3, 1fr);  
      grid-gap: min(2vmax, 32px);
    }
    로그인 후 복사
    로그인 후 복사
    🎜 하지만 큰 뷰포트에서는 높이가 너무 높을 수 없으므로 CSS clamp()<를 사용하여 최대 높이를 설정해야 합니다. /code> 단 하나의 CSS 선언으로 최소 높이, 선호 높이, 최대 높이를 설정할 수 있습니다. 🎜rrreee🎜화면 크기를 조정하면 뷰포트 너비에 따라 높이가 점차 변하는 것을 볼 수 있습니다. 위의 예에서 <code>50vmax는 뷰포트 최대 크기의 50%를 나타냅니다. 🎜🎜CSS의 비교 기능에 대한 자세한 설명(예제 소개)🎜🎜사례 주소: codepen.io/shadeed/pen …🎜

    바 로드 중

    🎜< img title="166721548066686CSS의 비교 기능에 대한 자세한 설명(예제 소개)" alt="CSS의 비교 기능에 대한 자세한 설명(예제 소개)"/>🎜🎜진행률 표시줄은 다음과 같습니다. 일반적으로 왼쪽에서 오른쪽으로 로드하는 프로세스입니다. CSS에서는 왼쪽에 배치할 수 있습니다. 🎜rrreee🎜진행률 표시줄을 가장 오른쪽에 배치하려면 left: 100%를 사용할 수 있습니다. 하지만 이것은 질문을 가져올 것입니다. 진행률 표시줄은 컨테이너 외부에서 실행됩니다. 🎜🎜 8 .png🎜rrreee🎜이것은 정상적인 상황입니다. 진행률 표시줄의 끝부터 100%가 시작되며 진행률 표시줄 자체에도 고유한 너비가 있으므로 실제 너비는 컨테이너 너비보다 큽니다. . 🎜🎜calc()를 사용하여 진행률 표시줄의 너비를 뺄 수 있습니다. 이는 괜찮지만 100% 효과적이지는 않습니다. 🎜rrreee🎜CSS 변수 및 더 나은 구현을 위한 비교 기능: 🎜rrreee🎜위 단계는 다음과 같습니다. 🎜
    • 🎜먼저 최소값을 0%<로 설정합니다. /code>🎜</li><li>🎜선호되는 값은 <code>--loading CSS 변수의 현재 값입니다🎜
    • 最大值代表当前的加载量减去进度条件的宽度

    这里的CSS clamp()为我们提供了这个组件的三种不同的状态信息,这个方案很 nice:

    CSS의 비교 기능에 대한 자세한 설명(예제 소개)

    不仅如此,我们还可以以相同的方式来处理不同UI

    CSS의 비교 기능에 대한 자세한 설명(예제 소개)

    .loading-progress {
      width: clamp(10px, var(--loading), var(--loading) - 10px);
    }
    로그인 후 복사
    로그인 후 복사

    最小值等于圆圈宽度的一半,首选值是当前的加载百分比,最大值是当前百分比与圆圈一半的减去结果。

    1CSS의 비교 기능에 대한 자세한 설명(예제 소개)

    事例地址:codepen.io/shadeed/pen…

    动态分割器

    考虑下图,我们在两个区域之间有一个行分隔符。

    1CSS의 비교 기능에 대한 자세한 설명(예제 소개)

    在移动端上,这个分隔符应该变成水平的,如下图:

    1CSS의 비교 기능에 대한 자세한 설명(예제 소개)

    我的解决方案是使用一个边框和flex。思路是,边框作为伪元素,以填补垂直和水平状态的可用空间:

    .section {
      display: flex;
      flex-direction: column;
      gap: 1rem;
    }
    
    .section:before {
      content: "";
      border: 1px solid #d3d3d3;
      align-self: stretch;
    }
    
    @media (min-width: 700px) {
      .section {
        align-items: center;
        flex-direction: row;
      }
    }
    로그인 후 복사
    로그인 후 복사

    我们也可以使用 clamp 而不需要媒体查询的解决方案:

    .section {
      --breakpoint: 400px;
      display: flex;
      flex-wrap: wrap;
    }
    
    .section:before {
      content: "";
      border: 2px solid lightgrey;
      width: clamp(0px, (var(--breakpoint) - 100%) * 999, 100%);
    }
    로그인 후 복사
    로그인 후 복사

    来剖析一下上面的CSS:

    • 0px:最小值,用于垂直分隔符。它的值是 0,因为我们使用的是一个CSS边框
    • (var(--breakpoint) - 100%) * 999 是一个个切换器,根据视口宽度在 0px100% 之间切换。

    1CSS의 비교 기능에 대한 자세한 설명(예제 소개)

    动态 border Radius

    一年前,发现了一个巧妙的CSS技巧。使用CSS max()函数,根据视口宽度,将卡片的border-radius0px 切换到 8px

    1CSS의 비교 기능에 대한 자세한 설명(예제 소개)

    .card {
      border-radius: max(
        0px,
        min(8px, calc((100vw - 4px - 100%) * 9999))
      );
    }
    로그인 후 복사
    로그인 후 복사

    来剖析一下上面的CSS:

    • 我们有一个 max() 函数,在 0pxmin()的计算值之间进行比较,并选择较大的值。

    • min() 函数在 8pxcalc((100vw - 4px - 100%) * 9999 的计算值之间进行比较,这会得到一个非常大的正数或负数。

    • 9999 是一个很大的数字,这样 min 的值都是 8px

    间距

    1CSS의 비교 기능에 대한 자세한 설명(예제 소개)

    有时,我们可能需要根据视口宽度来改变一个组件或一个网格的间距。有了CS函数就不一样了,我们只需要设置一次。

    .wrapper {
      display: grid;  
      grid-template-columns: repeat(3, 1fr);  
      grid-gap: min(2vmax, 32px);
    }
    로그인 후 복사
    로그인 후 복사

    CSS의 비교 기능에 대한 자세한 설명(예제 소개)

    原文地址:https://isdeed.com/article/use-cases-css-comparison-functions/

    更多编程相关知识,请访问:编程视频!!

    위 내용은 CSS의 비교 기능에 대한 자세한 설명(예제 소개)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Vue에서 부트 스트랩을 사용하는 방법 Vue에서 부트 스트랩을 사용하는 방법 Apr 07, 2025 pm 11:33 PM

vue.js에서 bootstrap 사용은 5 단계로 나뉩니다 : Bootstrap 설치. main.js.의 부트 스트랩 가져 오기 부트 스트랩 구성 요소를 템플릿에서 직접 사용하십시오. 선택 사항 : 사용자 정의 스타일. 선택 사항 : 플러그인을 사용하십시오.

HTML, CSS 및 JavaScript의 역할 : 핵심 책임 HTML, CSS 및 JavaScript의 역할 : 핵심 책임 Apr 08, 2025 pm 07:05 PM

HTML은 웹 구조를 정의하고 CSS는 스타일과 레이아웃을 담당하며 JavaScript는 동적 상호 작용을 제공합니다. 세 사람은 웹 개발에서 의무를 수행하고 화려한 웹 사이트를 공동으로 구축합니다.

부트 스트랩에 분할 라인을 작성하는 방법 부트 스트랩에 분할 라인을 작성하는 방법 Apr 07, 2025 pm 03:12 PM

부트 스트랩 분할 라인을 만드는 두 가지 방법이 있습니다 : 태그를 사용하여 수평 분할 라인이 생성됩니다. CSS 테두리 속성을 사용하여 사용자 정의 스타일 분할 라인을 만듭니다.

HTML, CSS 및 JavaScript 이해 : 초보자 안내서 HTML, CSS 및 JavaScript 이해 : 초보자 안내서 Apr 12, 2025 am 12:02 AM

WebDevelopmentReliesonHtml, CSS 및 JavaScript : 1) HtmlStructuresContent, 2) CSSSTYLESIT, 및 3) JAVASCRIPTADDSINGINTERACTIVITY, BASISOFMODERNWEBEXPERIENCES를 형성합니다.

부트 스트랩 크기를 조정하는 방법 부트 스트랩 크기를 조정하는 방법 Apr 07, 2025 pm 03:18 PM

부트 스트랩에서 요소의 크기를 조정하려면 다음을 포함하여 차원 클래스를 사용할 수 있습니다.

부트 스트랩을위한 프레임 워크를 설정하는 방법 부트 스트랩을위한 프레임 워크를 설정하는 방법 Apr 07, 2025 pm 03:27 PM

부트 스트랩 프레임 워크를 설정하려면 다음 단계를 따라야합니다. 1. CDN을 통해 부트 스트랩 파일 참조; 2. 자신의 서버에서 파일을 다운로드하여 호스팅하십시오. 3. HTML에 부트 스트랩 파일을 포함; 4. 필요에 따라 Sass/Less를 컴파일하십시오. 5. 사용자 정의 파일을 가져옵니다 (선택 사항). 설정이 완료되면 Bootstrap의 그리드 시스템, 구성 요소 및 스타일을 사용하여 반응 형 웹 사이트 및 응용 프로그램을 만들 수 있습니다.

부트 스트랩에 사진을 삽입하는 방법 부트 스트랩에 사진을 삽입하는 방법 Apr 07, 2025 pm 03:30 PM

Bootstrap에 이미지를 삽입하는 방법에는 여러 가지가 있습니다. HTML IMG 태그를 사용하여 이미지를 직접 삽입하십시오. 부트 스트랩 이미지 구성 요소를 사용하면 반응 형 이미지와 더 많은 스타일을 제공 할 수 있습니다. 이미지 크기를 설정하고 IMG-Fluid 클래스를 사용하여 이미지를 적응할 수 있도록하십시오. IMG 통과 클래스를 사용하여 테두리를 설정하십시오. 둥근 모서리를 설정하고 IMG 라운드 클래스를 사용하십시오. 그림자를 설정하고 그림자 클래스를 사용하십시오. CSS 스타일을 사용하여 이미지를 조정하고 배치하십시오. 배경 이미지를 사용하여 배경 이미지 CSS 속성을 사용하십시오.

부트 스트랩 버튼을 사용하는 방법 부트 스트랩 버튼을 사용하는 방법 Apr 07, 2025 pm 03:09 PM

부트 스트랩 버튼을 사용하는 방법? 부트 스트랩 CSS를 소개하여 버튼 요소를 만들고 부트 스트랩 버튼 클래스를 추가하여 버튼 텍스트를 추가하십시오.

See all articles