婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 詳解CSS不受控制的position fixed

詳解CSS不受控制的position fixed

熱門標簽:南通電銷外呼系統軟件 山東電銷機器人軟件 申請400電話移動 洛陽防封卡外呼系統廠家 上海400電話辦理到易號網 成都企業外呼系統 智能語音電銷機器人客戶端 常州電話外呼系統招商 廣州防封電銷機器人廠家

失效的 position:fixed

在許多情況下,position:fixed將會失效。MDN用一句話概括了這種情況:

當元素祖先的 transform 屬性非 none 時,定位容器由視口改為該祖先。

What!還有這種操作?可能有部分同學還沒 get 到上面這句話的意思,通俗的講就是指定了position:fixed的元素,如果其祖先元素存在非 none 的 transform 值 ,那么該元素將相對于設定了transform的祖先元素進行定位。

那么,為什么會發生這種情況呢?說好的相對視口(Viewport)定位呢?

這個問題,就牽涉到了 Stacking Context ,也就是堆疊上下文的概念了。解釋上面的問題分為兩步:

1.任何非 none 的 transform 值都會導致一個堆疊上下文(Stacking Context)和包含塊(Containing Block)的創建。

2.由于堆疊上下文的創建,該元素會影響其子元素的固定定位。設置了position:fixed的子元素將不會基于 viewport 定位,而是基于這個父元素。

Stacking Context -- 堆疊上下文

好的嘛,好的嘛,又冒出新的名詞了,堆疊上下文(又譯作層疊上下文),又是什么?

堆疊上下文(Stacking Context):堆疊上下文是 HTML 元素的三維概念,這些 HTML 元素在一條假想的相對于面向(電腦屏幕的)視窗或者網頁的用戶的 z 軸上延伸,HTML 元素依據其自身屬性按照優先級順序占用層疊上下文的空間。

概念比較抽象,簡單理解,記住生成了 Stacking Context 的元素會影響該元素的層疊關系與定位關系。

關于生成了 Stacking Context 的元素會影響該元素的層疊關系這一點,具體可以看看這篇文章層疊順序(stacking level)與堆棧上下文(stacking context)知多少?

而本文提到了生成了 Stacking Context 的元素會影響該元素定位關系。按照上面的說法,堆疊上下文的創建,該元素會影響其子元素的固定定位。設置了position:fixed的子元素將不會基于 viewport 定位,而是基于這個父元素。

那么問題來了,是否所有能夠生成堆疊上下文的元素,都會使得其子元素的position:fixed相對它,而不是相對視口(Viewport)進行定位呢?

創建堆疊上下文的方式

為此,首先要找到所有能夠使元素生成堆疊上下文的方法。

So,如何觸發一個元素形成堆疊上下文?方法如下(參考自MDN):

1.根元素 (HTML),

2.z-index 值不為 "auto"的 絕對/相對定位,

3.一個 z-index 值不為 "auto"的 flex 項目 (flex item),即:父元素 display: flex|inline-flex,

4.opacity 屬性值小于 1 的元素(參考 the specification for opacity),

5.transform 屬性值不為 "none"的元素,

6.mix-blend-mode 屬性值不為 "normal"的元素,

7.filter值不為“none”的元素,

8.perspective值不為“none”的元素,

9.isolation 屬性被設置為 "isolate"的元素,

10.position: fixed

11.在 will-change 中指定了任意 CSS 屬性,即便你沒有直接指定這些屬性的值

12.-webkit-overflow-scrolling 屬性被設置 "touch"的元素

接下來,我們要驗證,是否所有設置了上面屬性樣式之一的元素,都有使其子元素的position: fixed失效的能力?

為此我做了下面一個小實驗,基于最新的 Blink 內核。可戳:

層疊上下文對 fixed 定位的影響(不同瀏覽器下表現可能不一樣)

h1 {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 999;
    height: 10vh;
    line-height: 10vh;
    color: #333;
    font-size: 1.5vw;
}

select {
    height: 10vh;
    line-height: 10vh;
    font-size: 1vw;
    outline: none;
    border: 1px solid #333;
}

.container {
    width:10vw;
    height: 10vw;
    // transform: translate3d(5vw, 5vw, 0);
    // will-change: transform;
    background: rgba(255, 100, 100, .8);
}

.fixed {
    position: fixed;
    top: 1vw;
    left: 1vw;
    right: 1vw;
    bottom: 1vw;
    background: rgba(100, 100, 255, .8);
}

.g-absolute {
    position: absolute;
    z-index: 10;
}

.g-flex {
    display: flex;
    z-index: 10;
}

.g-opacity {
    opacity: .5;
}

.g-transform {
    transform: translate3d(0, 0, 0);
    // transform: scale(1);
}

.g-blend {
    mix-blend-mode: screen;
}

.g-filter {
    filter: blur(5px);
}

.g-perspective {
    perspective: 1000px;
}

.g-isolation{
    isolation: isolate;
}

.g-fixed {
    position: fixed;
}

.g-willChange {
    will-change: transform;
}

.g-scrolling {
    -webkit-overflow-scrolling: touch;
}

.g-backface {
    backface-visibility: hidden;
}

.g-preserve3d {
    transform-style: preserve-3d;
}

.g-contain {
    contain: paint;
}
div class="container"> 
  div class="fixed"> /div>
/div>
(function () {
  let old = "";
  let dom = $(".container");

  $('#select').on("change", function (e) {
    let current = $(this).val();
    dom.removeClass(old).addClass(current);
    old = current;
  });
})();

我們設置兩個父子 div,子元素fixed定位,通過修改父元素生成層疊上下文,觀察子元素的fixed定位是否不再相對視口。

div class="container">
  div class="fixed"> /div>
/div>

最初的 CSS :

.container {
    width:10vw;
    height: 10vw;
    background: rgba(255, 100, 100, .8);
}
 
.fixed {
    position: fixed;
    top: 1vw;
    left: 1vw;
    right: 1vw;
    bottom: 1vw;
    background: rgba(100, 100, 255, .8);
}

一探position:fixed失效的最終原因

通過上面的試驗,在最新的 Blink 內核下,發現并不是所有能夠生成層疊上下文的元素都會使得position:fixed失效,但也不止transform會使position:fixed失效。

所以,MDN 關于position:fixed的補充描述不夠完善。下述 3 種方式目前都會使得position:fixed定位的基準元素改變(本文重點):

1.transform屬性值不為 none 的元素

2.perspective值不為 none 的元素

3.在will-change中指定了任意 CSS 屬性

不同內核的不同表現

完了嗎?沒有!我們再看看其他內核下的表現。

上面也談到了,上述結論是在最新的 Chrome 瀏覽器下(Blink內核),經過測試發現,在 MAC 下的 Safari 瀏覽器(WebKit內核,Version 9.1.2 (11601.7.7))和 IE Trident/ 內核及 Edge 瀏覽器下,上述三種方式都不會改變position: fixed的表現!

所以,當遇到position: fixed定位基準元素改變的時候,需要具體問題具體分析,多嘗試一下,根據需要兼容適配的瀏覽器作出調整,不能一概而論。

position:fixed的其他問題

當然,position: fixed在移動端實現頭部、底部模塊定位。或者是在position: fixed中使用了 input 也會存在一些問題,這個有很多文章都描述過并且存在很多解決方案,本文不討論這塊問題。

以上就是詳解CSS不受控制的position fixed的詳細內容,更多關于CSS不受控制的position fixed的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 淺談由position屬性引申的css進階討論
  • CSS中position屬性之fixed實現div居中
  • 通過設置CSS中的position屬性來固定層的位置
  • 詳細分析css float 屬性以及position:absolute 的區別
  • 使用CSS樣式position:fixed水平滾動的方法
  • css position: absolute、relative詳解
  • 推薦深入理解css中的position定位和z-index屬性

標簽:萊蕪 混顯 滄州 邵陽 貴州 賀州 廣安 鶴壁

巨人網絡通訊聲明:本文標題《詳解CSS不受控制的position fixed》,本文關鍵詞  詳解,CSS,不,受控制,的,position,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解CSS不受控制的position fixed》相關的同類信息!
  • 本頁收集關于詳解CSS不受控制的position fixed的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美一区二区三区视频免费| 不卡视频在线观看| 亚洲自拍偷拍图区| 国产精品家庭影院| 国产精品福利在线播放| 亚洲欧美日韩综合aⅴ视频| 日韩美女精品在线| 亚洲风情在线资源站| 午夜在线电影亚洲一区| 日韩—二三区免费观看av| 午夜国产精品影院在线观看| 日韩中文字幕亚洲一区二区va在线 | 日日夜夜精品免费视频| 亚洲一区二区在线免费看| 午夜不卡av免费| 久久99精品国产麻豆婷婷洗澡| 日本欧美一区二区在线观看| 久久国产欧美日韩精品| 国产98色在线|日韩| 99久久精品情趣| 欧美亚洲高清一区二区三区不卡| 欧美日韩一区二区三区四区| 日韩一区二区三区电影在线观看| 久久综合狠狠综合| 国产精品久久久久9999吃药| 亚洲国产精品久久艾草纯爱| 麻豆一区二区99久久久久| 欧美丝袜丝交足nylons图片| 欧美日韩不卡视频| 久久久久综合网| 亚洲男人的天堂一区二区| 日韩二区三区在线观看| 成人天堂资源www在线| 欧美影视一区在线| 国产色一区二区| 午夜激情综合网| 99精品在线免费| 91精品国产综合久久精品图片| 久久久久久久精| 亚洲国产欧美在线| 国产二区国产一区在线观看| 在线免费观看日韩欧美| 精品国产一区二区在线观看| 一区二区成人在线| 国产福利一区在线| 这里只有精品99re| 亚洲精品一卡二卡| 国产在线精品国自产拍免费| 欧美日韩免费高清一区色橹橹| 欧美国产1区2区| 日本视频在线一区| 色综合久久久久综合| 国产精品视频一区二区三区不卡| 日韩成人一级大片| 欧美日韩在线一区二区| 国产精品免费观看视频| 国产综合一区二区| 欧美一区二区三区啪啪| 亚洲欧美另类久久久精品| 国产乱码精品一区二区三区忘忧草 | 欧美激情在线观看视频免费| 一区二区高清视频在线观看| 盗摄精品av一区二区三区| 欧美本精品男人aⅴ天堂| 日韩中文字幕一区二区三区| 欧美午夜在线观看| 一区二区三区在线影院| 99久久精品免费看国产免费软件| 久久精品免视看| 国产精华液一区二区三区| 久久久久久久久久美女| 国产精品一区专区| 久久欧美一区二区| 国产精品一二三区| 久久久精品tv| 国产成人免费视频精品含羞草妖精| 久久久久久久久蜜桃| 国产黄人亚洲片| 国产精品嫩草久久久久| 不卡视频一二三| 国产精品国产成人国产三级| 99久久99精品久久久久久| 亚洲欧美日韩在线| 欧美午夜电影网| 日本美女视频一区二区| 3d动漫精品啪啪一区二区竹菊| 奇米在线7777在线精品| 欧美精品一区二区三区蜜臀| 国产精品一级黄| 日本一区二区久久| 一本色道久久综合精品竹菊| 午夜电影一区二区三区| 久久亚洲欧美国产精品乐播| 成人午夜在线播放| 一区二区不卡在线播放 | 日韩一区二区三区视频在线观看| 美女国产一区二区| 国产精品美女久久久久久| 欧美性高清videossexo| 黑人巨大精品欧美一区| 亚洲视频中文字幕| 在线不卡免费欧美| 国产成人精品亚洲777人妖| 一区二区日韩电影| 久久综合九色欧美综合狠狠| av高清久久久| 日本va欧美va瓶| 亚洲图片另类小说| 日韩欧美国产午夜精品| 国产在线精品免费| 亚洲成人精品在线观看| 久久久久久久久久久久久女国产乱 | 91免费小视频| 久久99九九99精品| 国产精品国产馆在线真实露脸 | 国产精品18久久久久久vr| 伊人婷婷欧美激情| 国产欧美一区二区精品性色| 欧美精品一级二级| 91视视频在线观看入口直接观看www| 蜜臀av在线播放一区二区三区| 亚洲日本韩国一区| 久久久久99精品一区| 欧美日韩精品一区二区三区| 成人免费视频视频| 麻豆精品在线观看| 午夜电影网一区| 一区二区三区四区中文字幕| 国产精品入口麻豆原神| 精品国产青草久久久久福利| 678五月天丁香亚洲综合网| 色哟哟一区二区| 99久久777色| av在线播放成人| 国产精一品亚洲二区在线视频| 午夜电影网一区| 亚洲午夜久久久久久久久电影网| 国产精品国产三级国产普通话三级 | 久久精品亚洲麻豆av一区二区 | 暴力调教一区二区三区| 国产一区二区三区黄视频 | 国产精品亲子伦对白| 久久丝袜美腿综合| 精品久久久久久久久久久院品网| 欧美猛男超大videosgay| 欧洲精品在线观看| 97久久精品人人做人人爽50路 | 国产伦精品一区二区三区视频青涩| 日韩国产欧美三级| 欧美aaa在线| 精品一区二区精品| 国产高清久久久| 成人午夜av影视| 99国产精品久| 日本高清成人免费播放| 欧美熟乱第一页| 欧美一卡二卡在线| 久久婷婷成人综合色| 国产精品国产成人国产三级| 亚洲女子a中天字幕| 亚洲国产欧美另类丝袜| 日韩精品电影一区亚洲| 美女视频黄频大全不卡视频在线播放| 日韩影院精彩在线| 国产精品亚洲专一区二区三区| 成人黄色小视频| 色老头久久综合| 欧美va亚洲va国产综合| 久久午夜国产精品| 亚洲欧美日韩久久| 日韩精品一卡二卡三卡四卡无卡| 另类成人小视频在线| 国产精品1区2区3区在线观看| 色婷婷激情综合| 欧美高清视频在线高清观看mv色露露十八| 91.成人天堂一区| 久久综合九色综合97婷婷| 亚洲欧洲av在线| 日韩成人dvd| 99精品视频一区| 欧美一级xxx| 国产精品午夜在线观看| 一级中文字幕一区二区| 蜜臀久久99精品久久久久宅男| 国产电影精品久久禁18| 欧美性色黄大片| 国产精品久久久久aaaa| 蜜桃av一区二区| 欧美影院午夜播放| 国产欧美精品一区aⅴ影院| 三级欧美在线一区| 色噜噜狠狠色综合中国| 久久久噜噜噜久久人人看| 午夜精品一区二区三区三上悠亚| 成人妖精视频yjsp地址| 88在线观看91蜜桃国自产| 一区在线观看免费| 韩国成人在线视频| 91精品国产一区二区三区蜜臀| 亚洲伦理在线精品|