Blogger Information
Blog 17
fans 0
comment 0
visits 14777
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
盒模型box-sizing功能及相对定位、绝对定位应用
未来星
Original
1061 people have browsed it

>盒模型box-sizing功能

在 CSS 中,所有的元素都被一个个的“盒子(box)”包围着,理解这些“盒子”的基本原理,是我们使用CSS实现准确布局、处理元素排列的关键。

CSS中组成一个块级盒子需要:
content box: 这个区域是用来显示内容,大小可以通过设置 width 和 height.
padding box: 包围在内容区域外部的空白区域; 大小通过 padding 相关属性设置。
border box: 边框盒包裹内容和内边距。大小通过 border 相关属性设置。
margin box: 这是最外面的区域,是盒子和其他元素之间的空白区域。大小通过 margin 相关属性设置。

>padding和margin语法

1.padding内边距全写和简写

属性 几值 语法/含义
padding-top 是设置上内边距,大小用数值表示
padding-right 是设置右内边距,大小用数值表示
padding-buttom 是设置下内边距,大小用数值表示
padding-left 是设置左内边距,大小用数值表示
padding 四值 0px(上) 0px(右) 0px(下) 0px(左) 顺时针编写
padding 三值 0px(上) 0px(左右相等) 0px(下)
padding 两值 0px(上下相等) 0px(左右相等)
padding 一值 0px(上下左右相等)

2.margin外边距全写和简写

属性 几值 语法/含义
margin-top 是设置上外边距,大小用数值表示
margin-right 是设置右外边距,大小用数值表示
margin-buttom 是设置下外边距,大小用数值表示
margin-left 是设置左外边距,大小用数值表示
margin 四值 0px(上) 0px(右) 0px(下) 0px(左) 顺时针编写
margin 三值 0px(上) 0px(左右相等) 0px(下)
margin 两值 0px(上下相等) 0px(左右相等)
margin 一值 0px(上下左右相等)

>box-sizing功能

属性 含义
box-sizing:border-box 可以改变这个属性盒子原本计算大小的规则,将文本内容,内边距,边框,外边距的大小值计算方式合成一个主体
box-sizing:content-box 还原这个属性盒子的计算方式,只能将文本内容,外边距,边框大小值计算在内,外边框大小值不计算在内

实例展示box-sizing功能

定义盒子模型box尺寸为20rem(200px)后,内边距padding是10px,边框border是2px,整个盒子的尺寸在页面中显示尺寸为224px。

对盒子模型的属性box-sizing修改为box-sizing:border-box后,盒子计算规则改变,这个时候包含内容、内边距、边框等合成一个主体,尺寸为box的width设置值。

在网页设计中我们通常会在CSS加载之初对页面进行初始化,便于后续的页面布局设计。

  1. /* 初始化 */
  2. * {
  3. margin: 0;
  4. padding: 0;
  5. box-sizing: border-box;
  6. }

案例页面代码如下:

  1. <!DOCTYPE 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>box-sizing</title>
  8. <style>
  9. /* 初始化 */
  10. * {
  11. margin: 0;
  12. padding: 0;
  13. box-sizing: border-box;
  14. }
  15. /* :root === html */
  16. :root {
  17. /* font-size: 16px; */
  18. font-size: 10px;
  19. }
  20. /* em,rem */
  21. /* em: 根据元素的上下文来确定它的值 */
  22. /* rem: 根据根元素的字号来设置 */
  23. .box {
  24. /* font-size: 16px; */
  25. font-size: 30px;
  26. /* width: 200px; */
  27. /* width: 12.5em; */
  28. /* width: 12.5rem; */
  29. width: 20rem;
  30. /* height: 200px; */
  31. /* height: 12.5em; */
  32. /* height: 12.5rem; */
  33. height: 20rem;
  34. border: 2px solid;
  35. /* padding: 上 右 下 左; 顺时针顺序 */
  36. padding: 10px 5px 5px 10px;
  37. /* 三值: 左右相同,而上下不同 */
  38. padding: 10px 5px 5px;
  39. /* 二值进行简化 */
  40. padding: 10px;
  41. /* 外边距margin设置方式与padding同 */
  42. /* margin: 10px; */
  43. background-color: lightgreen;
  44. box-sizing: border-box;
  45. /* 考虑将w3c的标准盒子转为IE的盒子 */
  46. /* 将盒子的padding和border计算在width,height内 */
  47. /* box-sizing: border-box; */
  48. /* 再转为标准盒子 */
  49. /* box-sizing: content-box;
  50. background-clip: content-box; */
  51. }
  52. </style>
  53. </head>
  54. <body>
  55. <div class="box">box</div>
  56. </body>
  57. </html>

>相对定位与绝对定位、固定定位的区别

属性 含义
position: static 默认定位
position:relative 相对定位,相对自己的定位元素位置,没有脱离文档流
position:absolute 绝对定位,相对自己的原始定位位置,脱离文档流
position:fixed 固定定位,相对html位置,脱离文档流

我们通过定位操作实例来加深印象。

网页上设计两个box,box2嵌入box,下面有一行文本,便于显示位置关系。如下图:

  1. <div class="box">
  2. <div class="box2">box2</div>
  3. 我就这里
  4. </div>

开启box2的相对定位后,位置发生变化,如下图:

  1. position: relative;
  2. top: 10rem;
  3. left: 10rem;

开启box2的绝对定位后,脱离文档流,文本行位置发生变化,如下图:

  1. position: absolute;
  2. top: 10rem;
  3. left: 10rem;

当我们给box也开启相对定位后,box位置平移,box2的位置跟随box也相应平移,如下图:

然后我们开启box2的固定定位后,box2的位置不再受box位置影响,如下图:

  1. <!DOCTYPE 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>box定位</title>
  8. <style>
  9. /* 初始化 */
  10. * {
  11. margin: 0;
  12. padding: 0;
  13. box-sizing: border-box;
  14. }
  15. :root {
  16. /* font-size: 16px; */
  17. font-size: 10px;
  18. }
  19. .box {
  20. background-color: lightgreen;
  21. width: 30rem;
  22. height: 30rem;
  23. position: relative;
  24. left: 10rem;
  25. top: 10rem;
  26. }
  27. .box2 {
  28. background-color: orange;
  29. width: 25rem;
  30. height: 25rem;
  31. font-size: 30px;
  32. /* 默认:静态定位,就是没有定位 */
  33. /* position: static; */
  34. /* 相对定位: 自动的转为定位元素 */
  35. /* 定位元素: 只要这个元素上有非static的定位属性,就是定位元素 */
  36. /* 只要是定位元素,定位偏移量有效 */
  37. /* 相对于它在文档流中的原始位置进行定位 */
  38. /* position: relative;
  39. top: 10rem;
  40. left: 10rem; */
  41. /* 绝对定位 */
  42. /* 绝对定位元素脱离了文档流 */
  43. /* 文档流: 显示顺序与书写顺序一致 */
  44. /* 相对于它在文档流中的原始位置进行定位 */
  45. /* position: absolute;
  46. top: 10rem;
  47. left: 10rem; */
  48. /* 固定定位 */
  49. /* 永远相对于html定位 */
  50. position: fixed;
  51. top: 10rem;
  52. left: 10rem;
  53. }
  54. </style>
  55. </head>
  56. <body>
  57. <div class="box">
  58. <div class="box2">box2</div>
  59. 我就这里
  60. </div>
  61. </body>
  62. </html>
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post