• CSS-盒子模型-内容,边框,内边距,外边距,(合并,塌陷情况)


    CSS-盒子模型-内容,边框,内边距,外边距,(合并,塌陷情况)

    目标:能够认识 盒子模型的组成 ,****能够掌握盒子模型 边框、内边距、外边距 的****设置方法

    1. 学习路径:
    2. 1. 盒子模型的介绍
    3. 2. 内容区域的宽度和高度
    4. 3. 边框( border )
    5. 4. 内边距( padding )
    6. 5. 外边距(margin)

    1.1 盒子模型的介

    小结
    1. ➢ 盒子模型一共有几个部分组成?分别是什么?
    2. 1. 内容区域:content
    3. 2. 边框区域:border
    4. 3. 内边距区域:padding
    5. 4. 外边距区域:margin

    2.1 内容的宽度和高度

    测试:

    3.1 边框(border)- 单个属性

    测试代码:
    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Documenttitle>
    8. <style>
    9. div {
    10. width: 200px;
    11. height: 200px;
    12. background-color: pink;
    13. /* border: 粗细 线条样式 颜色 -- 不分先后顺序 */
    14. /* solid : 实线 */
    15. /* border: 1px solid #000; */
    16. /* dashed: 虚线 */
    17. /* border: 5px dashed #000; */
    18. /* dotted : 点线 */
    19. /* border: 5px dotted #000; */
    20. border-left: 5px dotted #000;
    21. border-right: 5px dotted #000;
    22. border-top: 1px solid red;
    23. border-bottom: 1px solid red;
    24. }
    25. style>
    26. head>
    27. <body>
    28. <div>内容div>
    29. body>
    30. html>
    测试结果:

    3.4 盒子实际大小初级计算公式

    例子:

    结果如下:

    (案例)新浪导航案例

    代码如下:
    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Documenttitle>
    8. <style>
    9. /* 调节上下,上面为橙色,下面为灰色的 */
    10. .box {
    11. height: 40px;
    12. border-top: 3px solid #ff8500;
    13. border-bottom: 1px solid #edeef0;
    14. }
    15. /* 后代: box里面的a */
    16. .box a {
    17. width: 80px;
    18. height: 40px;
    19. /* 推荐先加上: 清楚的看到文字在什么位置 */
    20. /* background-color: #edeef0; */
    21. display: inline-block;
    22. text-align: center;
    23. line-height: 40px;
    24. font-size: 12px;
    25. color: #4c4c4c;
    26. /* 去掉超链接的下划线 */
    27. text-decoration: none;
    28. }
    29. /* 鼠标悬停在上面,背景变成灰色,字体变成橙色 */
    30. .box a:hover {
    31. background-color: #edeef0;
    32. color: #ff8400;
    33. }
    34. style>
    35. head>
    36. <body>
    37. <div class="box">
    38. <a href="#">新浪导航a>
    39. <a href="#">新浪导航a>
    40. <a href="#">新浪导航a>
    41. <a href="#">新浪导航a>
    42. div>
    43. <p>
    44. <a href="#">a>
    45. p>
    46. body>
    47. html>

    4.1 内边距(padding)- 取值

    小结

    测试如下:

    4.3 盒子实际大小终极计算公式(重要)

    看,盒子被撑大了

    改造新浪导航:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Documenttitle>
    8. <style>
    9. .box {
    10. height: 40px;
    11. border-top: 3px solid #ff8500;
    12. border-bottom: 1px solid #edeef0;
    13. }
    14. /* 后代: box里面的a */
    15. .box a {
    16. padding: 0 16px;
    17. /* width: 80px; */
    18. height: 40px;
    19. /* 推荐先加上: 清楚的看到文字在什么位置 */
    20. /* background-color: #edeef0; */
    21. display: inline-block;
    22. text-align: center;
    23. line-height: 40px;
    24. font-size: 12px;
    25. color: #4c4c4c;
    26. text-decoration: none;
    27. }
    28. .box a:hover {
    29. background-color: #edeef0;
    30. color: #ff8400;
    31. }
    32. style>
    33. head>
    34. <body>
    35. <div class="box">
    36. <a href="#">新浪a>
    37. <a href="#">新浪导航新浪导航a>
    38. <a href="#">新浪导航a>
    39. <a href="#">新浪导航a>
    40. div>
    41. <p>
    42. <a href="#">a>
    43. p>
    44. body>
    45. html>
    结果如下:

    (拓展)不会撑大盒子的特殊情况
    1. ➢ 不会撑大盒子的特殊情况(块级元素)
    2. 1. 如果子盒子没有设置宽度,此时宽度默认是父盒子的宽度
    3. 2. 此时给子盒子设置左右的padding或者左右的border,此时不会撑大子盒子

    4.5 CSS3盒模型(自动内减)

    ➢ 需求:盒子尺寸300*300,背景粉色,边框10px实线黑色,上下左右20px的内边距,如何完成?

    ​ • 给盒子设置border或padding时,盒子会被撑大,如果不想盒子被撑大?

    ➢ 解决方法 ① :手动内减

    ​ • 操作:自己计算多余大小,手动在内容中减去

    ​ • 缺点:项目中计算量太大,很麻烦

    ➢ 解决方法 ② :自动内减

    ​ • 操作:给盒子设置属性 box-sizing : border-box ; 即可

    ​ • 优点:浏览器会自动计算多余大小,自动在内容中减去

    5.1 外边距(margin)- 取值

    5.2 外边距(margin) - 单方向设置

    ➢ 场景:只给盒子的某个方向单独设置外边距

    ➢ 属性名:margin - 方位名词

    ➢ 属性值:数字 + px

    小结
    1. ➢ 给盒子设置四周 20px 的外边距可以通过什么属性设置?
    2. • margin : 20px ;
    3. ➢ 给盒子设置上下20px、左右30px的外边距可以通过什么属性设置?
    4. • margin : 20px 30px ;
    5. ➢ 给盒子设置左侧50px的外边距可以通过什么属性设置?
    6. • margin-left : 50px ;

    5.3 margin单方向设置的应用

    版心居中:

    5.4 清除默认内外边距(清除浏览器自带的marginh和padding)

    (案例)网页新闻列表案例

    测试代码:
    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Documenttitle>
    8. <style>
    9. * {
    10. margin: 0;
    11. padding: 0;
    12. /* 所有的标签都可能添加内边距或border, 都內减模式 */
    13. box-sizing: border-box;
    14. }
    15. .news {
    16. width: 500px;
    17. height: 400px;
    18. border: 1px solid #ccc;
    19. margin: 50px auto;
    20. padding: 42px 30px 0;
    21. }
    22. .news h2 {
    23. border-bottom: 1px solid #ccc;
    24. font-size: 30px;
    25. /* 行高是1倍, 就是字号的大小 */
    26. line-height: 1;
    27. padding-bottom: 9px;
    28. }
    29. /* 去掉列表的符号 */
    30. ul {
    31. list-style: none;
    32. }
    33. /* li {} */
    34. .news li {
    35. height: 50px;
    36. border-bottom: 1px dashed #ccc;
    37. padding-left: 28px;
    38. line-height: 50px;
    39. }
    40. .news a {
    41. text-decoration: none;
    42. color: #666;
    43. font-size: 18px;
    44. }
    45. style>
    46. head>
    47. <body>
    48. <div class="news">
    49. <h2>最新文章/New Articlesh2>
    50. <ul>
    51. <li><a href="#">北京招聘网页设计,平面设计,phpa>li>
    52. <li><a href="#">北京招聘网页设计,平面设计,phpa>li>
    53. <li><a href="#">北京招聘网页设计,平面设计,phpa>li>
    54. <li><a href="#">北京招聘网页设计,平面设计,phpa>li>
    55. <li><a href="#">北京招聘网页设计,平面设计,phpa>li>
    56. ul>
    57. div>
    58. body>
    59. html>
    测试结果:

    5.6 外边距正常情况

    ➢ 场景:水平布局 的盒子,左右的margin正常,互不影响

    ➢ 结果:最终两者距离为左右margin的和

    5.7 外边距折叠现象 – ① 合并现象

    gin会合并

    ➢ 结果:最终两者距离为margin的最大值

    ➢ 解决方法:避免就好

    ​ • 只给其中一个盒子设置margin即可

    测试代码如下:
    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Documenttitle>
    8. <style>
    9. div {
    10. width: 100px;
    11. height: 100px;
    12. background-color: pink;
    13. }
    14. .one {
    15. /* margin-bottom: 50px; */
    16. margin-bottom: 60px;
    17. }
    18. .two {
    19. margin-top: 50px;
    20. }
    21. style>
    22. head>
    23. <body>
    24. <div class="one">11div>
    25. <div class="two">22div>
    26. body>
    27. html>

    5.8 外边距折叠现象 – ② 塌陷现象

    1. ➢ 场景:互相嵌套 的 块级元素,子元素的 margin-top 会作用在父元素上
    2. ➢ 结果:导致父元素一起往下移动
    3. ➢ 解决方法:
    4. 1. 给父元素设置border-top 或者 padding-top(分隔父子元素的margin-top)
    5. 2. 给父元素设置overflow:hidden
    6. 3. 转换成行内块元素
    7. 4. 设置浮动
    问题如下:

  • 相关阅读:
    使用 CI/CD 进行语义发布
    2023校招C++开发oppo笔试
    SpringBoot运维实用篇
    vue修饰符 lazy number trim
    千峰商城-springboot项目搭建-81-订单提交及支付-qrcode生成二维码
    第六届全国大学生生物医学工程创新设计竞赛参赛经历
    云边缘网关TG453
    人人开源搭建后台管理系统 & 逆向工程生成CRUD代码
    HIVE操作自查手册(全)
    设计模式之原型模式
  • 原文地址:https://blog.csdn.net/weixin_48370579/article/details/128180220