Blogger Information
Blog 4
fans 0
comment 0
visits 3150
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
盒模型的设置与布局
麻明山
Original
958 people have browsed it

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

页面布局单元就是盒子

盒子的大小:

宽 =左右margin+左右border+左右padding+width
高 =上下margin+上下border+上下padding+height

盒子由四个部分组成

内容(content)——里装的东西
填充(padding)——抗震的辅料
边框(border) ——盒子本身
边界(margin) ——盒子之间的空隙
如图所示:

盒子的位置由margin属性决定

margin-left:左边界
margin-right:右边界
margin-top:上边界
margin-bottom:下边界

2.box-sizing解决了什么问题

定义宽度和高度是否包含padding和border的属性
1、content-box:border和padding不计算入width之内,即width直接就是内容区的宽度
2、border-box:border和padding计算入width之内,即内容区实际宽度是width去除padding和border之后的宽度

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title></title>
  6. <style type="text/css">
  7. div{
  8. width: 50px;
  9. height: 50px;
  10. margin: 10px;
  11. padding: 10px;
  12. border: 10px solid blue;
  13. }
  14. #bs{
  15. box-sizing: border-box;
  16. }
  17. </style>
  18. </head>
  19. <body>
  20. <div></div>
  21. <div id="bs"></div>
  22. </body>
  23. </html>

运行结果


3. 绝对定位与相对定位的区别与应用,实例演示

绝对定位,是相对于浏览器窗口来定位的,是固定的,不会跟屏幕一起滚动。
相对定位,是相对于其原本的位置来定位的。
先设置三个盒子

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>绝对定位与相对定位</title>
  6. </head>
  7. <body>
  8. <div class="div1" style="background-color: aqua; width: 100px; height: 100px;">
  9. </div>
  10. <div
  11. class="div2"
  12. style="background-color: darkorange; width: 100px; height: 100px;"
  13. >
  14. </div>
  15. <div
  16. class="div3"
  17. style="background-color: blue; width: 100px; height: 100px;"
  18. >
  19. </div>
  20. </body>
  21. </html>

运行效果如下图:

给div2设置position属性为absolute:

  1. <div
  2. class="div2"
  3. style="
  4. background-color: darkorange;
  5. width: 100px;
  6. height: 100px;
  7. position:absolute;
  8. top:20px;
  9. left:50px;
  10. "
  11. >
  12. </div>

效果如下:

4. 固定定位与绝对定位的区别是什么,实例演示

相对定位的偏移参考元素是元素本身,不会使元素脱离文档流。
运行代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>固定定位与绝对定位</title>
  7. </head>
  8. <style type="text/css">
  9. .rel {
  10. width: 200px;
  11. height: 200px;
  12. background: red;
  13. position: relative;
  14. top: 100px;
  15. left: 100px;
  16. }
  17. </style>
  18. <body>
  19. <div class="rel">相对定位</div>
  20. 这是一个盒子模型<br />
  21. 这是一个盒子模型<br />
  22. 这是一个盒子模型<br />
  23. 这是一个盒子模型<br />
  24. 这是一个盒子模型<br />
  25. 这是一个盒子模型<br />
  26. 这是一个盒子模型<br />
  27. 这是一个盒子模型<br />
  28. 这是一个盒子模型<br />
  29. 这是一个盒子模型<br />
  30. </body>
  31. </html>

相对定位效果图:

绝对定位元素以父辈元素中最近的定位元素为参考坐标,如果绝对定位元素的父辈元素中没有采用定位的,那么此绝对定位元素的参考对象是html,元素会脱离文档流。
运行代码:

  1. .abs {
  2. width: 200px;
  3. height: 200px;
  4. background: red;
  5. position: absolute;
  6. top: 100px;
  7. left: 100px;
  8. }

绝对定位效果图:

5. 为什么垂直居中如此困难, 使用绝对定位如何实现?

1、CSS 最开始针对的是 web文档,其中整体布局中垂直方向居中的需求不足,没实现这个需求的语法。
2、基于 CSS 布局模型来制定垂直居中规则有困难。
比如:
·同一个容器内有浮动、有相对定位、有流内内容,垂直居中如何界定中线?
·每个元素自身又如何对齐?如果一个元素既浮动又垂直居中要怎么定位?要不要触发 BFC?要不要创建包含块?
·把一个底下的元素居中了缩小了容器高度,中线变了,前面的是不是又要重新计算?到底先算哪个?

要利用绝对定位的方法进行垂直剧中,要求元素具有固定的宽度和高度,如果没有固定的宽度和高度就无法实现,因为需要利用top和left的值进行定位。

6. 使用绝对定位实现二列布局

父级区块设置为相对定位,左右两个区块分别使用绝对定位。
代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>使用绝对定位实现二列布局</title>
  7. <style type="text/css">
  8. .container {
  9. position: absolute;
  10. left: 0;
  11. right: 0;
  12. margin: auto;
  13. max-width: 500px;
  14. }
  15. .left {
  16. position: absolute;
  17. top: 0;
  18. left: 0;
  19. width: 200px;
  20. height: 500px;
  21. background-color: red;
  22. }
  23. .right {
  24. position: absolute;
  25. top: 0;
  26. right: 0;
  27. width: 300px;
  28. height: 500px;
  29. background-color: green;
  30. }
  31. </style>
  32. </head>
  33. <body>
  34. <div class="container clear">
  35. <div class="left">左侧</div>
  36. <div class="right">右侧</div>
  37. </div>
  38. </body>
  39. </html>

运行结果:

7. 使用浮动实现三列布局

html代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>使用浮动实现三列布局</title>
  7. <style>
  8. @import url(007.css);
  9. </style>
  10. </head>
  11. <body>
  12. <div class="container">
  13. <div class="left">left</div>
  14. <div class="main">middle</div>
  15. <div class="right">right</div>
  16. </div>
  17. </body>
  18. </html>

css代码

  1. * {
  2. margin: 0;
  3. padding: 0;
  4. }
  5. a {
  6. text-decoration: none;
  7. color: #555555;
  8. }
  9. li {
  10. list-style: none;
  11. }
  12. a:hover {
  13. color: blue;
  14. }
  15. .content {
  16. width: 900px;
  17. margin: auto;
  18. }
  19. .content:first-of-type li {
  20. float: left;
  21. padding: 0 20px;
  22. line-height: 50px;
  23. }
  24. .footer {
  25. text-align: center;
  26. line-height: 50px;
  27. }
  28. .container {
  29. width: 900px;
  30. background-color: #f98;
  31. margin: 10px auto;
  32. border: 5px solid #aaaaaa;
  33. overflow: hidden;
  34. }
  35. .container > .left {
  36. width: 300px;
  37. background-color: darkcyan;
  38. min-height: 600px;
  39. }
  40. .container > .right {
  41. width: 200px;
  42. background-color: crimson;
  43. min-height: 600px;
  44. }
  45. .container > .left {
  46. float: left;
  47. }
  48. .container > .right {
  49. float: right;
  50. }
  51. .container > .main {
  52. width: 400px;
  53. min-height: 600px;
  54. background-color: lightgreen;
  55. float: left;
  56. }

运行效果

8. 默写出圣杯布局的思想,并用圣杯布局实现三列布局

三列都是浮动元素,为保证主体区优先显示并自适应,默认100%宽度,将主体放在前面,将左右区块的margin属性设为负值,左侧设为-100%,右侧设置与其宽度相等的负值。主体左右padding值设置相应宽度。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>圣杯布局</title>
  6. <style type="text/css">
  7. .left,
  8. .main,
  9. .right {
  10. float: left;
  11. position: relative;
  12. min-height: 600px;
  13. }
  14. .main {
  15. width: 100%;
  16. background-color: forestgreen;
  17. }
  18. .container {
  19. padding-left: 200px;
  20. padding-right: 300px;
  21. }
  22. .left {
  23. margin-left: -100%;
  24. left: -200px;
  25. width: 200px;
  26. background-color: sandybrown;
  27. }
  28. .right {
  29. margin-left: -300px;
  30. right: -300px;
  31. width: 300px;
  32. background-color: mediumslateblue;
  33. }
  34. </style>
  35. </head>
  36. <body>
  37. <div class="container">
  38. <div class="main">杯身</div>
  39. <div class="left">左侧</div>
  40. <div class="right">右侧</div>
  41. </div>
  42. </body>
  43. </html>

运行效果

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