博客列表 >CSS盒模型及常规页面布局

CSS盒模型及常规页面布局

蓝蚁网络科技
蓝蚁网络科技原创
2020年08月06日 10:42:28755浏览

盒模型的大小与位置的设置与计算

盒模型的大小计算

  • CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:外边距(margin)、边框(border)、内边距(padding)、内容(content)。
  • 盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。
  • 当指定一个CSS元素的宽度和高度属性时,只是设置内容区域的宽度和高度。完整大小的元素,还必须添加内边距,边框和边距。
    1. div {
    2. width: 300px;
    3. border: 25px solid green;
    4. padding: 25px;
    5. margin: 25px;
    6. }
    盒模型的大小为:
    300px(宽)+50px(左+右填充)+50px(左+右边框)+50px(左+右边距)=450px

盒模型的定位属性position

position 属性指定了元素的定位类型。

  • static:HTML元素的默认值,即没有定位,遵循正常的文档流对象。
  • fixed:元素的位置相对于浏览器窗口是固定位置。
  • relative:相对定位元素的定位是相对其正常位置。
  • absolute:绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于HTML

CSS中box-sizing属性的作用

  • content-box:padding和border不被包含在定义的width和height之内。对象的实际宽度等于设置的width值和border、padding之和。box-sizing默认值为content-box,可以不写。
  • border-box:padding和border被包含在定义的width和height之内。对象的实际宽度就等于设置的width值,即使定义border和padding也不会改变对象的实际宽度。
    1. div{
    2. width:100%;
    3. height:100px;
    4. border:10px solid grey;
    5. box-sizing:border-box;
    6. background:red;
    7. }
    不设置box-sizing与设置box-sizing对比

CSS中绝对定位、相对定位、固定定位的区别

  • absolute:绝对定位是相对于元素最近的已定位的父级元素(即是设置了绝对定位或者相对定位的父级元素)。如果元素没有已定位的祖先元素,那么它的位置则是相对于最初的包含块(body)。
  1. .content.box1 {
  2. width: 300px;
  3. height: 200px;
  4. background-color: lightblue;
  5. position: absolute;
  6. left: 30px;
  7. top: 20px;
  8. }

  • relative:相对定位是相对于元素在文档中的初始位置——首先它出现在它所在的位置上,然后通过设置垂直或水平位置,让这个元素相对于它的原始起点进行移动。
  1. .content.box2 {
  2. width: 300px;
  3. height: 200px;
  4. background-color: lightgreen;
  5. position: relative;
  6. left: 30px;
  7. top: 20px;
  8. }

  • fixed:固定定位是相对于浏览器窗口进行定位的,无论怎样移动你的滑动条,它都会固定在相对于浏览器窗口的固定位置,它的兄弟元素将会在位置排布上忽视它的存在。这个时候用的top,bottom,left,right也是相对于浏览器窗口而言的。
  1. .content.box2 {
  2. width: 300px;
  3. height: 200px;
  4. background-color: lightcoral;
  5. position: fixed;
  6. right: 30px;
  7. top: 20px;
  8. }

使用绝对定位实现水平居中及垂直居中

  1. .content.box1 {
  2. width: 600px;
  3. height: 400px;
  4. background-color: lightblue;
  5. position: relative;
  6. }
  7. .content.box2 {
  8. width: 200px;
  9. height: 100px;
  10. background-color: yellow;
  11. position: absolute;
  12. top: 0;
  13. right: 0;
  14. bottom: 0;
  15. left: 0;
  16. margin: auto;
  17. }

使用绝对定位实现两列布局

  1. .content {
  2. width: 1000px;
  3. position: relative;
  4. margin: auto;
  5. }
  6. .content.box1 {
  7. width: 200px;
  8. height: 400px;
  9. background-color: lightblue;
  10. position: absolute;
  11. top: 10px;
  12. left: 0;
  13. }
  14. .content.box2 {
  15. width: 800px;
  16. height: 400px;
  17. background-color: yellow;
  18. position: absolute;
  19. top: 10px;
  20. right: 0;
  21. }

使用浮动实现三列布局

  1. .content {
  2. width: 1000px;
  3. position: relative;
  4. margin: auto;
  5. }
  6. .content.box1 {
  7. width: 200px;
  8. height: 400px;
  9. background-color: lightblue;
  10. float: left;
  11. }
  12. .content.box2 {
  13. width: 600px;
  14. height: 400px;
  15. background-color: yellow;
  16. float: left;
  17. }
  18. .content.box3 {
  19. width: 200px;
  20. height: 400px;
  21. background-color: lightcoral;
  22. float: right;
  23. }

圣杯布局

  • 内容区必须优先渲染,DOM结构中将主体内容写到前面
  • 内容区优先显示,并且自适应,所以默认宽度为100%
  • 内容区、左侧、右侧全部为左浮动
  • 通过给左/右两侧设置margin的负值使之回到容器中的正确位置
  • 给容器设置左右两侧的padding,其值与左右两侧宽度相等,将左右两侧挤出来
  • 再给左右两侧通过相对定位将它们最终放到正确位置上

    1. .content {
    2. width: 1000px;
    3. position: relative;
    4. margin: auto;
    5. float: left;
    6. }
    7. .content.box1 {
    8. width: 100%;
    9. height: 400px;
    10. background-color: lightblue;
    11. padding: 0 200px;
    12. }
    13. .content.box2 {
    14. width: 200px;
    15. height: 400px;
    16. background-color: yellow;
    17. margin-left: -100%;
    18. position: relative;
    19. left: -400px;
    20. }
    21. .content.box3 {
    22. width: 200px;
    23. height: 400px;
    24. background-color: lightcoral;
    25. margin-left: -200px;
    26. position: relative;
    27. left: 0;
    28. }

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议