博客列表 >盒模型常用属性、元素的重新计算及元素的垂直对齐技术(前端第六课)

盒模型常用属性、元素的重新计算及元素的垂直对齐技术(前端第六课)

不加糖的浓咖啡
不加糖的浓咖啡原创
2020年06月27日 16:58:38694浏览

盒模型常用属性

属性简介

css样式将一个元素以矩形框的形式生成出来,显示在页面上。这个矩形框必须有中心内容区(content),四周有内边距(padding)、边框(border)、外边距(margin),由里向外,里面一层总被外层包围,这就是盒模型的主要构成。
盒模型的几个常用属性:
1.content:中心内容区,四周区域可选。
2.padding:内边局,透明的,只可设置宽度,不能设置背景色。但默认情况下,内容区的背景色会延伸到padding区域。所以不做处理,我们不易看到内边距部分,影响盒子的大小。
3.border:边框线,可设置框线颜色、类型、大小,如果边框是虚线,从虚线的间隔出可以看到内容区元素的背景色。
4.margin:外边距。背景透明,只能设置宽度。影响盒子的位置。
5.outline:位于边框(border)和外边距(margin)之间,不占用空间,多用于布局开发。

通过创建一个盒模型进行属性举例

  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. .box{
  9. width:200px;
  10. height:180px;
  11. }
  12. .box.box1{
  13. /* 设置内边距宽度 */
  14. padding:15px;
  15. /* 设置边框宽度 */
  16. border:2px solid red;color:brown;
  17. /* 裁剪出内容区背景色,显示出内边距。因为内容区背景色默认会延伸到内边距,所以这样做便于看出内边距在哪里 */
  18. background-color:brown;
  19. background-clip:content-box;
  20. }
  21. .box.box2{
  22. /* 设置外边距 */
  23. margin:20px;
  24. /* 设置内边距宽度 */
  25. padding:15px;
  26. /* 设置边框宽度 */
  27. border:2px solid red;
  28. /* 裁剪出内容区背景色,显示出内边距。因为内容区背景色默认会延伸到内边距,所以这样做便于看出内边距在哪里 */
  29. background-color:brown;
  30. background-clip:content-box;
  31. }
  32. </style>
  33. </head>
  34. <body>
  35. <div class="box box1"></div>
  36. <div class="box box2"></div>
  37. </body>
  38. </html>

元素大小的重新计算:box-sizing的用法

  • 元素的大小的计算方式,在css样式中可以给元素添加一个box-sizing属性来进行改变,默认属性值为box-sizing:conntent-box。当使用默认值时,元素的默认大小会跟随padding、border大小的改变而改变(这里不考虑margin),属性值改为box-sizing:border-box,无论padding、border的大小怎么改变,元素的整体大小不变。
  • 也就是属性为box-sizing:content-box时,css样式的width属性、height属性值落在盒子的内容区上。属性为box-sizing:border-box,元素的width、height属性值有效范围到盒子的边框(包含边框),这样会使页面元素的计算非常简单,一般用到页面的初始化。
  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. /* 样式初始化举例 */
  9. *{
  10. margin:0px;
  11. padding:0px;
  12. /* 设置元素的计算方式,这里为了突出两种使用情况的区别,就不在页面初始化中使用了 */
  13. /*box-sizing:border-box;*/
  14. }
  15. .box{
  16. width:100px;
  17. height:100px;
  18. }
  19. .box.one{
  20. padding:20px;
  21. border:3px solid black;
  22. background-color:coral;
  23. background-clip:content-box;
  24. }
  25. .box.two{
  26. padding:30px;
  27. border:3px solid black;
  28. background-color:coral;
  29. background-clip:content-box;
  30. }
  31. .box.three{
  32. padding:20px;
  33. border:3px solid black;
  34. background-color:coral;
  35. background-clip:content-box;
  36. box-sizing:border-box;
  37. }
  38. .box.four{
  39. padding:30px;
  40. border:3px solid black;
  41. background-color:coral;
  42. background-clip:content-box;
  43. box-sizing:border-box;
  44. }
  45. </style>
  46. </head>
  47. <body>
  48. <!-- box-sizing默认值为content-box -->
  49. <div class="box one"></div>
  50. <!-- 改变padding后的box -->
  51. <div class="box two"></div>
  52. <!-- box-sizing默认值为border-box -->
  53. <div class="box three"></div>
  54. <!-- 改变padding后的box -->
  55. <div class="box four"></div>
  56. </body>
  57. </html>

定位元素的水平与垂直对齐技术

css样式中利用position属性(用于将元素转化为定位元素,常用的有绝对定位、相对定位、固定定位)及margin属性的auto(让浏览器自动计算外边距,它会让浏览器尽可能把边距分配给你设置的方向部分)值来实现元素的对齐。

  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>
  9. /* margin:auto 实现元素的水平垂直居中 */
  10. .box{
  11. width:300px;
  12. height:300px;
  13. background-color: blueviolet;
  14. position:relative;
  15. }
  16. .box1{
  17. width: 100px;
  18. height:100px;
  19. background-color:red;
  20. /* 水平居中,在它的父容器中居中 ,auto会使浏览器自动计算元素的外边距,这样做就做到左右外边距平均分配了。不能用设置固定值来计算,如果父容器的宽度大小发生改变,你自己计算出然后设置的固定值就不在是居中位置所需的值。在日常中,我们设备宽度的改变就是一个宽度经常改变的例子*/
  21. margin-left:auto;
  22. margin-right:auto;
  23. }
  24. .continer{
  25. width:300px;
  26. height:300px;
  27. background-color: blueviolet;
  28. position:relative;
  29. }
  30. .box2{
  31. width: 100px;
  32. height:100px;
  33. background-color:red;
  34. /* 垂直居中,通过观察我们发现,设备屏幕的高度处于无限的状态。所以在高度不确定(不受限)的情况下,我们很难垂直居中,margin-top/bottom的值默认为0,不能通过这种设置来实现垂直居中*/
  35. /* 通过绝对定位的方式实现垂直居中,我们将元素的父容器转化为一个定位元素 ,让当前元素的上下文充满整个父级*/
  36. position:absolute;
  37. /* 左上角开始 */
  38. top:0;
  39. left:0;
  40. /* 右下角结束 */
  41. right:0;
  42. bottom:0;
  43. /* 因为需要设置margin四个方向的属性,margin-left:auto;margin-right:auto;margin-top:auto;margin-bottom:auto;这里我们可以简化写成下面这种形式。 */
  44. margin:auto;
  45. }
  46. </style>
  47. <body>
  48. <div class="box">
  49. <div class="box1"></div>
  50. </div>
  51. <hr/>
  52. <div class="continer">
  53. <div class="box2"></div>
  54. </div>
  55. </body>
  56. </html>


以上主要运用了元素定位的知识,及css样式中的margin属性的特性来实现。

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