CSS line-height淺析(3)

来源:http://www.cnblogs.com/cc156676/archive/2016/07/15/5674583.html
-Advertisement-
Play Games

這一部分我們來簡單應用一下line-height屬性。 一、單行文本垂直居中 代碼如下: 頁面效果: 二、圖像水平垂直居中 代碼如下: 頁面效果: 其實現原理,我們可以有兩種方式解讀。 第一種方式,先讓隱藏文本節點垂直居中,然後圖像與它垂直居中對齊。 來看這段代碼: 其頁面效果為: 前面我們提到過, ...


這一部分我們來簡單應用一下line-height屬性。

一、單行文本垂直居中

代碼如下:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3     <head>
 4         <style>
 5         div {
 6             width:200px;
 7             height:80px;
 8             background-color:cyan;
 9             line-height:80px; 
10         }
11         </style>
12     </head>
13     <body>
14         <div>
15             <p>單行文本垂直居中</p>
16         </div>
17     </body>
18 </html>

頁面效果:

 

二、圖像水平垂直居中

代碼如下:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3     <head>
 4         <style>
 5         div {
 6             width:350px;
 7             height:200px;
 8             background-color: cyan;
 9             text-align: center;
10             line-height: 200px;
11         }
12         img {
13             vertical-align: middle;
14         }
15         </style>
16     </head>
17     <body>
18         <div>
19         <img src="1.jpg" alt="A picture" style="width:175px;height:100px">
20         </div>
21     </body>
22 </html>

頁面效果:

其實現原理,我們可以有兩種方式解讀。

第一種方式,先讓隱藏文本節點垂直居中,然後圖像與它垂直居中對齊。

來看這段代碼:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3     <head>
 4         <style>
 5         div {
 6             width:350px;
 7             height:200px;
 8             background-color: cyan;
 9             text-align: center;
10             line-height: 200px;
11         }
12         span {
13             background-color: red;
14         }
15         </style>
16     </head>
17     <body>
18         <div>
19             <img src="1.jpg" alt="A picture" style="width:175px;height:100px">
20             <span>xxx</span>
21         </div>
22     </body>
23 </html>

其頁面效果為:

前面我們提到過,<img>元素後面有一個隱藏文本節點,在這裡,我們將它顯現出來,xxx;

根據div {height:200px; line-height:200px;} 的設置,xxx作為div中的單行文本被垂直居中了;

此時vertical-align為預設值baseline,所以圖像的底邊與文本的基線對齊。

如果我們進一步設置img {vertical-align:middle;},就能得到圖像垂直居中;如圖:

然後我們在html中刪掉幫助我們理解的本來是隱藏的 xxx ,就能得到圖像水平垂直居中的結果。

 

第二種方式,先讓圖像與隱藏文本節點垂直居中對齊,再逐漸擴大行高,由行高撐開隱藏文本的高度,直到行高等於容器的高度,實現垂直居中。

請看如下代碼:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3     <head>
 4         <style>
 5         div {
 6             width:350px;
 7             height:200px;
 8             background-color: cyan;
 9             text-align: center;
10         }
11         img {
12             vertical-align:middle;
13         }
14         span {
15             background-color: red;
16         }
17         </style>
18     </head>
19     <body>
20         <div>
21             <img src="1.jpg" alt="A picture" style="width:175px;height:100px">
22             <span>xxx</span>
23         </div>
24     </body>
25 </html>

其頁面效果:

上圖為line-height:normal時的頁面效果,下麵我們逐漸增大line-height的值,來看看頁面的變化。

註意,因為圖像的height值為100px;所以當line-height的值小於100px時,頁面是沒有變化的。

當line-height的值為130px時,其頁面效果:

當line-height的值為170px時,其頁面效果:

當line-height的值為200px時,其頁面效果:

此時line-height與height的值相等,這就是我們想要的效果圖。

不過我們還可以繼續增加line-height的值,看看有什麼變化。

當line-height的值為400px時,其頁面效果:

由於容器的高度是200px,而我們的文本行高是400px;從圖像上看出,以xxx內容區的中點為界,上下的高度都是200px。

這個逐漸增加line-height導致不同頁面效果的行為,起碼可以證明單行文本確實有行高。

(在執行這些操作的時候,有些想法一閃而逝,可惜沒有抓住,只想到了這一點,慚愧。。。)

 

三、多行文本水平垂直居中

代碼如下:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3     <head>
 4         <style>
 5         div#box {
 6             width:500px;
 7             height:300px;
 8             background-color: cyan;
 9             text-align: center;
10             line-height: 300px;
11         }
12         div#container {
13             display:inline-block;
14             vertical-align: middle;
15             line-height: 1.5;
16             width: 380px;
17             text-align: left;
18         }
19         </style>
20     </head>
21     <body>
22         <div id="box">
23             <div id="container">
24                 <p>
25                 1.多行文本水平垂直居中的原理與圖像一樣;<br>
26                 2.將文本用一個容器封裝起來,把它當成圖像看待。<br>
27                 3.設置display屬性值為inline-block;<br>
28                 4.設置line-height屬性值;<br>
29                 5.設置width屬性值;<br>
30                 6.設置text-align屬性值。
31                 </p>
32             </div>
33         </div>
34     </body>
35 </html>

頁面效果:

 

總結:

關於垂直居中,關鍵是讓容器的height值與line-height值相等!


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

-Advertisement-
Play Games
更多相關文章
  • 面向對象的概述 面向對象的概念在我理解來,函數是對代碼的封裝,而類和對象是對函數的封裝,其優點如下 面向過程:根據業務邏輯從上到下寫壘代碼 函數式:將某功能代碼封裝到函數中,日後便無需重覆編寫,僅調用函數即可 面向對象:對函數進行分類和封裝,讓開發“更快更好更強... 面向對象編程是一種編程方式,此 ...
  • 一、基於 XML 的 Bean 的配置 1.通過屬性註入 即通過 setXxx() 方法註入 Bean 的屬性值或依賴的對象。 使用 <property name="" value="" ref=""/> 元素,其中 name 值為對應 Bean 屬性名稱,value 指定對應屬性值,ref 引用其 ...
  • 一、學習版本 spring-framework-4.0.0 二、導入 jar 包: 三、在類路徑下創建 Spring Config 文件:ApplicationContext.xml 四、創建一個非侵入的 Bean 五、在 Spring Config 文件中配置該 Bean 六、通過 IOC 容器對 ...
  • 字元串:是以空字元\0為結尾的char數組 在程式中定義字元串的方法 1.字元串常量(字元串文字):是指位於一對雙引號中的任何字元,雙引號里的字元加上編譯器自動提供的結束標誌\0字元,作為一個字元串背儲存在記憶體里。它常常用作printf和puts的參數。 2.字元串數組:定義一個字元串數組時,必須讓 ...
  • 1. 在 Form 上放一個 TImage ,再一個 TText 到 Image 裡面,並將 Image1.StyleName 設定為 BtnStyle,如下: 2.接著放一個 TButton,將 StyleLookup 指定為 BtnStyle,按鈕就變成這個 Style,如下: ...
  • 本文為原創文章,轉載請註明出處,謝謝 Curator使用 1、jar包引入,演示版本為2.6.0,非maven項目,可以下載jar包導入到項目中 2、RetryPolicy:重試機制 ExponentialBackoffRetry:每次重試會增加重試時間baseSleepTimeMs Exponen ...
  • × 目錄 [1]原始值 [2]對象 [3]顯式[4]隱式 前面的話 所有程式設計語言的重要特征是具有進行類型轉換的能力,javascript給開發者提供了大量簡單的類型轉換方法。javascript是一門弱類型語言,所以類型轉換成為其比較複雜的一部分。本文將從原始值轉換成原始值、對象轉換成原始值、顯 ...
  • 1.本次用到錯誤提示文字的顏色 http://v3.bootcss.com/css/#forms jquery 教程: http://www.w3school.com.cn/jquery/index.asp 2.工程地址:https://github.com/digitalClass/web_pag ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...