gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

CSS怎樣實現水平垂直居中的絕對定位居中技術

本篇文章給大家帶來了幾種css實現垂直居中水平居中的絕對定位居中技術的相關知識,希望對大家有幫助。

CSS怎樣實現水平垂直居中的絕對定位居中技術

Ⅰ.絕對定位居中(Absolute Centering)技術

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

.Absolute-Center {   margin: auto;   position: absolute;   top: 0; left: 0; bottom: 0; right: 0; }

我不是這種實現方法的第一人,可能這只是非常常見的一種小技術,我斗膽將其命名為絕對居中(Absolute Centering),雖然如此,但是大多數討論垂直居中的文章卻從來不提這種方法,直到我最近瀏覽《How to Center Anything WithCSS》這篇文章的評論時候才發現這種用法。在評論列表中Simon和Priit都提及了此方法。

如果你有任何擴展的功能或建議,可以在此跟帖:

CodePen

SmashingMagazine

Twitter @shshaw

優點:

1.支持跨瀏覽器,包括IE8-IE10.

2.無需其他特殊標記,CSS代碼量少

3.支持百分比%屬性值和min-/max-屬性

4.只用這一個類可實現任何內容塊居中

5.不論是否設置padding都可居中(在不使用box-sizing屬性的前提下)

6.內容塊可以被重繪。

7.完美支持圖片居中。

缺點:

1.必須聲明高度(查看可變高度Variable Height)。

2.建議設置overflow:auto來防止內容越界溢出。(查看溢出Overflow)。

3.在Windows Phone設備上不起作用。

瀏覽器兼容性:

Chrome,Firefox, Safari, Mobile Safari, IE8-10.

絕對定位方法在最新版的Chrome,Firefox, Safari, Mobile Safari, IE8-10.上均測試通過。

對比表格:

絕對居中法并不是唯一的實現方法,實現垂直居中還有些其他的方法,并各有各的優勢。采用哪種技術取決于你的瀏覽器是否支持和你使用的語言標記。這個對照表有助于你根據自己的需求做出正確的選擇。

CSS怎樣實現水平垂直居中的絕對定位居中技術

解釋

通過以上描述,絕對居中(AbsoluteCentering)的工作機理可以闡述如下:

1、在普通內容流(normal content flow)中,margin:auto的效果等同于margin-top:0;margin-bottom:0。

W3C中寫道If 'margin-top', or'margin-bottom' are 'auto', their used value is 0.

2、position:absolute使絕對定位塊跳出了內容流,內容流中的其余部分渲染時絕對定位部分不進行渲染。

Developer.mozilla.org:…an element that is positioned absolutely is taken out of the flow and thustakes up no space

3、為塊區域設置top: 0; left: 0; bottom: 0; right: 0;將給瀏覽器重新分配一個邊界框,此時該塊block將填充其父元素的所有可用空間,父元素一般為body或者聲明為position:relative;的容器。

Developer.mozilla.org:For absolutely positioned elements, the top, right, bottom, and left propertiesspecify offsets from the edge of the element's containing block (what theelement is positioned relative to).

4、 給內容塊設置一個高度height或寬度width,能夠防止內容塊占據所有的可用空間,促使瀏覽器根據新的邊界框重新計算margin:auto

Developer.mozilla.org: The margin of the[absolutely positioned] element is then positioned inside these offsets.

5、由于內容塊被絕對定位,脫離了正常的內容流,瀏覽器會給margin-top,margin-bottom相同的值,使元素塊在先前定義的邊界內居中。

W3.org: If none of the three [top, bottom,height] are 'auto': If both 'margin-top' and 'margin-bottom' are 'auto', solvethe equation under the extra constraint that the two margins get equal values.AKA: center the block vertically

這么看來, margin:auto似乎生來就是為絕對居中(Absolute Centering)設計的,所以絕對居中(Absolute Centering)應該都兼容符合標準的現代瀏覽器。

簡而言之(TL;DR):絕對定位元素不在普通內容流中渲染,因此margin:auto可以使內容在通過top: 0; left: 0; bottom: 0;right: 0;設置的邊界內垂直居中。

居中方式:

一、容器內(Within Container)

內容塊的父容器設置為position:relative,使用上述絕對居中方式,可以使內容居中顯示于父容器。

.Center-Container {   position: relative; }  .Absolute-Center {   width: 50%;   height: 50%;   overflow: auto;   margin: auto;   position: absolute;   top: 0; left: 0; bottom: 0; right: 0; }

CSS怎樣實現水平垂直居中的絕對定位居中技術

以下其余的demo默認上面的CSS樣式已引用包括進去,在此基礎上只提供額外的類供用戶追加以實現不同的功能。

二、視區內(Within Viewport)

想讓內容塊一直停留在可視區域內?將內容塊設置為position:fixed;并設置一個較大的z-index層疊屬性值。

.Absolute-Center.is-Fixed {   position: fixed;   z-index: 999; }

CSS怎樣實現水平垂直居中的絕對定位居中技術

注意:對MobileSafari,若內容塊不是放在設置為position:relative;的父容器中,內容塊將垂直居中于整個文檔,而不是可視區域內垂直居中。

三、邊欄 (Offsets)

如果你要設置一個固頂的頭或增加其他的邊欄,只需要在內容塊的樣式中加入像這樣的CSS樣式代碼:top:70px;bottom:auto;由于已經聲明了margin:auto;,該內容塊將會垂直居中于你通過top,left,bottom和right屬性定義的邊界框內。

你可以將內容塊固定與屏幕的左側或右側,并且保持內容塊垂直居中。使用right:0;left:auto;固定于屏幕右側,使用left:0;right:auto;固定與屏幕左側。

.Absolute-Center.is-Right {   left: auto; right: 20px;   text-align: right; }  .Absolute-Center.is-Left {   right: auto; left: 20px;   text-align: left; }

CSS怎樣實現水平垂直居中的絕對定位居中技術

四、響應式/自適應(Responsive)

絕對居中最大的優勢應該就是對百分比形式的寬高支持的非常完美。甚至min-width/max-width 和min-height/max-height這些屬性在自適應盒子內的表現也和預期很一致。

CSS怎樣實現水平垂直居中的絕對定位居中技術

.Absolute-Center.is-Responsive {   width: 60%;    height: 60%;   min-width: 200px;   max-width: 400px;   padding: 40px; }

給內容塊元素加上padding也不影響內容塊元素的絕對居中實現。

五、 溢出情況(Overflow)

內容高度大于塊元素或容器(視區viewport或設為position:relative的父容器)會溢出,這時內容可能會顯示到塊與容器的外面,或者被截斷出現顯示不全(分別對應內容塊overflow屬性設置為visible和hidden的表現)。

加上overflow: auto會在內容高度超過容器高度的情況下給內容塊顯示滾動條而不越界。

.Absolute-Center.is-Overflow {   overflow: auto; }

CSS怎樣實現水平垂直居中的絕對定位居中技術

如果內容塊自身不設置任何padding的話,可以設置max-height: 100%;來保證內容高度不超越容器高度。

六、重繪(Resizing)

你可以使用其他class類或javascript代碼來重繪內容塊同時保證居中,無須手動重新計算中心尺寸。當然,你也可以添加resize屬性來讓用戶拖拽實現內容塊的重繪。

絕對居中(Absolute Centering)可以保證內容塊始終居中,無論內容塊是否重繪。可以通過設置min-/max-來根據自己需要限制內容塊的大小,并防止內容溢出窗口/容器。

.Absolute-Center.is-Resizable {   min-width: 20%;   max-width: 80%;   min-height: 20%;   max-height: 80%;   resize: both;   overflow: auto; }

CSS怎樣實現水平垂直居中的絕對定位居中技術

如果不使用resize:both屬性,可以使用CSS3動畫屬性transition來實現重繪的窗口之間平滑的過渡。一定要設置overflow:auto;以防重繪的內容塊尺寸小于內容的實際尺寸這種情況出現。

絕對居中(AbsoluteCentering)是唯一支持resize:both屬性實現垂直居中的技術。

注意:

  • 要設置max-width/max-height屬性來彌補內容塊padding,否則可能溢出。

  • 手機瀏覽器和IE8-IE10瀏覽器不支持resize屬性,所以如果對你來說,這部分用戶體驗很必要,務必保證對resizing你的用戶有可行的退路。

  • 聯合使用resize 和 transition屬性會在用戶重繪時,產生一個transition動畫延遲時間。

七、圖片(Images)

絕對居中(AbsoluteCentering)也適用于圖片。對圖片自身應用class類或CSS樣式,并給圖片添加height:auto樣式,圖片會自適應居中顯示,如果外層容器可以resize則隨著容器的重繪,圖片也相應重繪,始終保持居中。

需要注意的是height:auto雖然對圖片居中有用,但如果是在圖片外層的內容塊上應用了height:auto則會產生一些問題:規則的內容塊會被拉伸填充整個容器。這時,我們可以使用可變高度(Variable Height)方式解決這個問題。問題的原因可能是渲染圖片時要計算圖片高度,這就如同你自己定義了圖片高度一樣,瀏覽器得到了圖片高度就不會像其他情況一樣去解析margin:auto垂直居中了。所以我們最好對圖片自身應用這些樣式而不是父元素。

CSS怎樣實現水平垂直居中的絕對定位居中技術

HTML:

<img src="http://placekitten.com/g/500/200" class="Absolute-Center is-Image" alt="" />

CSS:

.Absolute-Center.is-Image {   height: auto; }  .Absolute-Center.is-Image img {    width: 100%;   height: auto; }

最好是對圖片自身應用此方法,效果如下圖:

CSS怎樣實現水平垂直居中的絕對定位居中技術

八、可變高度(Variable Height)

這種情況下實現絕對居中(AbsoluteCentering)必須要聲明一個高度,不管你是基于百分比的高度還是通過max-height控制的高度,還有,別忘了設置合適的overflow屬性。對自適應/響應式情景,這種方法很不錯。

與聲明高度效果相同的另一種方法是設置display:table;這樣無論實際內容有多高,內容塊都會保持居中。這種方法在一些瀏覽器(如IE/FireFox)上會有問題,我的搭檔Kalley

在ELL Creative(訪問ellcreative.com )上寫了一個基于Modernizr插件的檢測函數,用來檢測瀏覽器是否支持這種居中方法,進一步增強用戶體驗。

Javascript:

/* Modernizr Test for Variable Height Content */ Modernizr.testStyles('#modernizr { display: table; height: 50px; width: 50px; margin: auto; position: absolute; top: 0; left: 0; bottom: 0; right: 0; }', function(elem, rule) {   Modernizr.addTest('absolutecentercontent', Math.round(window.innerHeight / 2 - 25) === elem.offsetTop); });

CSS:

.absolutecentercontent .Absolute-Center.is-Variable {   display: table;   height: auto; }

CSS怎樣實現水平垂直居中的絕對定位居中技術

缺點:

瀏覽器兼容性不太好,若Modernizr不能滿足你的需求,你需要尋找其他方法解決。

1.與上述重繪(Resizing)情況的方法不兼容

2.Firefox/IE8:使用display:table會使內容塊垂直居上,不過水平還是居中的。

3.IE9/10: 使用display:table會使內容塊顯示在容器左上角。

4.Mobile Safari:內容塊垂直居中;若使用百分比寬度,水平方向居中會稍微偏離中心位置。

Ⅱ.其他居中實現技術

絕對居中(Absolute Centering)是一種非常不錯的技術,除此之外還有一些方法可以滿足

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
欧美性受xxxx黑人猛交88| 日韩精品一区二区三区电影| 成年人小视频网站| 国产精品沙发午睡系列| 日韩在线第三页| 日本超碰在线观看| 99精品一区二区三区的区别| 国产成人精品免费看在线播放| 樱空桃在线播放| 成人黄色大片网站| 欧美成人黄色网址| 超碰91在线播放| 国产va亚洲va在线va| 欧美精品第三页| 日韩视频在线观看一区二区三区| 色一情一乱一乱一区91| 国产成人a亚洲精v品无码| 国产无遮挡猛进猛出免费软件| 成年人深夜视频| 鲁一鲁一鲁一鲁一av| 欧美日韩中文字幕在线播放 | 成年在线观看视频| 黄色一级免费大片| av中文字幕av| 天天爽夜夜爽一区二区三区| 欧美日韩午夜爽爽| 91女神在线观看| www.国产在线视频| 亚洲综合20p| 国产又黄又大又粗视频| 国产又粗又大又爽的视频| 国产真人无码作爱视频免费| 日本成人在线不卡| 国产九九热视频| 国产中文字幕视频在线观看| 91香蕉国产线在线观看| 少妇人妻互换不带套| 性高湖久久久久久久久aaaaa| 777视频在线| 日韩欧美在线免费观看视频| 蜜桃传媒一区二区三区| 天堂а√在线中文在线| 不卡的在线视频| 国产三级日本三级在线播放| 中文字幕无码精品亚洲资源网久久| 国产又粗又长又爽又黄的视频| 天天摸天天碰天天添| 成年人午夜视频在线观看| 欧美与动交zoz0z| 国产又粗又长又爽又黄的视频| 欧美日韩在线观看不卡| 蜜臀久久99精品久久久酒店新书| 国产 日韩 亚洲 欧美| 亚洲乱码日产精品bd在线观看| 美女网站视频黄色| 熟女少妇精品一区二区| 国产美女三级视频| 逼特逼视频在线| 国产91美女视频| av天堂永久资源网| 欧美成人黑人猛交| 狠狠躁狠狠躁视频专区| 另类小说色综合| www.日本一区| 亚洲综合20p| 少妇熟女一区二区| 久操手机在线视频| 欧美午夜小视频| aa在线免费观看| 亚洲一区二区三区四区五区xx| www.这里只有精品| 波多野结衣免费观看| 日本a在线天堂| 久久久久久久久久网| caopor在线视频| 亚洲va综合va国产va中文| 午夜精品久久久久久久99热影院| 亚洲一区二区福利视频| a级网站在线观看| 男人的天堂avav| av之家在线观看| 爆乳熟妇一区二区三区霸乳| 九色porny自拍| 91精品国产吴梦梦| 国产精品999视频| 三级a三级三级三级a十八发禁止| 日本高清免费观看| 北条麻妃69av| 小早川怜子一区二区三区| 国产 国语对白 露脸| 国产xxxxx在线观看| 国产精品jizz在线观看老狼| 欧美又粗又长又爽做受| 日韩中文字幕a| 一二三四中文字幕| 无码人妻丰满熟妇区毛片| 色乱码一区二区三区熟女| 日本韩国欧美在线观看| 伊人影院综合在线| www.中文字幕在线| 亚洲天堂一区二区在线观看| 97国产精东麻豆人妻电影| 污污的视频免费| 国产免费毛卡片| 无颜之月在线看| www.99在线| 成人免费性视频| 99999精品| 久久综合久久色| 日韩国产成人无码av毛片| 日日干夜夜操s8| 欧美日韩国产精品激情在线播放| 一本之道在线视频| 男女视频在线看| 国产精品免费观看久久| 国产一区二区三区小说| 亚洲综合20p| 精品久久久久久久无码| 久久综合九色综合88i| 国产又黄又爽免费视频| 亚欧激情乱码久久久久久久久| 红桃av在线播放| 欧美日韩黄色一级片| www插插插无码免费视频网站| 亚洲综合在线一区二区| 中文字幕亚洲欧洲| 手机在线看福利| 能看的毛片网站| 99热成人精品热久久66| 国产午夜伦鲁鲁| 99热自拍偷拍| www..com日韩| 欧美精品久久久久久久自慰| a天堂资源在线观看| 欧美性视频在线播放| www.色.com| 香蕉视频免费版| 成人污网站在线观看| 黄色污污在线观看| 日韩 欧美 视频| 青娱乐自拍偷拍| 农村妇女精品一二区| 亚洲视频在线a| 亚洲视频第二页| 黄瓜视频免费观看在线观看www | 99久久99久久精品| 日本香蕉视频在线观看| 成人精品视频在线播放| 国产伦精品一区二区三区四区视频_| 日韩一级性生活片| 久久久久久香蕉| 色国产在线视频| 亚洲男人天堂2021| 天天想你在线观看完整版电影免费| 在线观看av的网址| 国产h视频在线播放| 可以免费在线看黄的网站| 午夜国产一区二区三区| 欧美成人乱码一二三四区免费| 精品一区二区成人免费视频| 国产va亚洲va在线va| 国产一级片黄色| 色呦呦网站入口| 久久久久久久久久久99| 天堂社区在线视频| 好吊色视频988gao在线观看| 国产精品后入内射日本在线观看| 欧美婷婷精品激情| 波多野结衣 作品| 粗暴91大变态调教| 伊人久久在线观看| 人人干人人视频| 50度灰在线观看| 一区二区三区国产免费| 永久免费看av| 无码人妻丰满熟妇区毛片| 小说区视频区图片区| 日韩 欧美 高清| 欧美三级午夜理伦三级老人| 欧美成人黑人猛交| 国产精品videossex国产高清 | 日本中文字幕一级片| 15—17女人毛片| 亚洲不卡中文字幕无码| 一级片黄色免费| 日韩av播放器| 97中文字幕在线| 亚洲欧美aaa| aa在线免费观看| 欧美美女黄色网| 手机在线成人免费视频| 国产美女无遮挡网站| 欧美狂野激情性xxxx在线观| 国产在线观看中文字幕| 国产xxxxx在线观看| 给我免费播放片在线观看| 伊人网在线免费| 亚洲美女爱爱视频| 天天插天天操天天射| 欧美视频第三页|