当前位置: 首页 > news >正文

CSS 美化页面(三)

一、盒模型

      盒模型本质上是一个盒子,封装周围的HTML元素 。包含:  外边距,边框,填充,和实际内容

一个盒子由四个区域组成:内容(Content)、内边距(Padding)、外边距(Margin)以及边框(Border)。 

有五个属性分别是:width、height、padding、border和margin。具体来说,width和height用于定义内容区域的宽度和高度,而非盒子的整体尺寸

 二、盒模型模式

    CSS盒模型存在两种不同的模式:标准盒模型与IE盒模型(亦被称为怪异盒模型或替代盒模型)。

1、标准盒模型

      所设定的元素宽度和高度仅涵盖内容区域,而内边距、边框以及外边距则被视为额外添加到内容尺寸上的部分。 

2、IE盒模型 

所设定的宽度和高度理解为包含内容、内边距及边框在内的总和,但并不包含外边距。

height=content_height+padding_height+border_left 

width=content_width+padding_width+border_bottom

   总之:可以使用 box-sizing CSS 属性来控制盒模型的选择,从而影响元素的布局计算。 

box-sizing: content-box 指定使用标准盒模型;

box-sizing: border-box 则指定使用IE盒模型;

 三、bordermargin 和 padding 的区别

属性作用位置示例
border定义元素的边框,位于内容和外边距之间。位于内容(或内边距)和外边距之间,包裹元素内容和内边距。border: 2px solid #000; 表示一个宽度为 2px 的黑色实线边框。
margin定义元素与其他元素之间的外部间距,用于控制元素之间的距离。位于元素的边框外部,影响元素与其他元素之间的距离。margin: 10px; 表示元素与其他元素之间的距离为 10px。
padding定义元素内容与边框之间的内部间距,用于控制内容与边框的距离。位于内容和边框之间,增加内容与边框的距离。padding: 10px; 表示内容与边框之间的距离为 10px。

四、边框border

1、简写语法:

border 是 border-width(宽度)、border-style(样式)、border-color(颜色),顺序可自由组合,用空格分隔。 

border:2px solid black; 

2、进阶用法:

单独控制各方向边框
通过 border-topborder-rightborder-bottomborder-left 分别设置不同边的样式。 

圆角边框
使用 border-radius 实现圆角效果,值越大圆角弧度越明显。

透明边框
通过 transparent 隐藏边框但保留占位空间,适用于布局调整。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>#name {/* 设置输入框的大小 */width: 200px;height: 30px;/* 设置输入框的边框和圆角 */border-radius: 5px;/* 设置输入框的边框颜色和样式 4个方向 */border-bottom: 5px solid #4CAF50;border-left: 5px solid #6e408d;border-top: #4CAF50 solid 5px;border-right: #6e408d solid 5px;}form{border: 2px solid #d0e9a3;/* 内边距 */padding: 10px;}div{width:300px;height: 200px;border: 2px solid #a59ace;/* margin: 50px ;   *//* 水平居中 */margin: 50px  auto;   }</style>
</head><body><div><form action="" method="post" id="form1">姓名:<input type="text" name="name" id="name"><br><br>密码:<input type="password" name="password" id="password"><br><br><input type="submit" name="remember" id="remember"></form></div>
</body>

五、内边距padding

  1、简写语法:

    它是用于设置元素内容与边框(border)之间的内边距,‌支持 1~4 个值‌,有padding-top、padding-right、padding-bottom、padding-left 遵循顺时针方向(上→右→下→左),如图所示:

/* 统一四边内边距 */
.element { padding: 20px; }/* 上下10px + 左右20px */
.element { padding: 10px 20px; }/* 上10px + 右20px + 下30px + 左20px */
.element { padding: 10px 20px 30px; }/* 单独设置四边 */
.element { padding: 10px 20px 5px 15px; }  /* 上 右 下 左 */

2、常见使用场景 

   1. 内容与边框留白
。。。   <style>.box {width: 300px;border: 2px solid #6f4caf; /* 边框 */padding: 30px; /* 内边距 */background-color: #f0f8ff; /* 背景颜色 */font-size: 16px;}</style>
</head>
<body><div class="box">这是展示内容与边框之间的留白(padding)。</div>
</body>
</html>

    2. 按钮/图标内间距

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Padding 示例</title><style>.box {width: 300px;border: 2px solid #6f4caf; /* 边框 */padding: 30px; /* 内边距 */background-color: #f0f8ff; /* 背景颜色 */font-size: 16px;margin-bottom: 20px; /* 与按钮的间距 */}/* 按钮样式 */.button {padding: 10px 20px; /* 上下内边距10px,左右内边距20px */font-size: 16px; /* 字体大小 */color: #fff; /* 字体颜色 */background-color: #6f4caf; /* 按钮背景颜色 */border: none; /* 去掉边框 */border-radius: 5px; /* 圆角 */cursor: pointer; /* 鼠标悬停时显示手型 */transition: background-color 0.3s; /* 背景颜色过渡效果 */}/* 按钮悬停效果 */.button:hover {background-color: #90c3cc; /* 悬停时背景颜色变深 */}/* 图标按钮样式 */.icon-button {padding: 10px; /* 内边距 */font-size: 20px; /* 图标大小 */color: #fff; /* 图标颜色 */background-color: #6f4caf; /* 按钮背景颜色 */border: none; /* 去掉边框 */border-radius: 50%; /* 圆形按钮 */cursor: pointer; /* 鼠标悬停时显示手型 */display: inline-flex; /* 使内容居中 */align-items: center; /* 垂直居中 */justify-content: center; /* 水平居中 */transition: background-color 0.3s; /* 背景颜色过渡效果 */}/* 图标按钮悬停效果 */.icon-button:hover {background-color: #be4a84; /* 悬停时背景颜色变深 */}</style>
</head>
<body><div class="box">这是展示内容与边框之间的留白(padding)。</div><!-- 普通按钮 --><button class="button">提交</button><!-- 图标按钮 --><button class="icon-button">★</button>
</body>
</html>

3、 响应式布局适配

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Padding 百分比示例</title><style>.container {width: 80%; /* 容器宽度为父容器的 80% */margin: 0 auto; /* 居中对齐 */padding: 10%; /* 内边距为容器宽度的 10% */background-color: #f0f8ff; /* 浅蓝色背景 */border: 2px solid #4CAF50; /* 绿色边框 */}</style>
</head>
<body><div class="container">这是一个示例,展示使用百分比设置内边距(padding: 10%;)。</div>
</body>
</html>

 4、与背景的关系

背景色/图会覆盖 padding 区域‌,但可通过 background-clip 控制

 

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>background-clip 示例</title><style>.box {width: 300px;padding: 20px; /* 内边距 */border: 5px solid #4CAF50; /* 边框 */background-color: #f0f8ff; /* 浅蓝色背景 */margin-bottom: 20px;}/* 默认值:背景覆盖到边框区域 */.border-box {background-clip: border-box;}/* 背景覆盖到 padding 区域,不覆盖边框 */.padding-box {background-clip: padding-box;}/* 背景仅覆盖内容区域 */.content-box {background-clip: content-box;}</style>
</head>
<body><div class="box border-box">背景覆盖到边框区域(background-clip: border-box)。</div><div class="box padding-box">背景覆盖到 padding 区域(background-clip: padding-box)。</div><div class="box content-box">背景仅覆盖内容区域(background-clip: content-box)。</div>
</body>
</html>

注意:内边距不能是负数哦!!! 

六、外边距margin

  1、简写语法:

    它是用于控制元素与其他元素之间的外边距,‌支持 1~4 个值‌,有margin-top、margin-right、margin-bottom、margin-left 遵循顺时针方向(上→右→下→左)如图同上(内边距)

/* 统一四边外边距 */
.box { margin: 20px; }/* 上下20px + 左右40px */
.box { margin: 20px 40px; }/* 上20px + 右40px + 下60px + 左40px */
.box { margin: 20px 40px 60px; }/* 单独设置四边 */
.box { margin: 10px 20px 30px 40px; }  /* 上 右 下 左 */

2、核心特性与特殊场景

1. ‌百分比值基准
<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Margin 百分比示例</title><style>.box {width: 50%; /* 容器宽度为父容器宽度的 50% */height: 100px; /* 固定高度 */margin: 10%;  /* 上下左右外边距为父容器宽度的 10% */background-color: #4CAF50; /* 绿色背景 */}.parent {width: 80%; /* 父容器宽度为视口宽度的 80% */margin: 0 auto; /* 父容器居中 */background-color: #474b4e; /* 浅蓝色背景 */padding: 20px; /* 内边距 */}</style>
</head>
<body><div class="parent"><div class="box"></div></div>
</body>
</html>

2. ‌负值效果

  • margin-top: -10px:元素向上移动,可能覆盖上方内容‌
  • margin-left: -20px:元素向左移动,常用于微调布局‌
  • margin-right: -15px:右侧元素左移,自身宽度不变‌

 原始位置

  右侧内容左移  

向上移动 

 

 向左移动

3. ‌auto 自动分配

用于水平居中布局,需配合 width 使用‌

  .parent {width: 80%; /* 父容器宽度为视口宽度的 80% */margin: 0 auto; /* 父容器居中 */background-color: #474b4e; /* 浅蓝色背景 */padding: 20px; /* 内边距 */}

4. ‌外边距合并(Margin Collapse)
  • 相邻块级元素‌:上下外边距取较大值(非相加)‌
    示例:元素 A margin-bottom: 30px,元素 B margin-top: 20px → 实际间距为 30px。
  • 父元素与子元素‌:若父元素无 padding 或 border,子元素的垂直外边距会穿透到父元素外部‌

 七、综合应用

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=, initial-scale=1.0"><title>Document</title><style>.card {width: 300px;margin: 20px auto;  /* 水平居中‌ */padding: 15px;border: 2px solid #c97575;}.card img {margin-bottom: -10px;  /* 图片与下方文字重叠*/}.card p {margin-top: 15px;  /* 实际间距为15px(合并后) */}</style>
</head>
<body><div class="card"><img src="2.jpg" alt="bear" width="60%" height="auto"><p>图片描述文字</p></div></body>
</html>

 

相关文章:

  • MegaTTS3: 下一代高效语音合成技术,重塑AI语音的自然与个性化
  • 浏览器运行Pytorch无法启用显卡
  • poll为什么使用poll_list链表结构而不是数组 - 深入内核源码分析
  • Java文件批量复制工具实现解析
  • 【npm install 一直转圈的问题】
  • 力扣HOT100——560.和为k的子数组
  • Kaggle竞赛——商店销售时序预测(Store Sales)
  • ROS---<angles>
  • 分布式锁+秒杀异步优化
  • 从零开始:Python运行环境之VSCode与Anaconda安装配置全攻略 (1)
  • 4.vtk光照vtkLight
  • 使用Python爬取豆瓣电影Top250并保存到Excel完整教程
  • 测试基础笔记第四天(html)
  • 交换机与路由器的默契配合:它们的联系与区别
  • Zookeeper 命令返回数据的含义
  • 【软考-架构】13.4、质量属性-架构评估
  • 【HDFS入门】HDFS核心组件Failover Controller:高可用保障机制解析
  • K8s 生产落地
  • 计算机网络:实验五路由器的应用
  • 360壁纸如何卸载
  • 软硬件企业集中发布未成年人模式使用手册
  • “75后”袁达已任国家发改委秘书长
  • 深入贯彻中央八项规定精神学习教育中央指导组派驻地方和单位名单公布
  • 辽宁辽阳市白塔区一饭店发生火灾,事故已造成22人遇难3人受伤
  • 丁俊晖连续7年止步世锦赛16强,中国军团到了接棒的时候
  • 10台核电新机组获核准,上海核电厂商独揽超500亿元订单