博客列表 >盒模型 我想认识你

盒模型 我想认识你

培(信仰)
培(信仰)原创
2020年12月21日 22:39:26466浏览

盒模型

padding & margin

可以通过width和height来设置盒子的大小
但是padding和border也影响盒子的尺寸

  1. <div class="box"></div>
  1. <style>
  2. :root{
  3. font-size: 10px;
  4. }
  5. .box{
  6. width: 20em;
  7. height: 15em;
  8. background-color: violet;
  9. /* 给盒子添加padding(内边距),border(边框) */
  10. padding: 1em;
  11. border:2px solid;
  12. /* 将背景裁切到内容区,让padding可视化 */
  13. background-clip: content-box;
  14. }
  15. /* 盒子尺寸的计算公式:width/height + padding*2 + border*2 */
  16. /* 宽度:200 + 10*2 + 2*2 = 224px
  17. 高度:150 + 10*2 + 2*2 = 174px */
  18. /* 要想盒子的尺寸不因padding和border值而变化就需要使用IE盒子或者称之为怪异盒子 */
  19. /* 以前需要加padding和border就把width和height减下去
  20. .box{
  21. width: calc(20em - 24px);
  22. height: calc(15em - 24px);
  23. }
  24. */
  25. .box{
  26. /* 让用户自己决定计算盒子的方式
  27. 要不要将padding和border计算在内*/
  28. /* w3c标准盒子模型,width和border不含padding,border */
  29. /* box-sizing: content-box; */
  30. /* 将padding和border计算在盒子尺寸内 */
  31. box-sizing: border-box;
  32. }
  33. </style>

margin只会对页面中的元素位置或多个元素的排列产生影响,对盒子的大小没有影响

  1. <div class="box"></div>
  2. <div class="box"></div>
  1. <style>
  2. :root {
  3. font-size: 10px;
  4. }
  5. .box {
  6. width: 20em;
  7. height: 15em;
  8. background-color: violet;
  9. padding: 1em;
  10. border: 2px solid;
  11. box-sizing: border-box;
  12. }
  13. /* margin对水平排列元素的位置影响 */
  14. /* margin在水平方向会累加 */
  15. .box {
  16. float: left;
  17. }
  18. /* margin对垂直排列元素的位置影响 */
  19. /* 垂直方向是折叠塌陷,大者胜出。 */
  20. /* margin只会对页面中的元素位置或多个元素的排列产生影响
  21. ,对盒子的大小没有影响 */
  22. .box:first-of-type {
  23. margin:2em;
  24. }
  25. .box:first-of-type + * {
  26. margin:3em;
  27. }
  28. </style>

注意 margin在水平方向会累加,垂直方向折叠塌陷,大者胜出.

一般都会对全局的盒子进行设置,为了保证在所有的浏览器上都看上去差不多会去掉所有的margin,padding
记住这三行代码

  1. * {
  2. margin:0;
  3. padding: 0;
  4. box-sizing: border-box;
  5. }

盒子的高度问题

开发中,尽量不要直接设置高度,用内容将元素撑开

需要设置高度的时候,注意内容溢出问题,根据需要选择不同的设置。

  1. <div class="box">
  2. 近几年来,随着社会的发展与进步,科技发展迅速,软件技术逐渐得到认可并成为主流技术.软件复用是因在软件开发过程中的劳动重复,因此,利用软件复用的手段帮助提高软件开发的效率和质量.软件复用和软件构件技术一直受到行业内部的关注,笔者就对此进行了探究,分别研究了软件复用和软件构件技术,探讨了两者之间的关系,并对未来进行了展望,希望能够为软件行业发展提供有效思路.
  3. </div>
  1. <style>
  2. :root {
  3. font-size: 10px;
  4. }
  5. .box {
  6. width: 20em;
  7. height: 15em;
  8. background-color: lightcyan;
  9. border: 1px solid #000;
  10. /* visible:默认值,默认显示溢出内容:*/
  11. overflow: visible;
  12. /* hidden:隐藏溢出内容 */
  13. overflow: hidden;
  14. /* 使用滚动条查看被隐藏的内容 */
  15. /* 几乎不用 */
  16. overflow: scroll;
  17. /* 用的少 */
  18. /* overflow-y: scroll;
  19. overflow-x: scroll; */
  20. /* 当内容少时滚动条消失 */
  21. overflow: auto;
  22. }
  23. </style>

注意:
overflow: hidden;
overflow: auto;

容器最小高度与最大高度

  1. <div>
  2. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  3. </div>
  4. <div>
  5. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  6. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  7. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  8. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  9. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  10. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  11. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  12. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  13. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  14. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  15. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  16. </div>
  17. <div>
  18. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  19. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  20. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  21. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  22. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  23. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  24. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  25. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  26. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  27. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  28. 截止到2020年11月1日,全球约有79.1%的网站在使用PHP驱动
  29. </div>
  1. body > * {
  2. margin:1em;
  3. }
  4. body div {
  5. border: 1px solid #000;
  6. /* 默认高度由内容撑开 */
  7. height: auto;
  8. }
  9. body div:first-of-type {
  10. height: auto;
  11. }
  12. body div:nth-of-type(2){
  13. min-height: 5em;
  14. /* 只限制最小高度未限制最大高度
  15. 当内容超过最小高度时会自动伸展
  16. 当内容不足时使用最小高度,
  17. 保证页面不会塌陷 */
  18. }
  19. body div:nth-of-type(2)+*{
  20. max-height: 6em;
  21. overflow: auto;
  22. }
  23. /* 与上面等效 */
  24. /* body div:nth-of-type(3){
  25. max-height: 6em;
  26. overflow: auto;
  27. } */
  28. </style>

注意: 使用max-height时一定要考虑内容溢出问题

水平居中问题

  1. < div class="box">
  2. <a href="">php.cn</a>
  3. <img src="https://img.php.cn/upload/course/000/000/001/5fae4f08a043a576.png" alt="这是行内块元素img">
  4. </>
  1. .box {
  2. width: 15em;
  3. height: 15em;
  4. border: 1px solid #000;
  5. }
  6. /* 1. 行内或者行内块水平居中 */
  7. .box {
  8. text-align: center;
  9. }
  10. img {
  11. width: 10em;
  12. }
  1. 行内元素或行内块元素可以直接设置父元素的text-align: center;
  1. <div class="box">
  2. <div></div>
  3. </div>
  1. /* 使用margin来实现块元素的水平居中 */
  2. .box>div {
  3. /* auto:这个值由浏览器根据上下文自动计算
  4. 将父元素左边的空间尽可能给自己的margin-left,也就是说本元素停靠右边
  5. 同理:margin-right就尽可能给自己的右边也就是说元素停靠左边 */
  6. /* margin-left: auto; */
  7. /* 所有向左向右挤可以水平居中 */
  8. /* margin-left: auto;
  9. margin-right: auto; */
  10. /* 一般不这么写,可以直接margin:0 auto; */
  11. margin: 0 auto;
  12. /* 二值法:第一个是上下,第二个是左右 */
  13. }
  1. 行内块元素使用margin来设置,margin: 0 auto;以后都使用这种方法。

垂直居中

方法:行内元素不能设置高,一定要设置父元素的高,只要将行内元素的 line-height 的值与父元素一样就可以实现垂直居中 ,但是行内块元素无效

  1. .box a {
  2. line-height: 15em;
  3. }

img 当块元素处理,此时父元素一定不能给高度,由padding挤出来。

  1. <div class="box">
  2. <!-- <a href="">php.cn</a> -->
  3. <div></div>
  4. <!-- <img src="https://img.php.cn/upload/course/000/000/001/5fae4f08a043a576.png" alt=""> -->
  5. </div>
  1. .box {
  2. padding: 5em 0;
  3. }
  4. .box div {
  5. width: 5em;
  6. height: 5em;
  7. background-color: yellow;
  8. }

水平和垂直都居中

行内元素

  1. 通过设置父元素的,text-align: center;
    和line-height 等于父元素的高即可
  1. <div class="box"><a href="">php.cn</a></div>
  1. <style>
  2. /* 1. 行内元素的水平居中,设置父元素的 text-align: center; */
  3. .box {
  4. width: 15em;
  5. height: 15em;
  6. border: 1px solid #000;
  7. text-align:center;
  8. line-height: 15em;
  9. }
  10. </style>
  1. 通过父元素的padding,撑出居中的效果
  1. <div class="box">
  2. <div></div>
  3. </div>
  1. .box {
  2. width: 6em;
  3. border: 1px solid #000;
  4. padding:5em;
  5. }
  6. .box > div{
  7. width: 2em;
  8. height: 2em;
  9. background-color: violet;
  10. }
  1. 通过子元素的margin,撑出居中效果;使用相对定位。
  1. <div class="box">
  2. <div></div>
  3. </div>
  1. .box {
  2. height: 5em;
  3. position: relative;
  4. border: 1px solid black;
  5. }
  6. .box > div{
  7. width: 2em;
  8. height: 2em;
  9. background-color: violet;
  10. position: absolute;
  11. top: 0;
  12. left: 0;
  13. right: 0;
  14. bottom: 0;
  15. margin: auto;
  16. }

注意 使用定位和margin时需要设置子元素的top,left,right,bottom为0;

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