搜尋
首頁web前端css教學display:none;與visibility:hidden;的差別

我當時回答的是,二者皆能實現隱藏元素,但是將元素設定為display:none;之後,會同時取消該元素之前佔據的文檔流空間,但是visibility:hidden;使得該元素即使不顯示,但是依舊會佔據空間。
當時是電話面試,我回答了之後,對方也沒有再繼續問與display相關的知識。
現在想起來,真的是慶幸,如果人家問我與display相關的知識,display:inline-block使用時需要注意的地方。我肯定也打不上來。

前幾天練習導航時,由於總需要將一些行內元素或區塊級元素設定為行內區塊級元素,所以我就想到display:inline-block
但是,我發現這是一個屬性值還是有些學問的。推薦這篇文章。

  • IE5.5開始,就已經開始支援inline-block,但要知道IE5.5是在2000年正式推出,但W3C在2002年才開始將這個屬性值加到css2.1草案中。

  • IE 5.5、6、7 、8(Q)中區塊級元素對inline-block 支援不完整,如果要達到類似的效果,需要先設定為display:inline,然後使用zoom:1 等觸發hasLayout(這是引起IE瀏覽器出現bug的原因,我會再詳細寫的)。 IE 5.5、6、7 、8(Q)中 inline 元素欲達到 inline-block 的效果只需直接設定此屬性值或使用 zoom:1 等均可。

  • 以下都是針對IE 5.5、6、7 、8(Q)瀏覽器而言

    • 行內元素display:inline-block
      只需要對行內元素進行display:inline-block,或是zoom:1;就可以觸發hasLayout,然後就可以設定該行內元素的寬高。
        display:inline-block;
      *zoom:1;
      在zoom前面加上*是為了讓該屬性只針對ie瀏覽器才被識別。還有其他方法。這裡細說

    • 區塊級元素display:inline-block
      區塊級元素透過display:inline-block觸發hasLayout,並不能使得該區塊級元素具備不換行的特性。這也正是支持不完整的體現,彌補方法:
      display:inline;   zoom:1;
      先轉換成行內元素,然後再讓他擁有版面。

  • 結合現代瀏覽器當我們想要讓一個元素轉換為行內區塊級元素時,需要做的就是:

     `display:inline-block;`/*兼容现代浏览器,IE6、7 行内元素*/
     `*display:inline;`/*兼容IE6、7块级元素*/

    *zoom :1;
    【另一個由行內元素引發的問題】就是行內元素之間會有一定的空白邊距,這是為什麼。
    寫上一篇筆記時我還不明白,不過看了剛才推薦的那篇博客,我倒是明白了。 瀏覽器渲染行內元素,就彷彿在渲染一個段落裡面的字,或者單字
    我們在寫hello與buddy之間有一個空格,

           <p>hello buddy</p>

    在寫行內元素時,每個行內元素之間都會習慣性的被換行

           <span>hello</span>
           <span>buddy</span>

    通常情況下,對於多個連續的空白符(空格,換行符,回車符等),瀏覽器會將他們合併為一個空白符。

  • 如何移除行內元素之間的空白間隙

    • #對行內元素的父元素使用font-size:0px;

               font-size:0px;

      除去IE6、7與safri5之前的版本使用此方法都可以除去行內元素的空白間隙。

    • 對行內元素的父元素進行letter-spacing
      這個方法可以除去safri5之前的版本的行內元素之間的空白間隙。
      行內元素之間的空白間隙與字體大小有關係,字號越大,其間隙也就越大,letter-spacing 負值的絕對值大於空隙大小後,內部行內元素會發生重疊。

              letter-spacing:-2px;//这个2px等于元素之间的间隙
    • 對行內元素的父元素進行white-space

       font-size:0;/* 所有浏览器 */
      letter-spacing:-5px;/* Safari 等不支持字体大小为 0 的浏览器 */
      `*letter-spacing:normal;`
      word-spacing:-1px;/* IE6、7 */

      上面的寫法基本上相容了各個瀏覽器。
      要注意的是,在ie6、7中為了避免letter-spacing與word-spacing之間的衝突,需要 hack 掉 letter-spacing。

  • 由于这些文本属性都会继承下去,造成行内元素内部的文字内容受到影响,所以需要为行内元素内部重新设置字体属性值。

          font-size: 12px; letter-spacing: normal; word-spacing: normal;

    刚才推荐的那篇文章,总结了代码如下:
    .dib-wrap修饰行内元素的父级元素,.dib修饰行内元素,另外需要注意由于 inline-block 具有 inline 元素的特性,在垂直方向上很多时候我们并不希望元素以「vertical-align:baseline」方式来呈现,所以在「.dib-wrap」中统一重置为「vertical-align:top」即可

          .dib-wrap {
          font-size:0;/* 所有浏览器 */
          *word-spacing:-1px;/* IE6、7 */
          }
          .dib-wrap .dib{
          font-size: 12px;
          letter-spacing: normal;
          word-spacing: normal;
          vertical-align:top;
          }
          @media screen and (-webkit-min-device-pixel-ratio:0){
          /* firefox 中 letter-spacing 会导致脱离普通流的元素水平位移 */
          .dib-wrap{
          letter-spacing:-5px;/* Safari 等不支持字体大小为 0 的浏览器, N 根据父级字体调节*/
          }
          }
          .dib {
          display: inline-block;
          `*display:inline;`
          `*zoom:1;`
          }

以上是display:none;與visibility:hidden;的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
將框陰影添加到WordPress塊和元素將框陰影添加到WordPress塊和元素Mar 09, 2025 pm 12:53 PM

CSS盒子陰影和輪廓屬性獲得了主題。讓我們查看一些在真實主題中起作用的示例,以及我們必須將這些樣式應用於WordPress塊和元素的選項。

使用智能表單框架創建JavaScript聯繫表格使用智能表單框架創建JavaScript聯繫表格Mar 07, 2025 am 11:33 AM

本教程演示了使用智能表單框架創建外觀專業的JavaScript表單(注意:不再可用)。 儘管框架本身不可用,但原理和技術仍然與其他形式的建築商相關。

揭開屏幕讀取器的神秘面紗:可訪問的表格和最佳實踐揭開屏幕讀取器的神秘面紗:可訪問的表格和最佳實踐Mar 08, 2025 am 09:45 AM

這是我們在形式可訪問性上進行的小型系列中的第三篇文章。如果您錯過了第二篇文章,請查看“以:focus-visible的管理用戶焦點”。在

創建一個具有可滿足屬性的內聯文本編輯器創建一個具有可滿足屬性的內聯文本編輯器Mar 02, 2025 am 09:03 AM

構建內聯文本編輯器並不是微不足道的。 該過程首先要使目標元素可編輯,並在此過程中處理潛在的語法異常。 創建編輯器來構建此編輯器,您需要動態修改內容

使您的第一個自定義苗條過渡使您的第一個自定義苗條過渡Mar 15, 2025 am 11:08 AM

Svelte Transition API提供了一種使組件輸入或離開文檔(包括自定義Svelte Transitions)時動畫組件的方法。

使用GraphQL緩存使用GraphQL緩存Mar 19, 2025 am 09:36 AM

如果您最近開始使用GraphQL或審查了其優點和缺點,那麼您毫無疑問聽到了諸如“ GraphQl不支持緩存”或

比較5個最佳的PHP形式構建器(和3個免費腳本)比較5個最佳的PHP形式構建器(和3個免費腳本)Mar 04, 2025 am 10:22 AM

本文探討了Envato Market上可用的PHP表單構建器腳本,比較了其功能,靈活性和設計。 在研究特定選項之前,讓我們了解PHP形式構建器是什麼以及為什麼要使用一個。 PHP形式

在node.js中使用multer上傳並上傳express在node.js中使用multer上傳並上傳expressMar 02, 2025 am 09:15 AM

該教程通過使用node.js,express和multer構建文件上傳系統來指導您。 我們將介紹單個和多個文件上傳,甚至演示在MongoDB數據庫中存儲圖像以進行以後的檢索。 首先,設置您的projec

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器