首頁 web前端 css教學 談談CSS實現水平垂直居中佈局的方法

談談CSS實現水平垂直居中佈局的方法

Aug 03, 2020 pm 04:59 PM
css

談談CSS實現水平垂直居中佈局的方法

最近面試的時候,面試官問到了CSS水平垂直居中佈局的方式,對於剛入前端沒多久的我,無疑是一臉懵逼,閒了趕緊查閱資料分析一波,給各位分享一下,避免落坑。

先說明html和一些基礎css樣式,以下就不再贅述!
html

<body>
		<div class="div1">
			<div class="box  size">垂直水平居中</div>
		</div>
	</body>
登入後複製

公共css程式碼如下

<style type="text/css">
			/* 公共样式 */
			.div1{
				width: 300px;
				height: 300px;
				border:1px solid aqua;
				
			}
			.box{
				background: #00FFFF;
			}
			.box.size{
				width:100px;
				height:100px;
			}
</style>
登入後複製

這些css樣式在後續介紹中預設帶上,不再贅述!

一、 absolute 和margin auto(常用)

#同樣居中元素的寬高必須固定,並且需要得知子元素的寬高
這種方式透過設定各個方向的距離都是0,此時再將margin設為auto,就可以在各個方向上居中了

.div1{
				position: relative;
			}
			.box{
				position: absolute;
				top:0;
				left: 0;
				right: 0;
				bottom: 0;
				
				margin: auto;
			}
登入後複製

二、absolute 和margin(負值)

簡單說一下原理,利用了絕對定位,絕對定位的百分比是相對於父元素的寬高,所以我們可以根據這個原理將元素居中顯示。但要注意:絕對定位是基於子元素的左上角來說的,但是要想讓子元素居中顯示,就要解決這個問題。
此時可以利用margin的負值來實現效果,當外邊距為負值時,元素向相反方向定位,這樣我們將子元素的外邊距設定為子元素的寬高的一半就可以實現了。 (PS:缺點就是必須得到子元素的寬高)

.div1{
				position: relative;
			}
			.box{
				top: 50%;
				left: 50%;
				position: absolute;
				margin-top: -50px;
				margin-left: -50px;
			}
登入後複製

三、absolute 和calc

也需要子元素的寬高固定,並知道寬高,css3具有計算屬性。
top的百分比是基於元素左上角減去寬度的一半即可(PS:依賴calc的兼容性)

.div1{
			   position: relative;
		   }
		   .box{
			   position: absolute;
			   top: calc(50% - 50px ); 
				/* 减号前后没有空格,该样式不生效*/
			   left: calc(50% - 50px );
		   }
登入後複製

當我在寫這段程式碼的時候,發現一個有趣的事情, calc(50%-50px)如果減號前後沒有空格的話,樣式就不會生效,寫上空格的話,就會正常生效了,具體原因我也不太清楚emmmmm

下面的方法將不需要知曉子元素的寬高即可設定

html修改為:

<body>
		<div class="div1">
			<div class="box">水平垂直居中,不需要子元素固定宽高</div>
		</div>
	</body>
登入後複製

公用css如下

	.div1{
				width: 300px;
				height: 300px;
				border: 1px solid red;
			}
			.box{
				background: #00FFFF;
			}
登入後複製

四、flex(常用)

flex是現代的佈局方案僅需要幾行程式碼即可實現居中效果

.div1{
				display: flex;
				justify-content: center;
				align-items: center;
			}			
登入後複製

五、line-height

利用行內元素居中屬性也可以做到水平垂直居中。把box設定為行內元素,透過text-align就可以實現水平居中vertical-align 也可以在垂直方向做到居中(PS:這種方法需要在子元素中將文字顯示重置為想要的效果)

          .div1{
				line-height: 300px;
				text-align: center;
				font-size: 0px;
			}
			.box{
				font-size: 10px;
				display: inline-block;
				vertical-align: middle;
				line-height:initial;
				/* 修正文字 */
			 	text-align: left;
	        }
登入後複製

六、absolute 和transform

#不需要子元素寬高固定,但依賴translate2d的相容性

           .div1{
				position: relative;
			}
			.box{
				position: absolute;
				top: 50%;
				left: 50%;
				transform: translate(-50%,-50%);
			}
登入後複製

七、css-table

css新增的table屬性,可以把普通元素改為table元素的顯示效果,也可以實現水平居中

           .div1{
				display:table-cell;
				text-align: center;
				vertical-align: middle;
			}
			.box{
				display:inline-block;
			}
登入後複製

以上就是我總結的一些居中佈局的方法了,還有什麼其他的歡迎補充!

個人感覺: 我比較喜歡absolute margin auto   、flex、absolute 和transform,手機端最好用flex吧,pc端我喜歡absolute margin auto

相關教學推薦:CSS影片教學CSS3影片教學

以上是談談CSS實現水平垂直居中佈局的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1676
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
vue中怎麼用bootstrap vue中怎麼用bootstrap Apr 07, 2025 pm 11:33 PM

在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

了解HTML,CSS和JavaScript:初學者指南 了解HTML,CSS和JavaScript:初學者指南 Apr 12, 2025 am 12:02 AM

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML,CSS和JavaScript的角色:核心職責 HTML,CSS和JavaScript的角色:核心職責 Apr 08, 2025 pm 07:05 PM

HTML定義網頁結構,CSS負責樣式和佈局,JavaScript賦予動態交互。三者在網頁開發中各司其職,共同構建豐富多彩的網站。

bootstrap怎麼插入圖片 bootstrap怎麼插入圖片 Apr 07, 2025 pm 03:30 PM

在 Bootstrap 中插入圖片有以下幾種方法:直接插入圖片,使用 HTML 的 img 標籤。使用 Bootstrap 圖像組件,可以提供響應式圖片和更多樣式。設置圖片大小,使用 img-fluid 類可以使圖片自適應。設置邊框,使用 img-bordered 類。設置圓角,使用 img-rounded 類。設置陰影,使用 shadow 類。調整圖片大小和位置,使用 CSS 樣式。使用背景圖片,使用 background-image CSS 屬性。

bootstrap怎麼寫分割線 bootstrap怎麼寫分割線 Apr 07, 2025 pm 03:12 PM

創建 Bootstrap 分割線有兩種方法:使用 標籤,可創建水平分割線。使用 CSS border 屬性,可創建自定義樣式的分割線。

bootstrap怎麼設置框架 bootstrap怎麼設置框架 Apr 07, 2025 pm 03:27 PM

要設置 Bootstrap 框架,需要按照以下步驟:1. 通過 CDN 引用 Bootstrap 文件;2. 下載文件並將其託管在自己的服務器上;3. 在 HTML 中包含 Bootstrap 文件;4. 根據需要編譯 Sass/Less;5. 導入定製文件(可選)。設置完成後,即可使用 Bootstrap 的網格系統、組件和样式創建響應式網站和應用程序。

bootstrap怎麼調整大小 bootstrap怎麼調整大小 Apr 07, 2025 pm 03:18 PM

要調整 Bootstrap 中元素大小,可以使用尺寸類,具體包括:調整寬度:.col-、.w-、.mw-調整高度:.h-、.min-h-、.max-h-

bootstrap按鈕怎麼用 bootstrap按鈕怎麼用 Apr 07, 2025 pm 03:09 PM

如何使用 Bootstrap 按鈕?引入 Bootstrap CSS創建按鈕元素並添加 Bootstrap 按鈕類添加按鈕文本

See all articles