Blogger Information
Blog 11
fans 0
comment 0
visits 7952
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
盒模型常用属性及元素大小计算,定位元素
new
Original
595 people have browsed it

1.盒模型常用属性

属性 描述
width 宽度
height 高度
border 边框
margin 外边距
padding 内边距
box-sizing 自定义盒模型宽和高的规范 , box-sizing: content-box;在自己设定的宽度和高度之外绘制元素的内边距和边框(默认),box-sizing: border-box;在自己设定的宽度和高度之内绘制元素的内边距和边框。
backgroumd-clip 背景的延伸

  • 示例代码
  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. padding: 10px;
  15. border: 2px solid #000;
  16. background-color: lightgreen;
  17. background-clip: content-box;
  18. /* margin: top right bottom left; */
  19. /* margin: 0 0 20px 0; */
  20. margin-bottom: 20px;
  21. }
  22. .box.two {
  23. padding: 10px;
  24. border: 2px solid #000;
  25. background-color: lightcoral;
  26. background-clip: content-box;
  27. /* 当二个盒子在垂直方向上,外边距会产生折叠 */
  28. margin-top: 30px;
  29. }
  30. .box.parent {
  31. background-color: lightblue;
  32. /* 一旦一个元素被添加了position,且值非static,那么它就是定位元素 */
  33. position: relative;
  34. /* 相对定位是相对自己做了偏移,这个元素在文档流中的位置不释放 */
  35. /* left: 30px;
  36. top: 40px; */
  37. }
  38. .son {
  39. width: 100px;
  40. height: 100px;
  41. background-color: violet;
  42. /* 绝对定位: 相对于它的定位父级进行定位 */
  43. position: absolute;
  44. /* 固定定位: 忽略你的定位父级,总是相对于<body>定位 */
  45. position: fixed;
  46. left: 50px;
  47. top: 50px;
  48. }
  49. </style>
  50. </head>
  51. <body>
  52. <!-- 块级元素默认垂直排列 -->
  53. <div class="box one"></div>
  54. <div class="box two"></div>
  55. <hr />
  56. <div class="box parent">
  57. <div class="son"></div>
  58. </div>
  59. </body>
  60. </html>

  • 示例结果

2.盒模型元素大小计算,box-sizing的用法

  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. .box1 {
  9. width: 200px;
  10. height: 200px;
  11. background-color: red;
  12. margin: 20px;
  13. padding: 20px;
  14. border: 2px solid green;
  15. box-sizing: content-box
  16. background-clip: content-box;
  17. }
  18. .box2 {
  19. width: 200px;
  20. height: 200px;
  21. background-color: blue;
  22. margin: 20px;
  23. padding: 20px;
  24. border: 2px solid green;
  25. background-clip: content-box;
  26. box-sizing: border-box;
  27. }
  28. </style>
  29. </head>
  30. <body>
  31. <div class="box1">1</div>
  32. <div class="box2">2</div>
  33. </body>
  34. </html>

运行

从结果可以看出
默认情况下
总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距
总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距

  • 当两个块级元素垂直排列时外边距会产生折叠
  • 设置了box-sizing: border-box;属性元素的宽度就不会超过自己所设置的宽度大小;
  • 设置了box-sizing: content-box;属性元素的宽度就会超过自己所设置的宽度大小;

3.元素的定位

-示例代码

  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. .container {
  9. width: 200px;
  10. height: 200px;
  11. border: 1px solid red;
  12. position: relative;
  13. }
  14. .item {
  15. width: 100px;
  16. height: 100px;
  17. background-color: greenyellow;
  18. /* 水平左右居中1 */
  19. /* margin-left: auto;
  20. margin-right: auto; */
  21. /* 水平左右居中2 */
  22. /* position: absolute;
  23. left: 0;
  24. right: 0;
  25. margin: auto; */
  26. /* 垂直上下居中 */
  27. /* position: absolute;
  28. top: 0;
  29. bottom: 0;
  30. margin: auto; */
  31. /* 完全居中 */
  32. position: absolute;
  33. top: 0;
  34. left: 0;
  35. right: 0;
  36. bottom: 0;
  37. margin: auto;
  38. }
  39. </style>
  40. </head>
  41. <body>
  42. <div class="container">
  43. <div class="item"></div>
  44. </div>
  45. </body>
  46. </html>

结果如图

总结

  • position:relative; 相对定位:以自己本身原来的位置为参照物进行偏移
  • position: absolute; 绝对定位:相对于最近的且不是static定位的父元素来定位
  • position:fixed;固定定位:相对于浏览器窗口来定位的,是固定的,不会跟屏幕一起滚动。
  • 水平居中:marin:0 auto;/marin-left:auto;margin-right:auto;
  • 垂直居中: 设置父元素的定位为绝对定位,然后设置元素充满,top=0;right:0;bottom=0;left=0;再设置上下居中,margin:auto;/margin-top:auto;margin-bottom:auto;

4.元素的offset的位置与大小

示例代码

  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>元素的offset位置与大小</title>
  7. <style>
  8. .box {
  9. width: 120px;
  10. height: 120px;
  11. position: absolute;
  12. top: 50px;
  13. left: 10px;
  14. }
  15. .box img {
  16. width: 100%;
  17. }
  18. </style>
  19. </head>
  20. <body>
  21. <div class="box"><img src="thief.png" alt="" /></div>
  22. <button>快跑</button>
  23. <button>站住</button>
  24. </body>
  25. <script>
  26. // 只要不断的改变小偷的在定位父级中的偏移量就可以实现
  27. const thief = document.querySelector(".box");
  28. const btn1 = document.querySelector("button:first-of-type");
  29. const btn2 = document.querySelector("button:last-of-type");
  30. // 添加事件
  31. btn1.addEventListener("click", start, { once: true });
  32. btn2.addEventListener("click", stop);
  33. // 定时器
  34. let timer = null;
  35. function start() {
  36. console.log(thief.offsetLeft);
  37. timer = setInterval(function () {
  38. // thief.offsetLeft: 只读, 且是一个整数
  39. // thief.style.left: 可读写,且是一个字符串
  40. thief.style.left = thief.offsetLeft + 10 + "px";
  41. thief.style.top = thief.offsetTop + 10 + "px";
  42. }, 100);
  43. }
  44. function stop() {
  45. clearInterval(timer);
  46. }
  47. </script>
  48. </html>
  • 示例结果

总结

  • js获取元素大小位置
  1. querySelector() 获取元素
  2. box.clientWidth 获取元素的宽,只是content的宽度,不加内边距和边框
  3. box.clientWidth 获取元素的高,只是content的高度,不加内边距和边框
  4. document.documentElement.clientWidth 获取视口的宽度
  5. document.documentElement.clientHeight 获取视口的高度
  6. box.offsetParent 返回当前最近的经过定位的父级元素
  7. box.offsetWidth 元素真实的宽度,加内边距和边框
  8. box.offsetHeight 元素真实的高度,加内边距和边框
  9. box.offsetLeft 元素的左边间距
  10. box.offsetTop 元素的顶边间距
  11. document.documentElement 获取html元素
  12. html.style.height html文档高度 html.scrollHeight
  13. html.clientHeight 当前可视区的高度
  14. html.scrollTop 获取滚动条距离顶部的高度
Correcting teacher:GuanhuiGuanhui

Correction status:qualified

Teacher's comments:写的很好!但是要注意文章排版!
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