<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        CSS3transform對HTML文檔流帶來的影響

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 18:53:22
        文檔

        CSS3transform對HTML文檔流帶來的影響

        CSS3transform對HTML文檔流帶來的影響:html 總是那么的驚奇來源于硬件加速年初的一個筆記,閑時整理出來。很多網(wǎng)上文章都說建議打開瀏覽器的硬件加速,這樣頁面渲染速度、動畫流暢性會提高。這幾乎成了很多人頁面制作的標配,管實際有沒有用都來一個: html,body { transform: tra
        推薦度:
        導讀CSS3transform對HTML文檔流帶來的影響:html 總是那么的驚奇來源于硬件加速年初的一個筆記,閑時整理出來。很多網(wǎng)上文章都說建議打開瀏覽器的硬件加速,這樣頁面渲染速度、動畫流暢性會提高。這幾乎成了很多人頁面制作的標配,管實際有沒有用都來一個: html,body { transform: tra

        來源于“硬件加速”

        年初的一個筆記,閑時整理出來。

        很多網(wǎng)上文章都說建議打開瀏覽器的硬件加速,這樣頁面渲染速度、動畫流暢性會提高。這幾乎成了很多人頁面制作的標配,管實際有沒有用都來一個:

         html,body {
         transform: translate3d(0,0,0);
         }

        但這在很多情況下會引起 html 層級文檔流的“異常”。
        W3C spec 中有如下描述:

        In the HTML namespace, any value other than none for the transform results in the creation of both a stacking context and a containing block.
        The object acts as a containing block for fixed positioned descendants.

        意思是:
        在 HTML 內(nèi),沒有比對一個即是層疊對象又是容器塊的 DOM 進行 transform 變換更沒有意義的了。
        這類對象也扮演著 positioned(主要是 absolute/fixed ) 子孫元素容器的角色。

        。。翻譯能力有限,不理解的人估計這句話看了后更暈,下面詳述。

        標準文檔流

        頁面中的 dom 元素按照其在 HTML 中的標簽位置順序進行從上到下、從左往右的排布過程

        想必大家對這個基礎的定義已經(jīng)很熟悉了吧。但是,這個究竟在實際中有什么體現(xiàn)呢?

        如果你在頁面中放置一大堆 display: inline-block 的元素,它們會很乖巧的 上 -> 下 左 -> 右 排的很整齊。這就是標準文檔流的基礎體現(xiàn)。

        當你用positionfloat等屬性使其脫離文檔流時,就會又產(chǎn)生一個頁面 層級 的概念。(扯遠了...)

        transform 改變定位默認屬性

        例子代碼如下:

         <body>
         <header style="position: fixed; top: 0; width: 100%; background: red;">header</header>
         <p style="height: 2000px;"></p>
         <footer style="position: fixed; bottom: 0; width: 100%; background: blue;">footer</footer>
         </body>

        點擊查看例子

        dom 元素的默認定位屬性是 position: static; 這也是標準文檔流的標準定位方式。

        例子中,不管 p 怎么上下滾動,header 和 footer 會永遠置于屏幕的最上和最下部。

        但是如最初所述,給 bodyhtml 加上一個 transform: translate3d(0,0,0);,你再去試,就會發(fā)現(xiàn),原本 position: fixed; 的兩個元素都不聽話了,會隨著屏幕進行滾動。

        實際上,position: fixed; 的參考對象并不是大家所說的屏幕,而是一個 viewport 的html對象,一般地一個頁面(document.documentElement)會生成一個 viewport。

        你用 document.documentElement.clientHeight 就可以的看到實際 viewport 的高度,其中 fixed 的元素都是以此為容器進行定位的。

        body(或html) 加了 transform 屬性以后,整個 body DOM 既會產(chǎn)生相應的變換,但此時的“整個”僅是指 body 下標準文檔流元素,對于那些 position: absolute; / position: fixed; 元素,因為已經(jīng)脫離了 body 所屬的文檔流,所以無法憑借 body 的變換使自己也自然的達到相應的變換效果。

        此時,瀏覽器為了讓此類 DOM 得到相應的變化,會產(chǎn)生一個新的 viewport,這個 viewport 作為定位元素的容器存在,會響應 body 的 transform 變換效果,從而讓里面那些脫離文檔流的 positioned 元素也能進行變換。

        這個 viewport 會嚴重影響 position: fixed; 的定位,當它隨著“本尊”dom同步滾動的時候,會帶著 fixed 元素一塊滾,此時會產(chǎn)生一種類似 absolute 的詭異效果:

        fixed 元素似乎變成了 absolute,存在于一個和document.documentElement大小一致的“看不見”容器內(nèi)。

        引申情況

        在一些移動端設備(或APP)上,給 <video> 標簽的播放默認開啟的硬解碼,此時也會產(chǎn)生上述現(xiàn)象,視頻會"浮"在頁面上面,不會隨頁面元素正常滾動。

        還有一些低版本移動端瀏覽器上,也會出現(xiàn)類似的情況,可按此思路嘗試解決。

        總結(jié)

        其實上面的情況不只會發(fā)生在 body 上,一個任意的 dom 添加了 transform 之后都會生產(chǎn)一個類似 viewport 的效果,有興趣可以去嘗試。

        引用:
        http://www.gxlcms.com/

        html 總是那么的驚奇

        來源于“硬件加速”

        年初的一個筆記,閑時整理出來。

        很多網(wǎng)上文章都說建議打開瀏覽器的硬件加速,這樣頁面渲染速度、動畫流暢性會提高。這幾乎成了很多人頁面制作的標配,管實際有沒有用都來一個:

         html,body {
         transform: translate3d(0,0,0);
         }

        但這在很多情況下會引起 html 層級文檔流的“異常”。
        W3C spec 中有如下描述:

        In the HTML namespace, any value other than none for the transform results in the creation of both a stacking context and a containing block.
        The object acts as a containing block for fixed positioned descendants.

        意思是:
        在 HTML 內(nèi),沒有比對一個即是層疊對象又是容器塊的 DOM 進行 transform 變換更沒有意義的了。
        這類對象也扮演著 positioned(主要是 absolute/fixed ) 子孫元素容器的角色。

        。。翻譯能力有限,不理解的人估計這句話看了后更暈,下面詳述。

        標準文檔流

        頁面中的 dom 元素按照其在 HTML 中的標簽位置順序進行從上到下、從左往右的排布過程

        想必大家對這個基礎的定義已經(jīng)很熟悉了吧。但是,這個究竟在實際中有什么體現(xiàn)呢?

        如果你在頁面中放置一大堆 display: inline-block 的元素,它們會很乖巧的 上 -> 下 左 -> 右 排的很整齊。這就是標準文檔流的基礎體現(xiàn)。

        當你用positionfloat等屬性使其脫離文檔流時,就會又產(chǎn)生一個頁面 層級 的概念。(扯遠了...)

        transform 改變定位默認屬性

        例子代碼如下:

         <body>
         <header style="position: fixed; top: 0; width: 100%; background: red;">header</header>
         <p style="height: 2000px;"></p>
         <footer style="position: fixed; bottom: 0; width: 100%; background: blue;">footer</footer>
         </body>

        點擊查看例子

        dom 元素的默認定位屬性是 position: static; 這也是標準文檔流的標準定位方式。

        例子中,不管 p 怎么上下滾動,header 和 footer 會永遠置于屏幕的最上和最下部。

        但是如最初所述,給 bodyhtml 加上一個 transform: translate3d(0,0,0);,你再去試,就會發(fā)現(xiàn),原本 position: fixed; 的兩個元素都不聽話了,會隨著屏幕進行滾動。

        實際上,position: fixed; 的參考對象并不是大家所說的屏幕,而是一個 viewport 的html對象,一般地一個頁面(document.documentElement)會生成一個 viewport。

        你用 document.documentElement.clientHeight 就可以的看到實際 viewport 的高度,其中 fixed 的元素都是以此為容器進行定位的。

        body(或html) 加了 transform 屬性以后,整個 body DOM 既會產(chǎn)生相應的變換,但此時的“整個”僅是指 body 下標準文檔流元素,對于那些 position: absolute; / position: fixed; 元素,因為已經(jīng)脫離了 body 所屬的文檔流,所以無法憑借 body 的變換使自己也自然的達到相應的變換效果。

        此時,瀏覽器為了讓此類 DOM 得到相應的變化,會產(chǎn)生一個新的 viewport,這個 viewport 作為定位元素的容器存在,會響應 body 的 transform 變換效果,從而讓里面那些脫離文檔流的 positioned 元素也能進行變換。

        這個 viewport 會嚴重影響 position: fixed; 的定位,當它隨著“本尊”dom同步滾動的時候,會帶著 fixed 元素一塊滾,此時會產(chǎn)生一種類似 absolute 的詭異效果:

        fixed 元素似乎變成了 absolute,存在于一個和document.documentElement大小一致的“看不見”容器內(nèi)。

        引申情況

        在一些移動端設備(或APP)上,給 <video> 標簽的播放默認開啟的硬解碼,此時也會產(chǎn)生上述現(xiàn)象,視頻會"浮"在頁面上面,不會隨頁面元素正常滾動。

        還有一些低版本移動端瀏覽器上,也會出現(xiàn)類似的情況,可按此思路嘗試解決。

        總結(jié)

        其實上面的情況不只會發(fā)生在 body 上,一個任意的 dom 添加了 transform 之后都會生產(chǎn)一個類似 viewport 的效果,有興趣可以去嘗試。

        更多CSS3 transform 對HTML文檔流帶來的影響相關文章請關注PHP中文網(wǎng)!

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        CSS3transform對HTML文檔流帶來的影響

        CSS3transform對HTML文檔流帶來的影響:html 總是那么的驚奇來源于硬件加速年初的一個筆記,閑時整理出來。很多網(wǎng)上文章都說建議打開瀏覽器的硬件加速,這樣頁面渲染速度、動畫流暢性會提高。這幾乎成了很多人頁面制作的標配,管實際有沒有用都來一個: html,body { transform: tra
        推薦度:
        標簽: 文檔 影響 html
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产麻豆成人传媒免费观看| 一级黄色免费大片| 色se01短视频永久免费| 亚洲综合久久久久久中文字幕| 国产精品免费AV片在线观看| 亚洲国产另类久久久精品黑人| 女同免费毛片在线播放| 日本亚洲欧洲免费天堂午夜看片女人员| 国产午夜精品久久久久免费视 | 亚洲 小说区 图片区 都市| 一二三四在线观看免费中文在线观看| 亚洲人成电影网站国产精品| 91精品全国免费观看青青| 亚洲女久久久噜噜噜熟女| 久久九九AV免费精品| 777亚洲精品乱码久久久久久 | 一级毛片大全免费播放| 亚洲成A∨人片在线观看不卡 | 黄色网址在线免费| 亚洲天堂福利视频| 午夜影视在线免费观看| 免费一级特黄特色大片| 国产精品亚洲一区二区三区在线| 久章草在线精品视频免费观看| 亚洲福利秒拍一区二区| 日本午夜免费福利视频| 国产精品极品美女自在线观看免费 | 中日韩亚洲人成无码网站| 免费中文字幕不卡视频| a级在线免费观看| 国产成人精品亚洲2020| 免费一级毛片不卡不收费| 无码人妻精品中文字幕免费 | 亚洲美女视频免费| 国产成人一区二区三区免费视频| 成在线人视频免费视频| 亚洲国产亚洲综合在线尤物| 免费一级毛片女人图片| 2021在线观看视频精品免费| 边摸边吃奶边做爽免费视频99 | 亚洲无码一区二区三区|