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>