批改状态:合格
老师批语:总体看上去写的不错,继续加油!
盒模型是一个具有上(top)、右(right)、下(bottom)、右(left)、高(high)、宽(weitgh)及内边距(padding)、边框(border)、外边距(margin)属性的块元素,可作为容器容纳其它元素。如:
DIV
代码示例:
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>盒模型演示</title><style>/* 给盒子设置宽、高 、背景色*/div{width: 200px;height: 200px;background-color: green;}</style></head><body><!-- 一个空盒子 --><div></div></body></html>
运行效果:
| 属性名 | 释义 | 属性值 |
|---|---|---|
top |
上定位 | 距离值,如:20px。仅当position不为static时生效 |
right |
右定位 | 距离值,如:20px。仅当position不为static时生效 |
bottom |
下定位 | 距离值,如:20px。仅当position不为static时生效 |
left |
左定位 | 距离值,如:20px。仅当position不为static时生效 |
padding |
内边距 | 距离值,如:10px 20px 10px 20px。以上右下左方向填值 |
borber |
边框 | 线宽、线样式、颜色,如:2px solid red。 |
margin |
外边距 | 距离值,如:10px 20px 10px 20px。注意:margin相对的是带定位属性的父元素,不一定是上级父元素,注意父元素的position设定。如多个同级元素或相对一个定位父元素时,margin会出现层叠,以数值大的为准。 |
background-clip |
盒尺寸 | 1、默认值border-box,以box为参照;2、content-box以内容区为参照 |
如想单独设置上内边柜,可以使用:
padding-top:20px。还有padding-right、padding-bottom、padding-left。border及margin同理。
先写一个body:
<!-- 父盒子 --><div class="container"><!-- 子盒子 --><div class="item"></div></div>
再设置样式:
<style>/* 改变父元素为定位元素 */.container {width: 300px;height: 300px;background-color: lightgreen;/* 设置相对定位,父元素必须 */position: relative;}/* 设置子元素居中 */.container .item {width: 100px;height: 100px;background-color: violet;/* 通过绝对定位来实现垂直居中 */position: absolute;/* 让当前元素绝对定位的上下文充满整个父级容器 *//* 左上角开始 */top: 0;left: 0;/* 右下角结束 */right: 0;bottom: 0;/* 水平垂直居中 */margin: auto;}</style>
显示效果:
演示代码:
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>元素大小与位置</title><style>.box {width: 200px;height: 180px;padding: 10px;border: 2px solid #000;margin: 10px;background-color: lightgreen;background-clip: content-box;}.pos {position: relative;top: 30px;left: 50px;}body {margin: 0;}</style></head><body><div class="box pos"></div></body><script>//获取box元素const box = document.querySelector(".box");// 1. 内容区大小与位置// 大小 = width / height + paddingconsole.log('clientWidth:'+box.clientWidth);console.log('clientHeight:'+box.clientHeight);// 更多的时候用来获取可视区大小: 视口console.log('documentElement.clientWidth:'+document.documentElement.clientWidth);console.log('documentElement.clientHeight:'+document.documentElement.clientHeight);// 2. 当前元素的定位偏移量,与定位有关// 定位父级console.log('offsetParent:'+box.offsetParent);// 这个元素现在是一个真正的盒子,包括了内容,padding, border// 真实宽度: 加上borderconsole.log('offsetWidth:'+box.offsetWidth);console.log('offsetHeight:'+box.offsetHeight);console.log('offsetLeft:'+box.offsetLeft);console.log('offsetTop:'+box.offsetTop);// 3. 当前文件的滚动大小// 视口大小: 可视区大小// 文档大小: 当前html的大小// 通过视口大小 < 文档大小, 所以,要通过滚动条才能看到全部html文档的内容// 获取html元素const html = document.documentElement;html.style.height = "600px";// 当前文档的高度console.log('scrollHeight:'+html.scrollHeight);// 当前可视区的高度console.log('clientHeight:'+html.clientHeight);// 获取滚动条// 234 + 366 = 600console.log('scrollTop:'+html.scrollTop);// 滚动时注意观察控制台显示的滚动数值document.addEventListener("scroll", function (ev) {console.log('scrollTop:'+ev.target.documentElement.scrollTop);});</script></html>
控制台数据如下:
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号