布局中常見的居中問題

說到布局除了浮動以及定位外還有一個不得不提的點,那就是居中,居中問題我們在網頁布局當中經常遇到,那么以下就是分為兩部分來講,一部分是傳統的居中,另一種則是flex居中,每個部分又通過分為水平垂直居中來講。

一、傳統居中方式

1.1水平居中

1.1.1 inline

對于inline元素以及純文本只需要為父元素設置

text-align: center;
適用于
inline, inline-block, inline-table, inline-flex

1.1.2 block

對于block元素則需要為想要居中的block設置

margin: 0 auto;

1.1.3 more-block:

多個塊級元素直接居中同單個塊級居中一樣,但是如果要在單行內居中,需要先通過

display: inline-block
將塊級元素轉化為行內塊元素再按照行內元素為父元素添加
text-align: center
的居中方式居中。

1.2垂直居中

1.2.1 inline

單行情況下,可以為父元素設置相同的上下padding實現居中

如果只是單行文字也可以設置行高等于父元素高度實現居中

如果設置上下相同padding沒有用的話,可能該元素是表格,可以使用

vertical-align: middle
設定對齊基線為middle實現居中。

1.2.2 block

要居中的元素高度固定的情況下,可以使用position來定位,設置top為50%,但是因為top是盒子上邊界的定位距離,所以還要通過負值的margin-top往回拉寬度的一半。

(以下只寫核心代碼,其他寬度高度border自己加)

.parent {position: relative;
}
.child {position: absolute;top: 50%;height: 100px;margin-top: -50px; 
}

但是如果高度不固定的話則可使用變換來替換margin負值達到動態高度的一半

// 只需要替換上面的margin-top: -50px; height可以直接去掉了
transform: translateY(-50%);

1.3水平垂直都居中

1.3.1 固定寬高

固定寬高下,同垂直居中方法一樣,也是絕對定位50%然后通過margin負值拉回去

.parent {position: relative;
}
.child {position: absolute;top: 50%;left: 50%; margin: -50px 0 0 -50px; // 寬高為100px
}

?
此為還有一種方法也可以實現已知寬高時候的居中

// 此處如果是不定寬高的話就會child鋪滿整個父元素
.child {position: absolute;top:0;bottom:0;left:0;right:0;margin:auto;
}

1.3.2 不固定寬高

// 同樣是替換margin負值
transform: translate(-50%, -50%);

?

二、Flex居中方式

Flex的出現解決了傳統居中方式難以實現的麻煩,僅需要幾行代碼就可以實現居中,Flex布局不僅能用于居中,在其他布局當中也相當的有效。想要啟動Flex只要在父元素設置

display: flex
,內聯元素的話則是
display: inline-flex
.

2.1 水平居中

.parent {display: flex;justify-content: center;
}

2.2 垂直居中

.parent {display: flex;align-items: center;
}

2.3 水平垂直居中

.parent {display: flex;justify-content: center;align-items: center;
}

此外,如果想要實現豎著排列flex實現也很容易,僅需要換一下主軸方向,多添加一行就行了。

.parent {flex-direction: column;
}


?

參考

?
學習CSS布局
?
視覺格式化模型
?
css-tricks:居中詳解

本文轉載于:猿2048?https://www.mk2048.com/blog/blog.php?id=1akc1jb&title=布局中常見的居中問題

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

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

相關文章

unity json解析IPA后續

以前說到的,有很大的限制,只能解析簡單的類,如果復雜的就會有問題,從老外哪里看到一片博客,是將類中的list 等復雜對象序列化, using UnityEngine; using System.Collections; using System.Collections.…

改善代碼質量之內連臨時變量

待增轉載于:https://www.cnblogs.com/muyl/articles/6940896.html

python 矩陣元素相加_Numpy中元素級運算

標量與矩陣的運算:加法:values [1,2,3,4,5]values np.array(values) 5#現在 values 是包含 [6,7,8,9,10] 的一個 ndarray乘法:x np.multiply(some_array, 5)x some_array * 5矩陣與矩陣的運算:加法:對應元素相加,但形狀必須相…

排序算法——桶排序

把數據放進若干個桶,然后在桶里用其他排序,近乎分治思想。從數值的低位到高位依次排序,有幾位就排序幾次。例如二位數就排兩次,三位數就排三次,依次按照個十百...的順序來排序。 第一次排序:50 12 …

原型設計模式:創建另一個小車

創建對象確實是一個耗時的過程,也是一件昂貴的事情。 因此,我們現在正努力節省時間和金錢。 我們該怎么做? 克隆奇跡多莉 有人記得多莉嗎? 是的,是綿羊,是第一個被克隆的哺乳動物。 好吧,我不想…

java實現周期任務_java定時任務的實現方式

本文列舉常見的java定時任務實現方式,并做一定比較。1. 循環內部sleep實現周期執行創建一個thread,run() while循環里sleep()來實現周期性執行; 簡單粗暴,作為一個初學者很容易想到。public class Task1 {public static void main(String[] a…

磁盤鏡像工具Guymager

磁盤鏡像工具Guymager在數字取證中,經常需要對磁盤制作鏡像,以便于后期分析。Kali Linux提供一款輕量級的磁盤鏡像工具Guymager。該工具采用圖形界面化方式,提供磁盤鏡像和磁盤克隆功能。它不僅生成dd的鏡像,還能生成EWF和AFF鏡像…

python怎么寫代碼求年華收益率_如何計算年化收益率?

關于投資年化收益率的計算,三思君覺得主要有三種,分別是一次性投資的收益率計算、定期定額的收益率計算、不定期不定額的收益率計算。1.一次性投資的收益率計算對于一次性投資的收益率,相信大家都會計算。比如,小李同學去年買了一…

HTTPS協議在Tomcat中啟用的配置

本文將講解HTTPS協議在Tomcat中啟用是如何配置的。 概念簡介 Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試 JSP 程序的首選。 HTTP 超文本…

CSS3實現煙花特效 --web前端

煙花特效&#xff0c;比較簡單&#xff0c;直接貼代碼了……<!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title>css3實現煙花特效</title> <style> * { margin: 0; padding: 0; } html{ widt…

虛擬機 java 開發_深入淺出 Java 虛擬機 · 通往高級 Java 開發的必經之路

第一章 JVM 內存模型Java 虛擬機(Java Virtual MachineJVM)的內存空間分為五個部分&#xff0c;分別是&#xff1a;程序計數器Java 虛擬機棧本地方法棧堆方法區。下面對這五個區域展開深入的介紹。1.1 程序計數器1.1.1 什么是程序計數器&#xff1f;程序計數器是一塊較小的內存…

java.lang.ClassNotFoundException:如何解決

本文適用于當前面臨java.lang.ClassNotFoundException挑戰的Java初學者。 它將為您提供此常見Java異常的概述&#xff0c;這是一個示例Java程序&#xff0c;可支持您的學習過程和解決策略。 如果您對與更高級的類加載器相關的問題感興趣&#xff0c;我建議您復習有關java.lang…

iOS10 App跳轉到系統設置

實現類似萬能鑰匙中點擊一個Wi-Fi跳轉到系統Wi-Fi設置界面的功能。 NSString * urlString "App-Prefs:rootWIFI";if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:urlString]]) {if ([[UIDevice currentDevice].systemVersion doubleValue…

python生成器 圖片分類_python批量處理圖片圖片Python迭代器和生成器介紹

Python迭代器和生成器介紹迭代器迭代器是一個實現了迭代器協議的對象&#xff0c;Python中的迭代器協議就是有next方法的對象會前進到下一結果&#xff0c;而在一系列結果的末尾是&#xff0c;則會引發StopIteration。在for循環中&#xff0c;Python將自動調用工廠函數iter()獲…

Java-IO流之BufferedReader 和BufferedWriter的使用和原理

BufferedReader和BufferedWriter出現的目的是為了對FileReader以及FileWriter的讀寫操作進行增強&#xff0c;而怎么增強呢&#xff0c;原理類似于使用StringBuilder&#xff0c;是把數據先放入他們的一個char數組中&#xff0c;然后再操作char數組。 使用緩沖區的字符流是使用…

小程序實踐(三):九宮格實現及item跳轉

效果圖&#xff1a; 實現效果圖紅色線包含部分的九宮格效果&#xff0c;并附帶item點擊時間。 ------------------------------------------------------------------------------------------------------ 具體實現&#xff1a; 1、首先添加圖片資源文件 在項目根目錄新建一個…

用JavaFX編寫圖塊引擎

隨著JavaFX嵌入式版本的問世&#xff0c;我們的框架對于游戲開發變得越來越有趣&#xff0c;因為我們現在可以瞄準平板電腦和智能手機等小型消費類設備。 因此&#xff0c;我決定對JavaFX進行更多的游戲編寫實驗。 這次&#xff0c;我想使用Canvas對渲染進行更多控制&#xff0…

python命令行運行模式_[Python] 命令行模式閱讀博客園的博文

1 #-*- coding:UTF-8 -*-2 importrequests3 from lxml importetree4 importsys5 importio6 importos789 sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodinggb18030)101112 classCnBlogs:13 """"14 Auth&#xff1a;reader15 發表地址&#xff1a;…

HTML5--應用網頁模板

因為剛開始寫博客,只想著把知識點記錄在這,也想給你們一些參考,在布局上有些沒有思考太多;回過頭來看,實在是不忍直視,對不住之前閱讀的100 ,既然昨天的事無法挽回,那就從現在開始從新整改吧!也希望大家看了,能對你們有所幫助 1.先給大家看看效果圖,好讓大家有點興趣 2.大家再來…

企業集成模式簡介

在此博客文章中&#xff0c;我們將介紹一些企業集成模式。 這些是旨在解決集成挑戰的已知設計模式。 閱讀此書后&#xff0c;您將可以設計集成解決方案。 EIP&#xff08;簡而言之&#xff09;是已知的設計模式&#xff0c;可為應用程序集成過程中遇到的問題/問題提供解決方案…