div垂直居中

轉自:https://www.cnblogs.com/mihoutaoguniang/p/6124299.htmlcss

小果今天要實現這樣的效果:單純css樣式,實現body下子集的水平垂直居中。html

body內容:web

1
2
3
4
5
< body >
     < div  class="div1">
         < div  class="div2"></ div >
     </ div >
</ body >

效果:flex

經過一系列的嘗試,實現了四種方法,驚奇的發現,其中三個是用position:absolute實現的:(div大小肯定)spa

1.原理:position: absolute;top: 50%;left: 50%;margin-top: -50px;margin-left: -50px;code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<style type= "text/css" >
  html,body{
     height : 100% ;
     width : 100% ;
     background black ;
     }
  .div 1 {
     height 100px ;
     width 100px ;
     position absolute ;
     top 50% ;
     left 50% ;
     margin-top -50px ;
     margin-left -50px ;
     background : pink;
     }
  .div 2 {
     height 10px ;
     width 10px ;
     margin-top 90px ;
     background : lightblue;
     }
</style>

2.原理:margin: auto;position: absolute;top: 0;right:0;bottom: 0;left: 0;orm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<style type= "text/css" >
  html,body{
     height : 100% ;
     width : 100% ;
     background black ;
    }
  .div 1 {
     height 100px ;
     width 100px ;
     margin auto ;
     position absolute ;
     top 0 ;
     right : 0 ;
     bottom 0 ;
     left 0 ;
     background : pink;
     }
  .div 2 {
     height 10px ;
     width 10px ;
     margin-top 90px ;
     background : lightblue;
     }
</style>

3.原理:transform:translate(-100px,-100px);position: absolute;top: 50%;left: 50%;htm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<style type= "text/css" >
  html,body{
     height : 100% ;
     width : 100% ;
     background black ;
     }
  .div 1 {
     height 100px ;
     width 100px ;
     margin auto ;
     position absolute ;
     top 50% ;
     left 50% ;
     background : pink;
     -webkit-transform:translate( -100px , -100px );
     transform:translate( -100px , -100px );
     }
  .div 2 {
     height 10px ;
     width 10px ;
     margin-top 90% ;
     background : lightblue;
     }
</style>

4.原理:display:flex;justify-content:center;align-items:center;blog

body是這樣子的:ci

1
2
3
4
< body >
     < div  class="div1"></ div >
     < div  class="div2"></ div >
</ body >

css:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<style type= "text/css" >
  html,body{
     height : 100% ;
     width : 100% ;
     background black ;
     display : flex;
     justify- content center ;
     align-items:  center ;
     }
  .div 1 {
     height 100px ;
     width 100px ;
     background : pink;  
     }
  .div 2 {
     height 10px ;
     width 10px ;
     position absolute ;
     left 50% ;
     top 50% ;
     margin-top 40px ;
     margin-left -50px ;
     background : lightblue;
     }
</style>

以上是div1的大小肯定的居中方法,那若是大小不知道呢?小果使用了paddingO(∩_∩)O

代碼君:(display: table-cell必不可少啊)

 body內容:

1
2
3
4
5
<body>
     <div class= "div1" >
         <div class= "div2" ></div>
     </div>
</body>

css內容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<style type= "text/css" >
  html,body{
     height : 100% ;
     width : 100% ;
     background black ;
     }
  .div 1 {
     padding 50px ;
     display table-cell ;
     position absolute ;
     top 50% ;
     right : 50% ;
     bottom 50% ;
     left 50% ;
     background : pink;
     margin auto ;
     }
  .div 2 {
     padding 10px ;
     margin-top 30px ;
     margin-left -50px ;
     background : lightblue;
     }
</style>

 然而,效果是這樣的:

好了,整理完畢。若是果果大軍們有什麼意見,或者更好的方法,歡迎交流,隨之奉陪哈,謝謝!

相關文章
相關標籤/搜索