CSS实现同一行的图片和文字垂直居中


前端开发过程中,经常遇到这样的布局“同一行的图片和文字都垂直居中”,如下图所示:

Screenshot.png

现将几种实现方法总结如下:

html代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
< body >
< div  class = "line methodOne" >
     < img  src = "images/logo.png"  alt = "图片" />
     < span >我是文字</ span >
</ div >
< div  class = "line methodTwo" >
     < img  src = "images/logo.png"  alt = "图片" />
     < span >我是文字</ span >
</ div >
< div  class = "line methodThree" >
     < img  src = "images/logo.png"  alt = "图片" />
     < span >我是文字</ span >
</ div >
< div  class = "line methodFour" >
     < img  src = "images/logo.png"  alt = "图片" />
     < span >我是文字</ span >
</ div >
</ body >

css代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
* {
     margin 0 ;
     padding 0 ;
}
 
body {
     padding 0  10px ;
}
 
.line {
     font-size 20px ;
     border-bottom 1px  solid  #dddddd ;
}
 
.line img {
     width 80px ;
     height 80px ;
     border-radius:  50% ;
     margin-right 20px ;
}

方法1:padding+line-height

1
2
3
4
5
6
7
8
.methodOne {
     padding 20px  0 ;
}
 
.methodOne span {
     line-height 80px ;
     vertical-align top ;
}

方法2:display:flex;+align-items:center;

1
2
3
4
5
.methodTwo {
     display : flex;
     height 120px ;
     align-items:  center ;
}

注意:父级元素设置display:flex;后,子元素float失效。

方法3:padding+vertical-align:middle;

1
2
3
4
5
6
7
.methodThree {
     padding 20px  0 ;
}
 
.methodThree * {
     vertical-align middle ;
}

方法4:line-height+vertical-align:middle;

1
2
3
4
5
6
7
.methodFour {
     height 120px ;
     line-height 120px ;
}
.methodFour *{
     vertical-align middle ;
}

方法5:使用 Flexbox 实现子元素的居中效果,只需三行代码:

@mixin center-children {
    display: flex;
    justify-content: center;
    align-items: center;
}

  

由于 Flexbox 还是比较新的属性,那么添加上相关的浏览器前缀的话,会让它拥有更广泛的兼容性。

.parent {
    @include center-children;
}

  

正如你料想的那样,就这么简单我们就实现了:

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

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM