gpt4 book ai didi

css - 为什么 CSS text-align 属性居中 block 级内容?

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:49 26 4
gpt4 key购买 nike

我有两个问题。
1) 导航链接中的文本是否居中,因为我将这些链接(a 标签)的显示属性的值设置为 block 现在它基本上与我在 a 中居中文本一样p 元素?
2) 我也将i 元素(font awesome icons) 的display 属性设置为block,那么为什么这些元素也居中呢?如果将 i 元素的显示属性更改为 table,则这些图标不会居中。在这种情况下,block 值的行为不应该与 table 相同吗?据我所知,我只能使用 text-align 来对齐内联和内联 block 元素。那为什么会这样呢?

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Text-align</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<style>
.cf:before,
.cf:after {
content: "";
display: block;
}

.cf:after {
clear: both;
}

body {
margin: 0;
font: 16px/1 sans-serif;
}

nav {
height: 120px;
background-color: #f2f2f2;
padding: 0 5%;
}

ul {
list-style: none;
padding: 0;
margin: 0;
}

li {
float: left;
color: #a6a6a6;
border-left: 1px solid #a6a6a6;
}

li:last-child {
border-right: 1px solid #a6a6a6;
}

li:hover {
color: #de5728;
}

a {
display: block;
text-decoration: none;
color: inherit;
font-size: 10px;
text-transform: uppercase;
padding: 37px 0;
width: 136px;
text-align: center;
}

nav a .fa {
display: block;
font-size: 36px;
}

</style>
</head>

<body>
<nav>
<ul class="cf">
<li>
<a href="#">
<i class="fa fa-shield"></i> Domov
</a>
</li>
<li>
<a href="#">
<i class="fa fa-leaf"></i> Portfolio
</a>
</li>
<li>
<a href="#">
<i class="fa fa-bolt"></i> O nas
</a>
</li>
<li>
<a href="#">
<i class="fa fa-trophy"></i> Kontakt
</a>
</li>
</ul>
</nav>
</body>
</html>

最佳答案

  1. 是的。 block 容器可以应用文本对齐,这会对齐它们的内容

  2. 正常流中的 block 级元素占据其包含 block 的整个宽度,在您的示例中是 li 元素的内容框的宽度。

元素的内容框宽度是根据这个等式计算的:

'margin-left' + 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-right-width' + 'margin-right' = width of containing block

在您的示例中,边距和填充解析为 0,边框解析为 0 或 1 像素。包含 block 由 <a> 提供元素及其宽度的其余部分是 <i> 的内容框宽度当它是 display:block 时的元素.

text-align 属性是继承的,所以 <i>元素采用对齐方式并将其内容在其内容框的宽度内居中,<i> 的内容fontawesome 通过 :before 提供的元素伪元素。

表格元素是 block 级的,但它们以不同的方式解析相等性。相反,它们的内容框的宽度被缩小以适合,并且在您的示例中,包含 block 的任何剩余宽度都被赋予了右边距。

这会将表格放在其容器的左侧,并且内容(同样是从 fontawesome 生成的内容)紧紧地放在里面。在表格内创建的匿名表格单元格仍然继承文本对齐设置,但内容的两边都没有空间供它移动。所以它也出现在 float <li> 的左侧。宽度由 <a> 紧密包裹决定的元素里面的元素。

关于css - 为什么 CSS text-align 属性居中 block 级内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35878031/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com