盒模型基础
content(内容区):盒子的内容显示文本和图像的区域
padidng(内边距): 内容周边的区域(内边距也是透明的)
padding:有四个值分别按照上右下左(顺时针的方向排序)
padding-top:10px; padding-right:10px; padding-bottom:10px; padding-left:10px;
10px代表距离;
简写:padding:10px 10px 10px 10px;(若不想给那一边设置外边距值直接写0即可)
若是四边的外边距相同可直接写为padding:10px;(代表四周外边距均为10px)
border(边框): 围绕在内容和内边距外的边框;
border:1px solid red; 1px:边框的大小 solid:边框的样式solid带边实线 red:代表边框的颜色
margin(外边距): 边框外的区域(外边距是透明的)
marign:有四个值分别按照上右下左(顺时针的方向排序)
margin-top:10px; margin-right:10px; marign-bottom:10px; marign-left:10px;
简写:marign:10px 10px 10px 10px;(若不想给那一边设置外边距值直接写0即可)
若是四边的外边距相同可直接写为margin:10px;(代表四周外边距均为10px)
注:内边距影响到盒子大小, 而外边距影响到盒子的位置
background-color(设置背景颜色)
例:background-color:green;
background-clip(背景裁切):content-box(裁切到内容区)border-box(裁切到边框)
例:background-clip:content-box; background-clip:border-box;
注:一旦一个元素被添加了position,且值非static,那么它就是定位元素
position:relative; 相对定位:相对于自己在文档流中的位置进行定位
position:absolute; 绝对定位:相对于带有定位属性的父级元素进行定位,如果父级没有定位属性会一直往上找,一直找不到就以body为定位父级
position:fixed; 固定定位:忽略你的父级定位元素,总是相对于body进行定位;
用户自定义元素大小的计算方式
box-sizing: 重新计算盒大小(content-box: 默认值,以内容区为准,页面初始化时设置值为border-box)
box-sizing:content-box;以内容区为主
解释:原本给盒子设置的宽度和高度分别应用到元素的内容框,在宽度和高度之外绘制元素的内边距和边框
总结:盒子的宽高变成了内容区的宽高,盒子总宽高发生变化
box-sizing:border-box;以边框为主
解释:就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制
,通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度
总结:盒子的宽高还是盒子的宽高,盒子总宽高不变
块元素元素的垂直居中(定在页面的正中间位置)
第一步给父级设置定位属性,给自己设置绝对定位属性
第二步设置margin:auto; top:0; right:0; bottom:0; left:0;
例:
<!DOCTYPE html>
<html>
<head>
<title>margin:auto: 块元素元素的垂直居中</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style type="text/css">
.box.parent {
width:500px;
height:500px;
background-color:#0066CC;
position:relative;
}
.son {
width:100px;
height:100px;
background-color:#FF99CC;
/*水平居中*/
/*margin-left:auto;
margin-right:auto;*/
/*简写水平居中*/
/*margin:auto;*/
/*水平垂直居中(通过定位实现)*/
/*定位在页面的正中间*/
/*给父类设置定位属性,然后给自己设置绝对定位*/
position: absolute;
top:0;
right:0;
bottom:0;
left:0;
margin:auto;
}
</style>
</head>
<body>
<div class="box parent">
<div class="son"></div>
</div>
</body>
</html>
元素的大小和位置
lientWidth:获取内容区的宽度
clientHeight:获取内容区的高度
注:内容区的大小 = width / height + padding
clientLeft/clientTop:示的padding到border外边缘的距离: 就是边框宽度(用的极少)
clientWidth:获取可视区的宽度
clientHeight:获取可视区的高度
offsetParent:获取定位父级元素(就是查看当前元素的定位父级是谁)
offsetWidth:获取盒子的最终宽度width + padding + width;
offsetHeight:获取盒子的最终高度height + padding + height;
offsetLeft:获取盒子的左边距(也是盒子的偏移位置)
offsetTop:获取盒子的上边距(也是盒子的偏移位置)
scrollTop:获取滚动条的位置
例:
<!DOCTYPE html>
<html>
<head>
<title>元素的大小和位置</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style type="text/css">
.box {
width:400px;
height:400px;
padding:10px;
margin:10px;
border:2px solid red;
background-color:#FFFFCC;
background-clip:content-box;
}
.pos {
position: relative;
top: 30px;
left: 50px;
}
body {
margin: 0;
}
</style>
</head>
<body>
<div class="box pos"></div>
</body>
<script type="text/javascript">
// 获取到盒子
const box = document.querySelector(".box");
// 内容区的大小和位置:内容区width / height + padding;
console.log(box.clientWidth);
console.log(box.clientHeight);
// 表示的padding到border外边缘的距离 (边框宽度)
console.log(box.clientLeft);
console.log(box.clientTop);
// 当前可视窗口的宽高
console.log(document.documentElement.clientWidth);
console.log(document.documentElement.clientHeight);
// offsetParent获取当前盒子的定位父级
console.log(box.offsetParent);
// 获取盒子的最终宽度高度盒子宽高+padding+border
// offsetWidth:获取的是盒子最终的宽offsetHeight:获取的是盒子最终的高
console.log(box.offsetWidth);
console.log(box.offsetHeight);
// box.offsetLeft:获取盒子的左外边距 box.offsetTop:获取盒子地上外边距
console.log(box.offsetLeft);
console.log(box.offsetTop);
// 获取当前html文档
const html = document.documentElement;
console.log(html);
console.log(html.offsetHeight);
html.style.height = "1000px";
// 当前文档的高度
console.log(html.scrollHeight);
// 当前可视区的高度
console.log(html.clientHeight);
// 获取滚动条
// console.log(html.scrollTop);
// 给滚动条添加一个监听事件
document.addEventListener("scroll",function (ev){
// 获取当前html文档的滚动距离
console.log(ev.target.documentElement.scrollTop);
});
</script>
</html>
定时器
setInterval:设置定时器 参数100是定时器每隔多长时间触发
let DS = null;//定义一个变量来承接定时器
DS = setInterval(function (){
// 通过改变盒子位置来实现盒子的移动
box.style.left = box.offsetLeft + 10 + "px";
},100)
clearInterval:清除定时器
例:
function stop(){
clearInterval(DS);
}
总结