CSS基礎:你必須要知道的行高屬性 line-height

来源:https://www.cnblogs.com/wmbuke/archive/2023/11/10/17824246.html
-Advertisement-
Play Games

作者:WangMin 格言:努力做好自己喜歡的每一件事 對於初學CSS的同學來說,會有很多屬性相關的疑問,行高屬性 line-height一定是其中一個,因為它是CSS中非常重要的一個屬性,這個屬性改變元素在網頁中的行高,讓你的網頁看起來更加整潔,美觀。 什麼是行高? CSS中的行高(line-he ...


作者:WangMin
格言:努力做好自己喜歡的每一件事

對於初學CSS的同學來說,會有很多屬性相關的疑問,行高屬性 line-height一定是其中一個,因為它是CSS中非常重要的一個屬性,這個屬性改變元素在網頁中的行高,讓你的網頁看起來更加整潔,美觀。

什麼是行高?

CSS中的行高(line-height)是指網頁中每行文字之間的距離,就是對於同一行內的不同內容,行高決定它們之間的間距。

換一句話來說,在CSS中包括文字的每一行不是只有文字的高度,其實還有上間距、下間距,所以行高指的是文字的高度+上下間距。

合理設置文字行高不僅能夠讓網頁更加美觀與整潔,還能夠增加用戶的視覺與閱讀體驗,在大段文字中,合適的行高可以讓用戶閱讀起來更加舒適。

你可能還是不明白行高是什麼?下麵我通過幾圖來仔細給大家講一下吧!

那麼在學習行高之前,我們就必須要知道在文本中存在有四條線: 頂線、中線、基線、底線,之後才能真正的去理解line-height屬性的含義! 如下圖:

頂線,在中文漢字的頂部位置就是頂線的位置!就是圖中綠色線條所在的位置

中線,css中有一個概念叫x-height,意思是小寫字母x的高度! 在css中,有些屬性值的定義就和這個x-height有關, 最有代表性的就是vertical-align的屬性值middle。這裡的middle就是中間的意思,指的其實就是基線 往上1/2的位置,也就是小寫x字母的中間交叉點那個位置!這裡橫過小寫英文字母x中間交叉點的線就是中線。就是圖中藍色線條所在的位置

基線,要瞭解基線 ,需要知道在英文中的26個字母當中 ,有一個小寫的x字母在CSS中是相當特殊的,基線就是小寫x字母的下邊緣(線) ! 就是圖中紅色線條所在的位置

底線,在中文漢字的底部位置 就是底線的位置 !就是圖中紫色線條所在的位置

那麼從上圖中我們就可以看到其實行高指的是上下文本行的兩條基線之間的距離,即圖中兩條紅線之間的距離。

看到這裡你應該明白行高了吧!接下來就一起來看看它在CSS中是如何表示的,以下是它的幾種表示方式。

設置字體的行高的方法

1、使用像素(px)單位設置行高

使用像素單位設置行高是最常見的方法,也是最容易理解的。可以通過以下方式來設定行高

<style>
p{
  font-size: 16px;
  line-height: 32px;
}
</style>

設置行高之前:

設置行高之後:

你可以看到每行文字之間明顯出現了一定的距離,對比之下,一定是設置行高之後文字看起來更加清晰。

在上述例子中,字體大小font-size為16px,行高line-height為32px,也就是說一行文字的高度為32個像素。用這種方式設置行高時,行高最好是文字大小的2倍。當然這不是強制性的,你可以根據自己的需求來調整。

這個設置可以適用於大多數情況下,但是需要註意的是,在不同的字體類型和字體大小的情況下,可能顯示出不同的效果。這裡我並沒有設置字體類型,預設字體類型是' 微軟雅黑 '。

但這種方式有一個缺點,當文字大小發生較大的改變時,固定的行高會讓文字之間看起來會很緊湊,如下:

<style>
p{
  font-size: 20px;
  line-height: 16px;
}
</style>

這個時候以下幾種方式就可以解決這個問題,一起往下看吧!

2、使用百分比(%)單位設置行高

使用百分比單位可能更加靈活,它可以自適應不同的字體大小。在下麵的案例中,我們設置字體大小為20px,行高為150%:

<style>
p{
  font-size: 20px;
  line-height: 150%;
}
</style>

這裡的行高150%的意思是相當於將行高設置為字體大小的1.5倍,即20 * 1.5 = 30px。那麼行高200%就相當於行高是字體大小的2倍,即行高 = 字體大小 * 2。

以這種方式設置行高時,常常行高設置為150%或者200%,即 line-height: 150%; 或 line-height: 200%;

這種方法可以確保每個字體大小的行高都相同,並適用於任何比例。

3、使用單位 em 設置行高

使用em單位是讓行高基於當前元素文字大小來設置,因為em單位是相對於當前元素的字體大小設置的,行高會隨著字體大小改變。下麵的案例設置line-height為1.5個em

<style>
p{
  font-size: 16px;
  line-height: 1.5em;
}
</style>

在這種情況下,當文字大小為16px時,行高為 16 * 1.5 = 24px。但是當你改變字體大小時時,例如font-size: 20px;line-height也會相應發生變化,為20 * 1.5 = 30px。

一般情況下,設置line-height的值為1.5 em ~ 2 em 比較合適。

用這種方式設置行高時,實際行高 = 字體大小 * em單位前面的數值。它的效果跟第二種方式是一樣的。

4、使用無單位數值設置行高

使用無單位的數字設置行高其實是最靈活的方法,它也可以自適應任何字體大小的文本。在下麵的案例中,我們將line-height設置為1.5

<style>
p{
  font-size: 16px;
  line-height: 1.5;
}
</style>

其實這種方式更第二、三種方式是一樣的,這裡的行高將是字體大小的1.5倍,當字體大小為16px時,行高為 16 * 1.5 = 24px。使用這種方式是最靈活和最可維護的設計方法之一,它可以適用於大多數情況。一般情況下,設置line-height的值為1.5 ~ 2 比較合適

在上述第二、三、四種設置行高的方式中,字體大小是影響文字高度的關鍵因素,當文字大小發生改變時,相應的行高也會發生改變。也就是說我們通過設置字體的大小,可以間接地控制文字的高度

需要註意的兩點:

1)如果不設置行高,則會應用預設的行高,這個值可以因不同瀏覽器而異。

2)行高不能為負值。

以上四種方法都有各自的優缺點,你可以根據實際情況來選擇。不管你使用哪一種方法,都需要按照設計要求來修改line-height值,從而達到更好的文本排版效果。


以上僅是個人見解,若有不足之處歡迎在下方評論指出,那就先分享到這裡!!

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 近幾年IT界軟硬體“國產化”搞得很密集,給很多公司帶來了商機。但是有些公司拿國外的代碼改改換個皮膚,就是“自主知識產權”的國產軟體,光明正大賣錢,這個有點...,還經常有醜聞露出,譬如某星瀏覽器、C某-IDE... 話不多說,最近有個項目需要國產化改造,業主方推薦了國產資料庫 瀚高資料庫,我們原來用 ...
  • 本文分享自華為雲社區《淺析KV存儲之長尾時延問題,華為雲 GeminiDB Redis 探尋行業更優解決方案!》,作者:華為雲資料庫GaussDB NoSQL團隊。 目前,KV存儲的廣泛使用極大程度上源於快速訪問的業務需求,而這種業務通常對時延敏感度高,在較好的平均性能下,還需要解決特定場景下的性能 ...
  • 在之前的實時湖倉系列文章中,我們已經介紹了實時湖倉對於當前企業數字化轉型的重要性,實時湖倉的功能架構設計,以及實時計算和數據湖結合的應用場景。 在本篇文章中,將介紹袋鼠雲數棧在構建實時湖倉系統上的探索與落地實踐,及未來規劃。 數棧為什麼選擇實時湖倉 數棧作為一個數據開發平臺,在未引入實時湖倉之前提供 ...
  • 資料庫底層實現博大精深,本文所述,根據線上場景進行了一些研究和探討,希望能為相關場景提供一些啟示。文章中難免會有不足之處,希望讀者能給予寶貴的意見和建議 ...
  • 前言 近期接到一個關於谷歌EDLA認證的需求,我負責的是谷歌原生桌面佈局的修改,通過研究源碼,將涉及到了一些修改思路發出來,大家可以參考一下有沒有對你有用的信息。主要修改內容有: 1、搜索欄、底部導航欄未居中 2、中部應用未按要求排布,詳情請參考摹客 3、在原生Google桌面未添加中性S-writ ...
  • 使用不可信的數據,通過調用不安全的遞歸函數來暴露預設原型 原型污染:基礎 什麼是原型污染? 原型污染是一種針對JavaScript運行時的註入攻擊。通過原型污染,攻擊者可以控制對象屬性的預設值,從而篡改應用程式的邏輯並可能導致服務被拒絕,甚至在某些極端情況下遠程執行代碼。 現在,你是不是滿腦子充滿了 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 記錄一下在公司遇到的一些功能,以及相關實現 以上的內容我花了一周時間去實現的,自己也覺得時間很長,但主要因為很少使用ECharts,導致使用的過程中大部分的時間都在查文檔。 對於上面的這些功能點,其實算是寫了兩遍吧,這周一開了個Code ...
  • 1、業務背景 使用vue+element開發報表功能時,需要列表上某列的超鏈接按鈕彈窗展示,在彈窗的el-table列表某列中再次使用超鏈接按鈕點開彈窗,以此類推多表格彈窗嵌套,本文以彈窗兩次為例 最終效果如下示例頁面 2、具體實現和問題拋出 <template> <div class="el_ma ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...