CSS基础:最详细 padding的 4 种用法解析

你好,我是云桃桃。

一个希望帮助更多朋友快速入门 WEB 前端的程序媛。

云桃桃,大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 Web 开发工具合集

269篇原创内容-gzh

后台回复“前端工具”可获取开发工具,持续更新中

后台回复“前端基础题”可得到前端基础100题汇总,持续更新中

后台回复“前端电子书”可获取20+本精选电子书

前言

CSS 中的 padding 属性用于控制元素内容与其边框之间的距离,即元素内边距。

它的主要作用是调整元素内部内容与边框之间上右下左的间距,以增加页面的美观性和布局灵活性。

好,那我们一起来看看吧。

Padding 基础

padding 属性的四个边属性分别是:

  1. padding-top:控制元素顶部内边距的大小,用于设置元素上边距的间距。

  2. padding-right:控制元素右侧内边距的大小,用于设置元素右边距的间距。

  3. padding-bottom:控制元素底部内边距的大小,用于设置元素下边距的间距。

  4. padding-left:控制元素左侧内边距的大小,用于设置元素左边距的间距。

来,代码演示下。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Padding Example</title>
    <style>
      .box {
        width: 200px;
        height: 200px;
        background-color: #f0f;
        margin-bottom: 20px;
      }

      .example1 {
        padding-top: 30px;
      }

      .example2 {
        padding-right: 60px;
      }

      .example3 {
        padding-bottom: 90px;
      }

      .example4 {
        padding-left: 1000px;
      }
    </style>
  </head>
  <body>
    <div class="box example1">Padding Top</div>
    <div class="box example2">Padding Right</div>
    <div class="box example3">Padding Bottom</div>
    <div class="box example4">Padding Left</div>
  </body>
</html>

效果如图。

图片

注意,用开发者工具检查/点选第 1 个元素,高度也从 200 变成 230 了,这是为什么呢?这就是内边距,增加了自身的高度了。为什么增加了呢?能不能固定呢?在第 3 个大标题(重要:padding 对元素大小的影响)处会聊到。

padding 属性的属性值可以是以下类型:

1. 长度值:可以使用像素(px)、百分比(%)、em、rem 等长度单位来指定 padding 的大小。

2. inherit:继承父元素的 padding 值。

注意:负值在 padding 中是不允许的。

简写方法

为了简化 CSS 代码,提高代码的可读性和维护性,通过简写方法,可以将四个方向的 padding 值一次性设置来提高效率。

padding 简写的属性顺序是:padding-top、padding-right、padding-bottom、padding-left。

对于 padding 属性的简写,可以根据需要设置 1、2、3 或 4 个值:

  • 一个值:表示所有四个方向的 padding 都使用相同的值。

  • 两个值:第一个值表示上下方向的 padding,第二个值表示左右方向的 padding。

  • 三个值:分别表示上、左右、下方向的 padding,这个不建议用,建议用4个值写法。

  • 四个值:分别表示上、右、下、左方向的 padding。

好,来看看代码吧。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Padding案例</title>
    <style>
      .box1 {
        width: 200px;
        height: 100px;
        background-color: lightblue;
        padding: 30px; /* 一个值,所有方向都使用30px的padding */
      }

      .box2 {
        width: 200px;
        height: 100px;
        background-color: lightcoral;
        padding: 20px 40px; /* 两个值,上下20px,左右40px的padding */
      }

      .box3 {
        width: 200px;
        height: 100px;
        background-color: lightgreen;
        padding: 10px 20px 30px; /* 三个值,上10px,左右20px,下30px的padding */
      }

      .box4 {
        width: 200px;
        height: 100px;
        background-color: lightskyblue;
        padding: 5px 10px 15px 20px; /* 四个值,上5px,右10px,下15px,左20px的padding */
      }
    </style>
  </head>
  <body>
    <div class="box1">一个值:所有方向都使用30px的padding</div>
    <div class="box2">两个值:上下20px,左右40px的padding</div>
    <div class="box3">三个值:上10px,左右20px,下30px的padding</div>
    <div class="box4">四个值:上5px,右10px,下15px,左20px的padding</div>
  </body>
</html>

重要!padding 对元素大小的影响

当你设置元素的 padding 时,实际上是在元素的内容区域周围添加了填充空间,这会影响元素的实际宽度。举例来说,如果你有一个宽高度为 200px*200px 的盒子,并且为其设置了 20px 的 左右 padding,30px 的上下 padding,则元素的总宽度会变为 240px(200px + 20px + 20px),总高度变为 260px(200px + 30px + 30px)。

换句话说,padding 的添加会增加元素的宽度,因为填充空间会占据外部边框之外的空间。

这一点在设计布局时尤为重要,因为要考虑到 padding 对元素尺寸的影响。

那要解决 padding 对元素宽度的影响,确保元素的宽度固定,怎么做呢?可以采取以下 2 种方法:

1. 盒子模型: 使用盒子模型中的 box-sizing 属性来控制元素的盒子模型。通过设置 box-sizing: border-box;,可以让元素的宽度包括 padding 和 border,而不会影响元素的实际宽度。这样,即使添加了 padding,元素的内容区域仍然保持固定的宽度。

仍然拿第一个案例中的第一个元素举例子。

.box {
  width: 200px;
  height: 200px;
  background-color: #f0f;
  margin-bottom: 20px;
  box-sizing: border-box;
}

效果,就回归 200px 啦。

图片

2. 计算实际宽度: 如果不使用 box-sizing: border-box;,而是采用默认的 content-box,则需要手动计算实际的宽度,包括 padding 在内。例如,如果想要一个总宽度为 240px 的元素,并且设置了 20px 的 padding,则元素的内容区域宽度应为 200px。

.box {
  width: 200px; /* 总宽度变成200 */
  padding: 20px;
}

选择哪种方法取决于你的布局需求。使用 box-sizing: border-box; 更加方便和直观,因为它使得元素的宽度属性直接控制内容区域的宽度,而无需手动计算 padding 对总宽度的影响。

ok,本文完。更多前端系列内容可以go公众.h:云桃桃

图片

推荐阅读:

高颜值登录页面第 2 波(CV即可,带动态背景!)

高颜值登录页面(一键复制)

  • 34
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单的HTML、CSS和JSON示例,用于实现一个本的登录功能。 HTML代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Login</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="container"> <h1>Login</h1> <form id="login-form"> <div class="form-group"> <label for="username">Username:</label> <input type="text" id="username" name="username"> </div> <div class="form-group"> <label for="password">Password:</label> <input type="password" id="password" name="password"> </div> <button type="submit">Login</button> </form> <div id="result"></div> </div> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="script.js"></script> </body> </html> ``` 上面的HTML代码中,我们使用了一个表单来获取用户输入的用户名和密码,同时还添加了一个用于展示登录结果的`<div>`元素。 CSS代码: ```css .container { margin: 50px auto; width: 400px; padding: 20px; border: 1px solid #ccc; text-align: center; } h1 { margin-bottom: 20px; } .form-group { margin-bottom: 20px; } label { display: block; margin-bottom: 5px; text-align: left; } input[type="text"], input[type="password"] { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 4px; box-sizing: border-box; margin-bottom: 10px; } button[type="submit"] { background-color: #4CAF50; color: white; padding: 10px; border: none; border-radius: 4px; cursor: pointer; } button[type="submit"]:hover { background-color: #45a049; } #error { color: red; margin-top: 10px; } ``` 上面的CSS代码中,我们为页面添加了一些基本的样式,使页面看起来更加美观。 JSON数据: ```json { "success": true, "username": "Tom", "userId": 123456 } ``` 上面的JSON数据中,我们定义了一个包含三个字段的对象,分别表示登录是否成功、用户的用户名和用户ID。这些数据可以在登录成功后由服务器端返回给客户端,并由JavaScript进行解析和展示。 当用户在表单中输入用户名和密码并点击登录按钮后,我们可以使用JavaScript/jQuery来发送Ajax请求,并解析服务器返回的JSON数据。下面是一个简单的示例代码: ```javascript $("#login-form").on("submit", function(event) { event.preventDefault(); //阻止表单默认提交行为 var username = $("#username").val(); var password = $("#password").val(); $.ajax({ url: "login.php", method: "POST", data: { username: username, password: password }, dataType: "json", success: function(data) { if(data.success) { $("#result").text("Welcome " + data.username + "!"); } else { $("#result").text("Login failed. Please check your username and password."); } }, error: function() { $("#result").text("Request failed. Please try again later."); } }); }); ``` 在上面的代码中,我们使用了jQuery的`$.ajax()`方法来发送一个POST请求到服务器端的`login.php`页面,同时传递了用户名和密码。当请求成功时,`success`回调函数将会解析返回的JSON数据,并根据其中的`success`字段来判断是否登录成功。在登录成功的情况下,我们可以使用`data.username`来获取用户的用户名并展示在页面上。如果登录失败,我们也可以在页面上显示相应的提示信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值