博客列表 >盒模型的常用属性、元素大小重新计算、水平与垂直对齐

盒模型的常用属性、元素大小重新计算、水平与垂直对齐

浪子修罗记录有趣的事
浪子修罗记录有趣的事原创
2020年06月18日 01:58:13647浏览

盒模型的常用属性

  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. /* 宽、高:内容区 */
  10. width: 200px;
  11. height: 200px;
  12. }
  13. .box.one {
  14. /* 内边距 */
  15. padding: 10px;
  16. /* 加1px的实线边框 */
  17. border: 1px solid #000000;
  18. /* 背景色 */
  19. background-color: aquamarine;
  20. /* 对背景进行裁切 默认是 border-box (边框级别),content-box(内容区) */
  21. background-clip: content-box;
  22. /* 顺序按照上、右、下、左 来设置 */
  23. /* margin: top right bottom left; */
  24. /* 外边距 */
  25. margin: 0 0 20px 0;
  26. /* 作用同上 */
  27. margin-bottom: 20px;
  28. }
  29. .box.two {
  30. /* 内边距 */
  31. padding: 10px;
  32. /* 加1px的实线边框 */
  33. border: 1px solid #000000;
  34. /* 背景色 */
  35. background-color: lightgreen;
  36. /* 对背景进行裁切 默认是 border-box (边框级别),content-box(内容区) */
  37. background-clip: content-box;
  38. /* 当两个盒子在垂直方向上,外边距会产生折叠 */
  39. margin-top: 30px;
  40. }
  41. .box.parent {
  42. background-color: lightpink;
  43. /* 一旦一个元素被添加了position 且值非static 那么它就是定位元素 */
  44. position: relative;
  45. /* 从左边向右移动30px */
  46. /* 相对定位是相对自己做了偏移,这个元素在文档流中的位置不释放 */
  47. left: 30px;
  48. top: 40px;
  49. }
  50. .son {
  51. width: 100px;
  52. height: 100px;
  53. background-color: lime;
  54. /* 绝对定位 */
  55. /* 如果没有定位父级元素,会向上一级找,直到找到,就是body元素 */
  56. position: absolute;
  57. /* 固定定位 会忽略定位父级 总是相对于body定位*/
  58. position: fixed;
  59. left: 50px;
  60. top: 50px;
  61. }
  62. </style>
  63. </head>
  64. <body>
  65. <!-- 块级元素默认垂直排列 -->
  66. <div class="box one"></div>
  67. <div class="box two"></div>
  68. <hr />
  69. <!-- 嵌套关系-->
  70. <div class="box parent">
  71. <div class="box son"></div>
  72. </div>
  73. </body>
  74. </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. /* 常用样式初始化 */
  9. * {
  10. margin: 0;
  11. padding: 0;
  12. box-sizing: border-box;
  13. }
  14. .box {
  15. width: 200px;
  16. height: 180px;
  17. background-color: blueviolet;
  18. border: 3px solid violet;
  19. background-clip: content-box;
  20. padding: 10px;
  21. /* box-sizing: 重新计算盒大小 content-box默认是以内容区为准*/
  22. box-sizing: content-box;
  23. /* border-box: 有效范围到边框 */
  24. box-sizing: border-box;
  25. }
  26. .box2 {
  27. width: 80px;
  28. height: 120px;
  29. background-color: red;
  30. }
  31. </style>
  32. </head>
  33. <body>
  34. <div class="box">
  35. <div class="box2"></div>
  36. </div>
  37. <!-- width: content_width + padding_left/rigth + border_left/right -->
  38. <!-- 宽: 200 + 20 + 6 =226-->
  39. </body>
  40. </html>

水平与垂直对齐-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>margin:auto 块元素的垂直居中</title>
  7. <style>
  8. .container {
  9. width: 300px;
  10. height: 300px;
  11. background-color: red;
  12. }
  13. .container .item {
  14. width: 100px;
  15. height: 100px;
  16. background-color: violet;
  17. /* 水平居中 */
  18. /* 让浏览器自动计算左右外边距 */
  19. /* margin-left: auto;
  20. margin-right: auto; */
  21. /* 垂直居中 */
  22. /* 不能用margin-top:auto 和 margin-bottom:auto 来垂直居中 */
  23. /* 通过绝对定位来实现垂直居中 */
  24. position: absolute;
  25. /* 让当前元素绝对定位的上下文充满整个父级容器 */
  26. /* 左上角开始 */
  27. top: 0;
  28. left: 0;
  29. /* 右下角结束 */
  30. right: 0;
  31. bottom: 0;
  32. margin: auto;
  33. }
  34. </style>
  35. </head>
  36. <body>
  37. <div class="container">
  38. <div class="item"></div>
  39. </div>
  40. </body>
  41. </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. .box {
  9. width: 200px;
  10. height: 180px;
  11. padding: 10px;
  12. border: 2px solid #000;
  13. margin: 10px;
  14. background-color: violet;
  15. background-clip: content-box;
  16. }
  17. .pos {
  18. position: relative;
  19. top: 30px;
  20. left: 50px;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <div class="box pos"></div>
  26. </body>
  27. <script>
  28. const box = document.querySelector(".box");
  29. // 1、内容区大小与位置
  30. // 宽高大小=宽/高 +podding
  31. console.log(box.clientWidth);
  32. // 高度
  33. console.log(box.clientHeight);
  34. // clientleft/clienttop :就是边框宽度 用得很少。
  35. console.log(box.clientLeft);
  36. console.log(box.clientTop);
  37. // 获取可视区的大小:视口
  38. console.log(document.documentElement.clientWidth);
  39. console.log(document.documentElement.clientHeight);
  40. // 2、当前元素的定位偏移量,与定位有关
  41. // 定位父级
  42. console.log(box.offsetParent);
  43. // 这个元素现在是一个真正的盒子,包括了内容,podding,border
  44. // 真实宽度要加上border
  45. console.log(box.offsetWidth);
  46. console.log(box.offsetHeight);
  47. console.log(box.offsetLeft);
  48. console.log(box.offsetTop);
  49. //3、当前文件的滚动大小
  50. // 视口大小:可视区大小
  51. // 文档大小:当前html大小
  52. // 通常视口大小 > 文档大小,所以要通过滚动条才能看到全部html文档内容
  53. // 获取html元素
  54. const html = document.documentElement;
  55. // 给页面一个900PX的高
  56. html.style.height = "1200px";
  57. // 当前文档的高度
  58. console.log(html.scrollHeight);
  59. // 当前可视区的高度
  60. console.log(html.clientHeight);
  61. // 获取滚动条
  62. console.log(html.scrollTop);
  63. document.addEventListener("scroll", function (ev) {
  64. console.log(ev.target.documentElement.scrollTop);
  65. });
  66. </script>
  67. </html>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议