谈谈text-align的历史、本质、特性

本文探讨了CSS的text-align属性的本质,它不仅控制文本的对齐,还影响行内元素,如图片和输入框。文章通过代码示例揭示了text-align对块级和行内元素的不同效果,并提供了使块级元素居中的两种方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

text-align本质探究

  • text-align:直接翻译过来就是设置文本的对齐方式

  • MDN: 定义行内内容(例如文字)如何相对它的块父元素对齐,不控制块元素自己的对齐,只控制它的行内内容的对齐。

在这里插入图片描述

  • 常用的值

​  left:左对齐

​  right:右对齐

​  center:正中间显示

​  justify:两端对齐

  • W3C解释:

在这里插入图片描述

  • W3C: 大概意思是这个属性只是对行内级元素起作用,对块级元素不起作用。

  • 代码演示:

  • left值:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <style>
        .box {
          text-align: left;
          color: #fff;
          background-color: #f00;
          width: 500px;
          height: 100px;
          font-size: 18px;
        }
      </style>
    </head>
    
    <body>
      <div class="box">
        我是box的内容
      </div>
    </body>
    
    </html>
    

在这里插入图片描述

  • right值:

  • <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <style>
        .box {
          text-align: right;
          color: #fff;
          background-color: #f00;
          width: 500px;
          height: 100px;
          font-size: 18px;
        }
      </style>
    </head>
    
    <body>
      <div class="box">
        我是box的内容
      </div>
    </body>
    
    </html>
    
  • 效果如图

  • 在这里插入图片描述

  • center值:

  • <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <style>
        .box {
          color: #fff;
          background-color: #f00;
          width: 500px;
          height: 100px;
          font-size: 18px;
          text-align: center;
        }
      </style>
    </head>
    
    <body>
      <div class="box">
        我是box的内容
      </div>
    </body>
    
    </html>
    
  • 在这里插入图片描述

  • 如果按text-align字面上的理解就是设置文本在父元素对齐,如果我在父元素中的内容是一张图片呢,会不会居中显示呢

  • <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <style>
        .box {
          background-color: #f00;
          height: 200px;
          text-align: center;
        }
    
        img {
          height: 100px;
        }
      </style>
    </head>
    
    <body>
      <div class="box">
        <img src="./images/diqiu.jpg" alt="">
      </div>
    </body>
    
    </html>
    

*在这里插入图片描述

*在这里插入图片描述

结果很明显,图片元素也可以居中显示,text-align属性不单单是设置文本的对齐,也可以设置图片的对齐,现在看MDN就是描述定义行内内容(例如文字例如图片,输入框)如何相对它的块父元素对齐。

  • 如果我父级里面的是一个块级子元素效果还会居中吗?

  • <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <style>
        .box {
          background-color: #f00;
          height: 300px;
          text-align: center;
        }
    
        .content {
          width: 100px;
          height: 100px;
          background-color: aqua;
        }
      </style>
    </head>
    
    <body>
      <div class="box">
        <div class="content">
    
        </div>
      </div>
    </body>
    
    </html>
    
  • 结果是不会居中的,为什么呢,我们去看看w3c官网解析:是定义行内级元素在父元素中的对齐,而子元素是div块级元素,所以浏览器不做处理!

    在这里插入图片描述

    那现在我们知道text-align本质之后,如果我们需要块级元素在父元素中居中,就变得很容易了

    一、既然我们知道text-align自对行内级元素起作用,那我们就把块级元素改成行内级就行
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <style>
        .box {
          background-color: #f00;
          height: 300px;
          text-align: center;
        }
    
        .content {
          display: inline-block;
          width: 100px;
          height: 100px;
          background-color: aqua;
        }
      </style>
    </head>
    
    <body>
      <div class="box">
        <div class="content">
    
        </div>
      </div>
    </body>
    
    </html>
    

    结果也可以居中

    在这里插入图片描述

    二、利用块级元素的自身的对齐
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <style>
        .box {
          background-color: #f00;
          height: 300px;
          text-align: center;
        }
    
        .content {
          /* display: inline-block; */
          margin: 0 auto;
          width: 100px;
          height: 100px;
          background-color: aqua;
        }
      </style>
    </head>
    
    <body>
      <div class="box">
        <div class="content">
    
        </div>
      </div>
    </body>
    
    </html>
    
    • 结果也可以对齐

      在这里插入图片描述

      为什么说css难学呢,如果你只了解字面上的意思,是很难知道为啥设置在有些元素就起作用,有些就不行,只有你理解他的历史和本质就可以知道原因,然后针对出现的原因去处理业务上的问题,就很容易啦!

      如有不对,请大佬留言指出,一起交流,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值