css - 为什么 CSS 'padding' 在我的元素中创建边距?
问题描述
我有一个宽度为 100% 的“ul”,但是当我在其中放入“填充”时,会出现右边距。为什么会这样?代码如下。
nav ul {
list-style: none;
text-align: center;
background-color: rgb(90, 32, 102);
line-height: 3.125em;
position: relative;
right: 38px;
width: 100%;
padding: 1em 0;
}
<nav>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Products</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
解决方案
在这里使用position: relative
andright: 38px
不是惯用的。就是说将 ul 元素的右边缘移动到它们通常所在位置的左侧38px
,从而创建一个右边距。最好的第一步可能是删除这两个属性。
似乎您想要一个没有项目符号的居中列表,这就是结果。ul 缩进用padding
设置,左边已经设置为 0。
起初,我误读了这个问题,认为 li 元素因太宽而破坏了风格。给出的建议被接受了,所以我认为如果不是答案,它会很有帮助。
默认情况下,填充超出元素的宽度,因此您的 ul 块实际上是100% + 1em
高的。
使用box-sizing
css 的属性来应用box-sizing: border-box;
将创建预期的行为。
https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing
border-box 宽度和高度属性包括内容、填充和边框,但不包括边距。请注意,填充和边框将在框内。例如,.box {width: 350px; border: 10px solid black;} 渲染一个 350px 宽的盒子。内容框不能为负数,下限为0,无法使用border-box使元素消失。
推荐阅读
- sql - 如何为我的 Reporting Services 目录中的所有报表添加内容管理员权限?
- java - 使用循环访问 Freemarker 根对象
- dart - 如何使用 Flutter 创建考试准备?
- tensorflow - Tensorflow padded_batch 用于稀疏张量?
- python - 使用现有调色板更快地量化图像?
- javascript - jQuery/Javascript - 根据图片的 src 设置点击操作
- java - Spring 似乎忽略 required=false 请求参数
- python - 如何将 `tf.nn.dynamic_rnn` 与非 rnn 组件一起使用
- primefaces - 已弃用的 Primefaces 布局组件的首选替代方案是什么
- pattern-matching - 致命错误:异常 Match_failure("main.ml", 8, 15)