日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

你會用容器查詢適配屏幕嗎?只知道媒體查詢?

freeflydom
2025年4月14日 9:1 本文熱度 170

前言

最近遇到一個需求,把業務封裝成卡片組件,然后通過npm發布上去給客戶進行使用,但是客戶很多項目用到甚至還有移動端,這就需要適配多套樣式,這怎么辦???

然后想到使用媒體查詢適配但是媒體查詢是識別視口寬度的用了也不生效啊怎么辦???這個時候就要想到一個比較新的布局特性容器查詢

下面一步步舉例說明容器查詢的作用和用法

什么是容器查詢?

媒體查詢

要說容器查詢,那么我們先了解一下類似的媒體查詢-----根據不同的視口像素顯現不同的樣式。

直接看看效果和實現代碼。

  .test {
    height: 1000px;
    width: 100%;
    background-color: #f8f6f6;
    color: #1c0d0d;
    display: flex;
    justify-content: center;
    align-items: center;
    
    .test-c {
      height: 100px;
      width: 300px;
      border: 1px solid red;
    }
    // 尺寸(1024px 及以下)
    @media (max-width: 1024px) {
      .test-c {
        height: 60px;
        width: 200px;
      }
    }
  }

如上所示例子,媒體查詢是用@media屬性去實現,例如@media (max-width: 1024px)就是當視口像素小于1024時展示里面的樣式,通過這個方式可以適配不同的屏幕

媒體查詢的用法思路就是這樣,更具體的用法這里就不細說了

容器查詢

上述媒體查詢只能識別視口,但使用容器查詢可以更加強大----通過識別父容器的像素變化而變化。

下面看個簡單的小例子感受一下

上述容器查詢例子,里面兩個方塊是基于父容器的實際寬度動態樣式,而不是媒體查詢那樣視口寬度進行動態樣式,比媒體查詢會更靈活。

容器查詢用法

簡而言之容器查詢使用contain 屬性結合 @container 規則實現,具體語法如下所示。

1、 contain其實是 container-type和container-name的簡寫,語法格式是格式為container: name / type 把目標元素標記為容器。

三者的具體屬性如下所示。

一 、container-type 容器具體的類型:

size: 寬度和高度均可以被識別響應。

inline-size: 寬度可以被識別響應。

block-size: 高度可以被識別響應。

二、container-name 具體的查詢標識:

直接輸入自定義的名稱,如果多個用逗號分隔開,例如:container-name: test, test2;

三、container 是簡寫屬性:

語法:container: name / type 例如:container: test / size;

2、@container 的用法跟媒體查詢的@media很相似。

相關屬性,如下常用屬性可選

min-width 與 max-width:限制容器的寬度觸發。

min-height 與 max-height:限制容器的高度觸發。

orientation:識別容器的橫屏或豎屏方向,landscapess橫屏/portraitj豎屏。

aspect-ratio:識別容器的寬高比變化。

這樣使用,例如識別容器的寬高比變化的例子如下

.test {
    container-type: size; // 簡寫容器類型
    container-name: test-name;
    resize: both;
    overflow: auto;
    margin: 20px;
    border: 2px dashed #666;
    min-width: 200px;
    min-height: 200px;
    background: #f0f0f0;
    margin: 100px;
    // 橫屏樣式
    @container test-name (min-aspect-ratio: 1/1) {
      .test-c {
        flex-direction: row;
        .left {
          background: #e8f5e9;
          &::after {
            content: '(容器寬高比大于等于1)';
          }
        }
      }
    }
    // 豎屏樣式
    @container test-name (max-aspect-ratio: 1/1) {
      .test-c {
        flex-direction: column;
        .right {
          background: #fff3e0;
          &::after {
            content: '(容器寬高比小于1)';
          }
        }
      }
    }
  }

上面是主要的核心代碼示例重點是2、3和14行代碼,就是container-type: size;與 container-name: test-name; 結合@container使用。

注意:如果沒有指定 container-name作為響應的基準,@container 默認識別最近的具有 container-type 屬性的容器作為響應基準。

小結

看完下來你可能會發現容器查詢非常適合通用組件的封裝,這個很好理解,就是讓組件樣式能靈活兼容父層級的大小尺寸,這個是媒體查詢無法做到的。

容器查詢就像給網頁元素裝了個"監聽器",讓它們能根據所在容器的大小自動調整樣式。比如你把一個組件放進不同大小的iframe里,它自己就知道該變寬還是變窄,根本不用擔心布局錯亂了。

傳統媒體查詢只能看瀏覽器窗口大小,而容器查詢直接盯著自己的父容器尺寸。只要在父元素加上container屬性,子元素用@container就能根據這個容器的大小變化調整布局,特別適合做可復用的組件。

好像現在主流瀏覽器基本都支持這個特性了,小伙伴們做嵌套布局或需要組件自適應的時候試試。雖然剛開始用可能有點不習慣,但掌握了就會發現它真香啊,能解決很多實際開發中的布局問題。

轉自https://juejin.cn/post/7492373338410238002
?


該文章在 2025/4/14 9:01:30 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产精品202| 国产青草视频在线观看 | 亚洲一区国产一区日韩一区 | 国产日韩精品一区二区 | 99在线观看免费 | 亚洲一级二级三级精品 | 手机在线观看日韩电影大片 | 国产精品亚洲精品五月 | 欧美不卡一区二区三区 | 这里只有精品首页 | 好吊视频一区二区三区 | 99精品欧美一区二区三区 | 国产另类日韩制 | 136福利 | 凄辱护士日本电影免费看 | 国产偷伦视频片免费视频 | 国产精品1024永久免费中国 | 日韩一区二区手机免费观看 | 亚洲成aⅴ人片在线观看www | 免费播放 | 日本日本乱码伦视频在线观看 | 美足脚交国产在线观看 | 交换配一点不卡 | 国产综合一区 | 日韩不卡手机视频在线观看 | 亚洲欧美色一区二区三区精品 | 区小说区激情区图片区 | a人妖亚洲| 日韩成人精品视频 | 午夜理论片y | 在线观看欧美a级精品视频 电影中文 | 国产91精品一区二区 | 欧美性受xxxx黑人猛交免费 | 日韩精品日韩 | 国产极品美女一区二区三区 | 国产做爰一区二区 | 国产人成中文字幕 | 最新电影电 | 精品亚洲日韩国产一二三区 | 2025最新在线观影网站 | 小苹果www在线 |