1. 定位
1.1 隐藏
在一些网站中,某些内容在鼠标点击上去时候才会显示出来,在鼠标一走以后就会消失。
这些内容就隐藏起来了。此时我们可以通过display或者opacity来对内容就行隐藏。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Title</title> <style> div { width: 100px; height: 100px; /*background-color: orange;*/ border-radius: 50%; border: 1px solid black; /* normal正常字体,Arial代表备用字体, 30px字体大小,100px行高*/ font: normal 30px/100px 'Arial'; color: green; text-align: center; } .d1:hover~.d2 { display: block; } .d2 { /*不以任何方式显示,在页面中不占位,但重新显示,仍然占位*/ display: none; } .d3 { /*修改盒子的透明度,值为0,完全透明,但在页面中占位*/ opacity: 0; } </style> </head> <body> <div class="d1">1</div> <div class="d2">2</div> <div class="d3">3</div> <div class="d4">4</div> <div class="d5">5</div> </body> </html
1.2 阴影
在网站中存在一种图片状态,当鼠标点上去的时候,图片会浮动起来,给人一种立体的感觉,这个时候就用到了阴影。本质上就是图片
向上浮动的一点距离,然后下放用阴影覆盖,这样就能给人一种浮动起来的立体的假象了。
阴影采用的是box-shadow,有五个参数,分别代表着:x轴 y轴 虚化程度 阴影宽度 颜色。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Title</title> <style> .dd { width: 100px; height: 100px; background-color: red; border: 1px solid black; margin: 100px auto; /* 参数介绍: x轴 y轴 虚化程度 阴影宽度 颜色*/ box-shadow: 200px 0 10px 10px blue, 0 200px 10px 0 green; } </style> </head> <body> <div class="dd"></div> </body> </html>
1.3 固定定位
1.3.1 display和opacity存在的问题:
display:不以任何方式显示,在页面中不占位,但重新显示,仍然占位
opacity:通过opacity可以修改样式的透明度,但是即使透明度为0的时候,依然占据着位置,即不管怎样,opacity都是占着一个位置的。
1.3.2 目标:显示和隐藏都不占位,用来做一些标签的显示影藏切换
1.3.3 固定定位
定位:就是把子级内容给抠出来。
我们通过浮动布局,将子级在父级中飘起来,就不会再撑开腹肌高度,但浮动受父级宽度影响,即父级的宽度决定了一行能拍多少个,
然后我们可以通过清浮动让父级能够获得一个刚好的宽度。通过定位把子级内容抠出来以后,父级就无法获得子级的高度,这个时候
父级子级都需要自己定义自己的宽高。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Title</title> <style> /* vw:当前视图的宽度, wh:当前视图的高度*/ .box { height: 500vw; background-color: red; } .tag { width: 180px; height: 300px; background-color: orange; /*一旦打开定位属性,left、right、top、bottom四个方位词均能参与布局*/ /*固定定位参考浏览器窗口*/ /*布局依据:固定定位的盒子四边距浏览器窗口四边的距离:eg:left - 左距左,right - 右距右*/ /*左右取左,上下去上*/ position: fixed; left: 0; top: calc(50% - 150px); right: 50vw; bottom: 20vw; z-index: 2; } /*z-index值就是大于等于1的正整数,多个重叠图层通过z-index值决定上下图层显示先后*/ .flag { width: 220px; height: 330px; background-color: purple; position: fixed; left: 0; top: calc(50% - 165px); z-index: 1; } </style> </head> <body> <div class="box"></div> <div class="tag"></div> <div class="flag"></div> </body> </html>
1.3.4 绝对定位
在没有定位之前,如果父级没有高度,子级没有长度,那么父级高找由子级撑开,子级宽继承父级
绝对定位:子标签获取不到父级标签的宽,也撑不开父级的高,子标签西部子级设置宽高,父级也必须自己设置宽高
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Title</title> <style> .box { width: 300px; height: 300px; background-color: red; margin: 100px auto 0; } .s { width: 100px; height: 100px; font: normal 20px/100px 'Arial'; text-align: center; } .s1 { background-color: blue; } .s2 { background-color: green; } .s3 { background-color: yellow; } /* 在没有定位之前,如果父级没有高度,子级没有长度,那么父级高找由子级撑开,子级宽继承父级*/ .s { /*绝对定位:子标签获取不到父级标签的宽,也撑不开父级的高*/ /*子标签必须自己设置宽高,父级也必须自己设置宽高*/ position: absolute; /*绝对定位的标签都是相对于一个参考系进行定位,之间不会相互影响*/ /*参考系:最近的定位父级*/ /*打开了四个定位方位*/ /*上距上...下距下*/ /*上下去上、左右取左*/ } .box { /*子级采用绝对定位,一般都是想参考父级进行定位,父级必须采用定位处理才能作为子级的参考系*/ /*父级可以选取 fixed、 absolute,但这两种定位都会影响盒模型,relative定位不会影响盒模型*/ /*父相子绝*/ position: relative; } .s1 { right: 0; left: 0; bottom: 0; z-index: 1; } .s2 { bottom: 50px; left: 0; z-index: 10; } </style> </head> <body> <div class="box"> <div class="s s1"></div> <div class="s s2"></div> <div class="s s3"></div> </div> </body> </html>
1、一个标签要随着父级移动而移动(子级布局完毕后相对于父级位置是静止的),且兄弟标签之间布局不影响(兄弟动,自身相对父级还是保持静止)
2、z-index 值能改变重叠的兄弟图层上下关系
3、子级相对的父级一定要 定位处理 (三种定位均可以)
父级要先于子级布局,所以子级在采用绝对定位时,父级一般已经完成了布局,如果父级采用了 定位 来完成的布局,子级自然就相当于父级完成 绝对定位
如果父级没有采用 定位 来完成的布局,我们要后期为父级增加 定位 处理,来辅助子级 绝对定位,父级的 定位 是后期增加的,我们要保证增加后不影响父级之前的布局,相对定位可以完成
1.3.5 相对定位
父级可以选取 fixed、 absolute,但这两种定位都会影响盒模型,relative定位不会影响盒模型
相对定位的参考系是图层的原有位置
相对定位与margin的区别:
margin下方若有内容时,则上下移动的时候会对下方的内容产生影响,下方的内容也会跟着改变位置
相对定位,相对于图层原有的位置进行移动,即使下方存在内容,也不会让下方内容也随之改变。
父相子绝
2. JavaScript
2.1 JavaScript介绍
js:前台脚本语言 - 编程语言 - 弱语言类型 - 完成页面业务逻辑及页面交互 1、可以自己生成页面数据 2、可以请求后台数据 3、可以接受用户数据 - 可以渲染给页面的其他位置;提交给后台 4、修改页面标签的 内容、样式、属性、事件(页面通过js可以完成与电脑的输入输出设备的交互)
2.2 三种输出方式
// 一、三种输出信息的方式 // 控制台输出语句 console.log('你丫真帅') // 弹出框提示信息 alert('你丫确实帅') // 将内容书写到页面 document.write('<h2 style="color: red">你丫帅掉渣</h2>')
2.3 变量与常量
// 二、变量与常量 let num = 123; num++; console.log(num); const str = '123'; // str = '456'; // 常量声明时必须赋初值,且一旦赋值,不可改变 console.log(str);
2.4 数据类型
// 三、数据类型 // 值类型 // 1) 数字类型 let a = 123; console.log(a, typeof(a)); a = 3.14; console.log(a, typeof(a)); // 2) 布尔类型 let b = false; console.log(typeof(b), b); // 3) 字符串类型:'' "" `` let c = `123 456 789`; console.log(c, typeof(c)); // 4) 未定义类型:未初始化的变量 let d; console.log(d, typeof(d)); // 引用类型 // 5) 数组(相当于list): let arr = [1, 2, 3]; console.log(arr, typeof(arr)); // 6) 对象(相当于dict):所有的key必须是字符串 let sex = '男'; let dic = { name: 'Owen', age: 17.5, sex, // value如果是变量,变量名与key同名,可以简写 }; console.log(dic, typeof(dic)); // 7) 函数类型 function fn() { } console.log(fn, typeof(fn)); // 8) null类型 let x = null; console.log(x, typeof(x));
2.5 弱语言类型
// 四、弱语言类型 let aaa = 123; let bbb = '123'; console.log(aaa == bbb); // == 只做数据比较 console.log(aaa === bbb); // === 做数据与类型比较 // 弱语言类型:会自己根据环境决定如何选择类型存储数据 console.log(1 + 2); // 3 console.log('1' + '2'); // 12 console.log(1 + '2'); // 12 console.log(1 - '2'); // -1