【CSS in Depth 2精譯】2.5 無單位的數值與行高

當前內容所在位置

  • 第一章 層疊、優先級與繼承
  • 第二章 相對單位
    • 2.1 相對單位的威力
    • 2.2 em 與 rem
    • 2.3 告別像素思維
    • 2.4 視口的相對單位
    • 2.5 無單位的數值與行高 ??
    • 2.6 自定義屬性
    • 2.7 本章小結

2.5 無單位的數值與行高

有些屬性允許使用無單位的數值(unitless values,即沒有指定單位的數字)。支持無單位值的屬性(properties)包括 line-heightz-indexfont-weight(700 相當于 bold 粗體字;400 相當于 normal 常規大小等等);此外,還可以在任何設置長度單位(如 pxemrem)的地方使用無單位數值 0,因為在這些情況下單位并不重要——0px0%0em 均等效。

警告

無單位的 0 只能用于長度值和百分比,例如內邊距(paddings)、邊框(borders)和寬度(widths);0 不可用于角度值,例如度,或者與時間相關的值,例如秒。

line-height 屬性比較特殊,其屬性值既可以是帶單位的值,也可以不帶單位。通常應該使用無單位的值,因為二者的繼承方式有所不同。讓我們在頁面中輸入文字,看看不帶單位的行高是什么效果。按如下代碼更新頁面:

代碼清單 2.15 繼承 line-height 的 HTML

<body><p class="about-us">We have built partnerships with small farms around the world tohand-select beans at the peak of season. We then carefully roast insmall batches to maximize their potential.</p>
</body>

接下來給 body 正文元素指定行高,并讓頁面其他元素繼承該行高。可以看到,無論怎么調整頁面字號,行高都會正常顯示(如圖 2.12 所示):

圖 2.12 圖 為每個后代元素重新計算無單位的行高,往往會產生間距適中的文本行
圖 2.12 圖 為每個后代元素重新計算無單位的行高,往往會產生間距適中的文本行

按代碼清單 2.16 更新樣式表。該段落的行高為繼承過來的 1.2。由于字號為 32px2em × 16px,瀏覽器默認值),因此本地計算的行高為 38.4px32px × 1.2)。這將在行與行之間留出適當的空間。

代碼清單 2.16 無單位的數值定義的行高

body {line-height: 1.2;  /* 后代元素繼承了無單位的值 */
}
.about-us {font-size: 2em;
}

如果用帶單位的值來設置行高,則可能產生意想不到的結果,如圖 2.13 所示,每行文字會相互重疊。代碼清單 2.17 為對應的 CSS 樣式。

圖 2.13 使用帶單位的行高在繼承給子元素時間距可能達不到預期
圖 2.13 使用帶單位的行高在繼承給子元素時間距可能達不到預期

代碼清單 2.17 用帶單位的值定義行高,產生了意想不到的結果

body {line-height: 1.2em; /* 后代元素繼承了計算值(19.2px) */
}
.about-us {font-size: 2em; /* 計算值為 32px */
}

這些效果是由于繼承的一個怪異特性所造成的:當一個元素的值是用長度(pxemrem 等)定義時,其 計算值 會被子元素繼承。當使用 em 等相對單位設置行高時,它們的具體大小會被先計算出來,然后再將該計算值繼承給子元素。對于行高 line-height 屬性,如果子元素的字號與該計算值對應的字號不一致,就會導致像文字重疊這樣意想不到的結果。

而當使用的是無單位數值時,被繼承的是該聲明值,也就是說其計算值將在每個繼承的子元素中重新計算。這樣得出的結果幾乎總是我們所希望的。我們可以用一個無單位的數值給 body 設置行高,之后就不用修改了,除非個別地方需要其他不一樣的行高。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41496.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41496.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41496.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【數據結構與算法】快速排序挖坑法

&#x1f493; 博客主頁&#xff1a;倔強的石頭的CSDN主頁 &#x1f4dd;Gitee主頁&#xff1a;倔強的石頭的gitee主頁 ? 文章專欄&#xff1a;《數據結構與算法》 期待您的關注 ?

前端面試題16(跨域問題)

跨域問題源于瀏覽器的同源策略&#xff08;Same-origin policy&#xff09;&#xff0c;這一策略限制了來自不同源的“寫”操作&#xff08;比如更新、刪除數據等&#xff09;&#xff0c;同時也限制了讀操作。當一個網頁嘗試請求與自身來源不同的資源時&#xff0c;瀏覽器會阻…

網絡配置文件中type

在網絡配置文件中&#xff0c;type是一個參數&#xff0c;用于指定網絡接口的類型。它指定了網絡接口所使用的協議或技術。 以下是一些常見的type參數值&#xff1a; “ethernet”&#xff1a;表示以太網接口&#xff0c;用于連接以太網設備&#xff0c;如有線網卡。 “wifi”…

Python實現ABC人工蜂群優化算法優化隨機森林回歸模型(RandomForestRegressor算法)項目實戰

說明&#xff1a;這是一個機器學習實戰項目&#xff08;附帶數據代碼文檔視頻講解&#xff09;&#xff0c;如需數據代碼文檔視頻講解可以直接到文章最后獲取。 1.項目背景 人工蜂群算法(Artificial Bee Colony, ABC)是由Karaboga于2005年提出的一種新穎的基于群智能的全局優化…

PD虛擬機不能復制Mac的文件怎么回事 PD虛擬機不能復制Mac的文件怎么辦 Parallels Desktop怎么用

PD虛擬機不僅能提供跨系統協作的服務&#xff0c;還能進行虛擬機系統與原生系統間的文件共享、文本復制、文件復制等操作&#xff0c;讓系統間的資源可以科學利用。但在實際操作過程中&#xff0c;PD虛擬機不能復制Mac的文件怎么回事&#xff1f;PD虛擬機不能復制Mac的文件怎么…

linux centos7.9 安裝mysql5.7;root設置客戶端登錄、配置并發、表名大小寫敏感等

查看centos版本 cat /etc/centos-releasecentos版本為7.9 查看是否已安裝mariadb,安裝了需要先刪除 1.查看是否安裝了mariadb和mysql,安裝了需要先刪除 mariadb是mysql的一個分支,但要安裝mysql需要刪除它 執行rpm -qa|grep mariadb,查看mariadb情況 查找到有就刪除 執行…

中小學白名單編程競賽:精英競技場的深度解析

目錄 1. 引言2. 特點3. 為什么參加白名單編程競賽4. 具體競賽介紹4.1 全國中小學信息技術創新與實踐大賽(NOC大賽)4.1.1 面向對象4.1.2 考試內容4.1.3 賽事特點4.1.4 報名時間4.1.5 含金量4.1.6 優缺點4.1.7 賽事流程4.2 藍橋杯大賽4.2.1 面向對象4.2.2 考試內容4.2.3 賽事特…

Day59 動態規劃part12

LC115不同的子序列&#xff08;未掌握&#xff09; 遞推公式與LC392類似&#xff0c;但是初始化略有不同 LC392的dp數組含義為相同字符個數而本體的dp數組含義為出現的次數&#xff0c;因此dp[i][0]1 兩種情況 s[i-1]t[j-1] dp[i][j] dp[i-1][j-1]dp[i][j] dp[i-1][j] s[…

Kubernetes集群性能測試之kubemark集群搭建

Kubernetes集群性能測試之kubemark集群搭建 Kubemark是K8s官方提供的一個對K8s集群進行性能測試的工具。它可以模擬出一個K8s cluster&#xff08;Kubemark cluster&#xff09;&#xff0c;不受資源限制&#xff0c;從而能夠測試的集群規模比真實集群大的多。這個cluster中ma…

運維鍋總詳解系統啟動流程

本文詳細介紹Linux及Windows系統啟動流程&#xff0c;并分析了它們啟動流程的異同以及造成這種異同的原因。希望本文對您理解系統的基本啟動流程有所幫助&#xff01; 一、Linux系統啟動流程 Linux 系統的啟動流程可以分為幾個主要階段&#xff0c;從電源開啟到用戶登錄。每個…

Java筆試|面試 —— 對繼承性的理解

面試/筆試&#xff1a;談談對繼承性的理解>繼承性的好處&#xff1a;-減少了代碼的冗余&#xff0c;提高了復用性-提高了擴展性&#xff08;父類統一擴展、繼承后擴展&#xff09;-為多態的使用&#xff0c;提供了前提>Java中繼承的特點-局限性&#xff1a;類的單繼承性。…

有一個日期(Date)類的對象和一個時間(Time)類的對象,均已指定了內容,要求一次輸出其中的日期和時間

可以使用友元成員函數。在本例中除了介紹有關友元成員函數的簡單應用外&#xff0c;還將用到類的提前引用聲明&#xff0c;請讀者注意。編寫程序&#xff1a; 運行結果&#xff1a; 程序分析&#xff1a; 在一般情況下&#xff0c;兩個不同的類是互不相干的。display函…

關于Java異常機制及finally關鍵字的詳解

異常機制(Exception) 軟件程序在運行過程中&#xff0c;非常可能遇到異常問題。常見的異常&#xff1a; 1、用戶輸入錯誤 2、設備錯誤 3、硬件問題&#xff0c;例如打印機關掉、服務器問題 4、物理限制&#xff1a;磁盤滿了 Java是采用面向對象的方式來處理異常的。 處理過程…

基于Java的水果商品銷售網站

1 水果商品銷售網站概述 1.1 課題簡介 隨著電子商務在當今社會的迅猛發展&#xff0c;水果在線銷售已逐漸演變為一種極為便捷的購物方式&#xff0c;日益受到人們的青睞。本系統的設計初衷便是構建一個功能完備、用戶體驗友好的水果銷售平臺&#xff0c;致力于為用戶提供優質、…

Xcode簡介

Xcode 是蘋果公司為 macOS 平臺開發的一款集成開發環境&#xff08;Integrated Development Environment&#xff0c;IDE&#xff09;&#xff0c;主要用于開發 iOS、iPadOS、macOS、watchOS 和 tvOS 的應用程序。Xcode 包含了一系列的軟件開發工具&#xff0c;涵蓋了從編寫代碼…

【植物大戰僵尸雜交版】獲取+存檔插件

文章目錄 一、還記得《植物大戰僵尸》嗎&#xff1f;二、在哪下載&#xff0c;怎么安裝&#xff1f;三、雜交版如何進行存檔功能概述 一、還記得《植物大戰僵尸》嗎&#xff1f; 最近&#xff0c;一款曾經在15年前風靡一時的經典游戲《植物大戰僵尸》似乎迎來了它的"文藝復…

漸開線花鍵測量學習筆記分享

大家好&#xff0c;繼續漸開線花鍵的相關內容&#xff0c;本期是漸開線花鍵測量相關的學習筆記分享&#xff1a; 花鍵檢測項目有花鍵大徑和小徑檢驗&#xff1b;內花鍵齒槽寬和外花鍵齒厚&#xff0c;以及漸開線終止圓 和起始圓直徑檢測&#xff1b;齒距累計誤差 、齒形誤差 、…

排序算法簡述(第八jiang)

目錄 排序 選擇排序 O(n2) 不穩定&#xff1a;48429 歸并排序 O(n log n) 穩定 插入排序 O(n2) 堆排序 O(n log n) 希爾排序 O(n log2 n) 圖書館排序 O(n log n) 冒泡排序 O(n2) 優化&#xff1a; 基數排序 O(n k) 快速排序 O(n log n)【分治】 不穩定 桶排序 O(n…

Mysql-常用函數及其用法總結

1、字符串函數 測試用例如下&#xff1a; 1.1 CONCAT() 將多個字符串連接成一個字符串。 SELECT CONCAT(first_name, , last_name) AS full_name FROM users; -- 期望結果&#xff1a;John Doe, Jane Smith, Michael Johnson 1.2 SUBSTRING() 提取子字符串 SELECT SUBSTR…

STM32-PWR和WDG看門狗

本內容基于江協科技STM32視頻學習之后整理而得。 文章目錄 1. PWR1.1 PWR簡介1.2 電源框圖1.3 上電復位和掉電復位1.4 可編程電壓監測器1.5 低功耗模式1.6 模式選擇1.7 睡眠模式1.8 停止模式1.9 待機模式1.10 庫函數 2. WDG看門狗2.1 WDG簡介2.2 IWDG框圖2.3 IWDG鍵寄存器2.4 …