1. 程式人生 > >CSS佈局——簡潔、相容性強的垂直水平居中方案

CSS佈局——簡潔、相容性強的垂直水平居中方案

1、absolute,需要知道居中元素的寬與高

<!DOCTYPE html><html><head><metacharset="utf-8"/><title></title><styletype="text/css"> body{ background-color: goldenrod; margin:0; padding:0;} p{ color: white
;
}.main{ background-color: saddlebrown; position: absolute; top:50%; left:50%; width:500px; height:500px; margin-left:-250px; margin-top:-250px; text-align: center;}/*這種方式需要知道居中元素的寬與高!!*/
</style></head><body><divclass="main"><p>Center me please!</p></div></body></html>

2、利用css3的calc計算符,可以省兩行程式碼

<!DOCTYPE html><html><head><metacharset="utf-8"/><title></title><styletype="text/css"> body{
background-color: goldenrod; margin:0; padding:0;} p{ color: white;}.main{ background-color: saddlebrown; position: absolute; width:18em; height:18em; top:calc(50%-9em); left:calc(50%-9em); text-align: center;}/*這種方式需要知道居中元素的寬與高!!*/</style></head><body><divclass="main"><p>Center me please!</p></div></body></html>

3、使用transform的translate屬性,x和y軸上往回移動50%

<!DOCTYPE html><html><head><metacharset="utf-8"/><title></title><styletype="text/css"> body{ background-color: goldenrod; margin:0; padding:0;} p{ color: white;}.main{ background-color: saddlebrown; position: absolute; top:50%; left:50%; transform: translate(-50%,-50%); text-align: center;}/*這種方式需要知道居中元素的寬與高!!*/</style></head><body><divclass="main"><p>Center me please!</p><p>Center me please!</p></div></body></html>

以上的定位都用到了absolute,但是absolute對整個文件流的影響比較大。

4、視窗單位解決方案

不用absolute,就是不能使用top和left。那麼,怎麼將元素從top和left位置偏移50%的量呢,首先想到了margin,像這樣:

.main { width: 18em; padding: 1em 1.5em; margin: 50% auto 0; transform: translateY(-50%);}

如上圖,結果佈局很怪異,主要原因是margin的百分比計算是相對於父容器的width來計算的。父元素的width來計算,是width來計算的。當然,包括margin-top和margin-bottom也是這樣的。

這個時候,神奇的viewport-relative就出現了,相對檢視長度單位。
vw是相對於視窗的寬度,1vw相當於檢視寬度的1%;
1vh相當於視窗高度的1%。

  • 如果視窗的寬度小於高度,1vmin等於1vw,反之,如果視窗寬度大於高度,1vmin等於1vh
  • 如果視窗的寬度大於高度,1vmax等於1vw,反之,如果視窗寬度小於高度,1vmax等於1vh

所以,上面的程式碼就有救了!!!

<head><metacharset="utf-8"/><title></title><styletype="text/css"> body{ background-color: goldenrod; margin:0; padding:0;} p{ color: white;}.main{ width:18em; background-color: saddlebrown;

相關推薦

CSS佈局——簡潔相容性垂直水平居中方案

1、absolute,需要知道居中元素的寬與高 <!DOCTYPE html><html><head><metacharset="utf-8"/><title></title><styletyp

css】一行或者多行垂直水平居中

1.方法一:使用css3彈性盒子(相容IE10及以上瀏覽器,firefox,chrome,safari 5.1.7不支援) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>

css實現彈出視窗始終垂直水平居中

<!DOCTYPE html><html> <head> <meta charset=" utf-8"> <title>螞蟻

CSS之文字溢位隱藏,不定寬高元素垂直水平居中禁止頁面文字複製

1、如何讓不固定元素寬高的元素垂直水平居中 1 .center { 2 position: absolute; 3 top: 50%; 4 left: 50%; 5 background-color: #000; 6 width:50%; 7 height: 50%

CSS之文本溢出隱藏,不定寬高元素垂直水平居中禁止頁面文本復制

turn idt pac false isp display lse enter position 1、如何讓不固定元素寬高的元素垂直水平居中 1 .center { 2 position: absolute; 3 top: 50%; 4 left: 5

CSS垂直水平居中,display:flex,佈局,文字屬性的一些零碎

1. body的height不可少,如body{height:100%},否則子元素會不認,如果子元素的高直接以百分比寫的話,會不顯示。因為識別不出來。 寬度則不會,因為瀏覽器的寬度是固定的,高度會滾,不固定。 2. border-sizing其實是

css實現垂直水平居中的方法(個數不限)?

實現 容易 css3 pre height blog pad 絕對定位 fresh 方法一:使用絕對定位 大家都知道margin:0 auto;能夠實現水平居中,但卻不知道margin:0 auto;也是可以實現垂直居中的; 給居中元素添加如下樣式:

css實現垂直水平居中

otto div bsp 不能 水平 margin 垂直居中 auto absolut 我們經常用margin:0 auto來實現水平居中,而一直認為margin:auto不能實現垂直居中……實際上,實現垂直居中僅需要聲明元素高度和下面的CSS: .Absolute-Ce

css實現垂直水平居中的5種方法

進行 posit tran cto ans otto data -c ive css實現垂直水平居中的5種方法 給父元素設置table-cell,text-align,vertical-align #big{ width: 200px;

讓元素相對於父元素垂直水平居中CSS

sla str gray posit osi 理解 idt div AD 垂直居中 position: relative; top: 50%; transform: translateY(-50%); 1、position: relative; 理解:

CSS】元素 垂直水平居中

未知寬高 1、使用flex佈局實現元素的垂直水平居中。(該方法加在父級div中,作用於子元素) 垂直居中:align-items:center; display: -webkit-flex;(父元素) 水平居中:justify-content:center; display: -we

CSS垂直水平居中的幾種方式

<div class="box">   <div class="content"></div> </div> (1).box { background-color: #FF8C00; width: 300px;

css:盒子垂直水平居中的幾種方法

方法1:寬度和高度已知的。 思路: 給父元素相對定位 給子元素絕對定位 left: 50%;top: 50%; margin-left: 負的寬度一半。 margin-top: 負的高度一半; <!DOCTYPE html> <html> <

CSS垂直水平居中 方法集合

在掘金看到一篇有關文章,自己做整理,方便在工作上用到查閱。 需要實現的效果 根據寬度高度是否固定 absolute + 負margin absolute + margin auto absolute + calc 根據寬度高度不固定

瞭解CSS的查詢匹配原理 讓CSS簡潔高效

看1個簡單的CSS: DIV#divBox p span.red{color:red;},按習慣我們對這個CSS 的理解是,瀏覽器先查詢id為divBox的DIV元素,當找到後,再找其下的所有p元素,然後再查詢所有span元素,當發現有span的class為red的時候

瞭解CSS的查詢匹配原理,讓CSS簡潔高效

用了這麼多年的CSS,現在才明白CSS的真正匹配原理,不知道你是否也跟我一樣?看1個簡單的CSS: DIV#divBox p span.red{color:red;},按習慣我們對這個CSS 的理解是,瀏覽器先查詢id為divBox的DIV元素,當找到後,再找其下的所有

css 垂直水平居中

.wrapper { position: relative; width: 500px; height: 500px; border: 1px solid red; } .content{ position: absolute; width: 20

css(css3)實現垂直水平居中的那些事

都說“金三銀四求職季”,本人也選擇了在這個時候成為這浩浩蕩蕩的求職大軍中的一員,幾次面試下來,發現面試官都愛問的一個問題就是:“說說垂直水平居中都有哪些實現方式吧?”       面試過程巴拉巴拉一大堆,現在終於有時間把這些知識點總結歸納起來,希望能幫自己鞏固下,也希望可以

CSS完美實現垂直水平居中的6種方式

前言 由於HTML語言的定位問題,在網頁中實現居中也不是如word中那麼簡單,尤其在內容樣式多變,內容寬高不定的情況下,要實現合理的居中也是頗考驗工程師經驗的。網上講居中的文章很多,但是都不太完整,所以小茄今天就來總結下純CSS實現居中的各種方案。學疏

html+css垂直水平居中

垂直水平居中有很多方法,以下展示一些比較好用易於理解的方法: 已知父元素寬高的情況下結合上篇margin-top高度重合問題延伸用margin,padding都很好實現; 以下方法實現未知父元素寬高子元素垂直水平居中,先設定html <!DOCTYPE html> <