1. 程式人生 > >HTML+CSS水平垂直居中

HTML+CSS水平垂直居中

  啦啦啦,好了,今天來分享自己的第一個知識點,難得自己還能想起來過來部落格園,寫寫部落格的。

  好了,言歸正傳,今天分享關於html和css的一個簡單的知識點,對於大部分從事前端開發的人員來說可能都是很簡單的,但是,對於我這種患有嚴重健忘症的人還有一些初入前端的小夥伴來說,整理一下可能是有百利而無一害的。

  今天就簡單整理一下前端HTML+CSS實現水平垂直劇中的效果

  一 >>> 已知元素寬高

   方法1:

    position:absolute;

    left:0;

    right:0;

    top:0;

    bottom:0;

    margin:auto;

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <style>
 7     * {
 8         margin: 0;
 9         padding: 0;
10     }
11     .wrapper {
12         width: 400px;
13         height:
400px; 14 background: rgba(100, 100, 84, .5); 15 } 16 .inner { 17 position: absolute; 18 top: 0; 19 left: 0; 20 bottom: 0; 21 right: 0; 22 margin: auto; 23 width: 100px; 24 height: 100px; 25 background: #90f5; 26 } 27 </
style> 28 </head> 29 <body> 30 <div class="wrapper"> 31 <div class="inner"></div> 32 </div> 33 </body> 34 </html>
View Code

    下面是效果圖:

  

  ps:測試的時候還有點小翻車呢,不過問題不大,對子元素設定position:absolute後,元素會脫離文件流進行定位,在父元素上加上position:relative就可以了。

  再貼一張圖:

   方法2:

    positionn:absolute;

    left , top:50%;

    //包含塊必須是容器

    margin-left,margin-top為負的自身寬高的一半

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <style>
 7     * {
 8         margin: 0;
 9         padding: 0;
10     }
11     .block {
12         position: absolute;
13         top: 50%;
14         left: 50%;
15         margin-left: -200px;
16         margin-top: -200px;
17         width: 400px;
18         height: 400px;
19         background: #0ff;
20     }
21     </style>
22 </head>
23 <body>
24     <div class="block"></div>
25 </body>
26 </html>
View Code

    貼個效果圖:

  二 >>> 元素寬高未知

   (當然元素寬高已知的居中方法依舊適用於未知寬高的元素,此處不再贅述)

   方法1:   

    position:absolute;

    left , top : 50%;

    //包含塊必須是為容器 

    transform : translate(-50% , -50%);

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <style>
 7     * {
 8         margin: 0;
 9         padding: 0;
10     }
11     .block {
12         position: absolute;
13         top: 50%;
14         left: 50%;
15         width: 400px; // 沒辦法,此處必須指定元素的寬高,不過問題不大,假裝不知道好了
16         height: 400px;
17         transform: translate(-50%, -50%);
18         background: #0ff;
19     }
20     </style>
21 </head>
22 <body>
23     <div class="block"></div>
24 </body>
25 </html>
View Code

  

    執行結果與上圖一致,就不再重複貼啦。

    此處,需要關注一個問題,translate()移動的百分比是相對於元素本身的寬高

   方法2:flex佈局

    父元素容器display:flex

    align-items : center

    justify-content : conter

    下面是執行效果圖:

 

    flex是CSS3中的屬性,因此在移動端構建彈性盒模型時,如果想用flex就必須要考慮瀏覽器相容性。

  三 >>> 單行文字居中

   方法1:text-align:center;  //水平方向居中 (在父元素中設定)

        line-height:$(父元素的高度)//垂直方向居中 (在文字元素中設定)

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <style>
 7     * {
 8         margin: 0;
 9         padding: 0;
10     }
11     .wrapper {
12         width: 400px;
13         height: 400px;
14         background: rgba(100, 100, 84, .5);
15         text-align: center;
16     }
17     .text {
18         line-height: 400px;
19     }
20     </style>
21 </head>
22 <body>
23     <div class="wrapper">
24         <span class="text">hello,2019年加油</span>
25     </div>
26 </body>
27 </html>
View Code

    貼個圖:

    2019年,大家都要加油呀!

  四 >>> 圖片元素居中

    圖片元素比較特殊,其display屬性值為inline-block,意味著圖片元素既有塊級元素的特性,例如可以指定寬高等,同時具備行級元素的特性。因此,圖片的水平垂直居中的實現可以用未知寬高和已

    知寬高元素的居中方式來實現,此處介紹圖片元素一種特殊的水平居中方式。

    在圖片元素的父元素上加text-align:center

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <style>
 7         * {
 8             margin: 0;
 9             padding: 0;
10             text-align: center;
11         }
12         .wrapper {
13             width: 400px;
14             height: 400px;
15             background: rgba(100, 100, 84, .5);
16         }
17         img {
18             width: 300px;
19         }
20     </style>
21 </head>
22 <body>
23     <div class="wrapper">
24         <img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1547137152&di=173ab7466063a1c492761cb613c8172e&imgtype=jpg&er=1&src=http%3A%2F%2Fpic2.ooopic.com%2F12%2F40%2F58%2F18bOOOPIC9c.jpg" alt="">
25     </div>
26 </body>
27 </html>
View Code

    執行效果貼圖:

    從網上隨便拉了張圖,不知道會不會構成侵權呢。不管了,用了再說...

/***************************************************************************************************/

/****   今天一整天都在複習計算機網路,全英文1000頁,忽然有點慌了                  ***/

/**************************************************************************************************/

至此,停筆。

2019-01-04  00:42:23