目錄
Clamp(), Max(), 和Min() 函數
#流體的尺寸與定位" >#流體的尺寸與定位
裝飾性元素" >裝飾性元素
流體高度" >流體高度
Loading Bar" >Loading Bar
动态分割器" >动态分割器
动态 border Radius" >动态 border Radius
间距" >间距
首頁 web前端 css教學 詳解css中的比較函數(範例介紹)

詳解css中的比較函數(範例介紹)

Oct 31, 2022 pm 07:32 PM
css

CSS比較函數從2020年4月就開始支援了,我喜歡使用這些函數,但最喜歡的是 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變數的目前值

  • 最大值代表当前的加载量减去进度条件的宽度

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

詳解css中的比較函數(範例介紹)

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

詳解css中的比較函數(範例介紹)

.loading-progress {
  width: clamp(10px, var(--loading), var(--loading) - 10px);
}
登入後複製

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

1詳解css中的比較函數(範例介紹)

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

动态分割器

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

1詳解css中的比較函數(範例介紹)

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

1詳解css中的比較函數(範例介紹)

我的解决方案是使用一个边框和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% 之间切换。

1詳解css中的比較函數(範例介紹)

动态 border Radius

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

1詳解css中的比較函數(範例介紹)

.card {
  border-radius: max(
    0px,
    min(8px, calc((100vw - 4px - 100%) * 9999))
  );
}
登入後複製

来剖析一下上面的CSS:

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

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

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

间距

1詳解css中的比較函數(範例介紹)

有时,我们可能需要根据视口宽度来改变一个组件或一个网格的间距。有了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 Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

vue中怎麼用bootstrap vue中怎麼用bootstrap Apr 07, 2025 pm 11:33 PM

在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

HTML,CSS和JavaScript的角色:核心職責 HTML,CSS和JavaScript的角色:核心職責 Apr 08, 2025 pm 07:05 PM

HTML定義網頁結構,CSS負責樣式和佈局,JavaScript賦予動態交互。三者在網頁開發中各司其職,共同構建豐富多彩的網站。

了解HTML,CSS和JavaScript:初學者指南 了解HTML,CSS和JavaScript:初學者指南 Apr 12, 2025 am 12:02 AM

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

bootstrap怎麼寫分割線 bootstrap怎麼寫分割線 Apr 07, 2025 pm 03:12 PM

創建 Bootstrap 分割線有兩種方法:使用 標籤,可創建水平分割線。使用 CSS border 屬性,可創建自定義樣式的分割線。

bootstrap怎麼設置框架 bootstrap怎麼設置框架 Apr 07, 2025 pm 03:27 PM

要設置 Bootstrap 框架,需要按照以下步驟:1. 通過 CDN 引用 Bootstrap 文件;2. 下載文件並將其託管在自己的服務器上;3. 在 HTML 中包含 Bootstrap 文件;4. 根據需要編譯 Sass/Less;5. 導入定製文件(可選)。設置完成後,即可使用 Bootstrap 的網格系統、組件和样式創建響應式網站和應用程序。

bootstrap怎麼插入圖片 bootstrap怎麼插入圖片 Apr 07, 2025 pm 03:30 PM

在 Bootstrap 中插入圖片有以下幾種方法:直接插入圖片,使用 HTML 的 img 標籤。使用 Bootstrap 圖像組件,可以提供響應式圖片和更多樣式。設置圖片大小,使用 img-fluid 類可以使圖片自適應。設置邊框,使用 img-bordered 類。設置圓角,使用 img-rounded 類。設置陰影,使用 shadow 類。調整圖片大小和位置,使用 CSS 樣式。使用背景圖片,使用 background-image CSS 屬性。

bootstrap按鈕怎麼用 bootstrap按鈕怎麼用 Apr 07, 2025 pm 03:09 PM

如何使用 Bootstrap 按鈕?引入 Bootstrap CSS創建按鈕元素並添加 Bootstrap 按鈕類添加按鈕文本

bootstrap怎麼調整大小 bootstrap怎麼調整大小 Apr 07, 2025 pm 03:18 PM

要調整 Bootstrap 中元素大小,可以使用尺寸類,具體包括:調整寬度:.col-、.w-、.mw-調整高度:.h-、.min-h-、.max-h-

See all articles