CSS的display:table-cell:多行文字的垂直居中水平居中

梦里梦外; 2023-01-02 07:28 253阅读 0赞

参考:https://blog.csdn.net/lishuai_it_trip/article/details/88411550?utm_medium=distribute.pc_relevant_t0.none-task-blog-searchFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-searchFromBaidu-1.control

问题:多行文本垂直居中存在问题

不可行方法:一般的思路就是高度等于行高,但是这个仅适用于单行文本,【第二行不行】

不可行方法:flex布局也只是对元素可以设置垂直居中,不作用于文本,所以是错误的。【对文字没有效果】

可行的方法:display:table和display:table-cell

  1. 给父元素<div>设置display:table
  2. 子元素<p>设置display:table-cell
  3. 再加上一个vertical-align:middle(默认情况下,图片,按钮,文字和单元格都可以用vertical-align属性),
  4. 于是单行多行的文本垂直居中问题就解决了,不论内容有多少,不论行高是多少,总之都会整体垂直居中
  5. <!DOCTYPE html>
  6. <html lang="cn">
  7. <head>
  8. <meta charset="UTF-8">
  9. <title>Title</title>
  10. <style>
  11. div{
  12. display: table;
  13. border: 2px solid red;
  14. width: 500px;
  15. height: 200px;
  16. }
  17. p{
  18. display: table-cell;
  19. vertical-align: middle;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <div>
  25. <p>
  26. hello world <br/>
  27. hello world <br/>
  28. hello world <br/>
  29. hello world
  30. </p>
  31. </div>
  32. </body>
  33. </html>

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Z1amlhbjk1NDQ_size_16_color_FFFFFF_t_70

其实这就相当于模拟了table的布局属性,display:table相当于

,display:table-cell就相当于

我们不妨来看下

,,也是从父元素继承,再往上则是tbody(table布局浏览器都会自动生成这个标签),

而tbody的默认vertical-align是middle(这个我在IE和Firefox都得到了认证),

所以当我们给其他标签加上display:table-cell时,并没有这个属性,

所以上文为了使文本垂直居中,需要我们手动加上vertical-align:middle。

,在浏览器的默认属性:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Z1amlhbjk1NDQ_size_16_color_FFFFFF_t_70 1

th、td父元素是

发表评论

表情:
评论列表 (有 0 条评论,253人围观)

还没有评论,来说两句吧...

相关阅读

    相关 CSS水平垂直居中

            在实际前端开发中,我们会遇到让一些元素居中的情况,如水平居中、垂直居中或者水平垂直居中等等。CSS的表示方法有很多,现在小编在这里总结一下,以便开发的时候可以快