CSS+JS

导读:本篇文章讲解 CSS+JS,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、CSS

1.定位(position)

position 配合方向值一起使用才有用
relative 相对定位
​ 相对元素本身在文档流中的原位置而言
absolute 绝对定位 完全脱离文档流
​ 子父集定位
​ 父元素有设置相对定位,子元素相对与父级定位
相对窗体定位
​ 父元没有设置相对定位,相对于窗体定位
fixed 固定定位 完全脱离文档流

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			#box{
				border: 2px solid rosybrown;
				width: 500px;
				height: 1000px;
				/* position: relative; */
			}
			div{
				width: 100px;
				height: 100px;
			}
			.div1{
				background: green;
			}
			.div2{
				background: red;
				/* 相对定位 */
				position: relative;
				
			}
			.div3{
				/* 绝对定位 */
				position: absolute;
				background: blue;
				right: 0px;
				bottom: 0px;
			}
			.div4{
				
				background: yellow;
				/* 固定定位 */
				position: fixed;
			}
		</style>
	</head>
	<body>
		<div id="box">
			<div class="div1">
				div1
			</div>
			<div class="div2">
				div2
			</div>
			<div class="div3">
				div3
			</div>
			<div class="div4">
				div4
			</div>
		</div>
	</body>
</html>

2.浮动(float)

浮动:
让元素按照一定的方向进行移动,当遇到其他浮动元素|浏览器的边界的时候停止移动
​ float 浮动
​ left 让元素向左移动
​ right

​ 清除浮动:
​ clear
​ left 我的左边不能有浮动元素
​ right 我的右边不能有浮动元素
​ both 我的两边不能有浮动元素

​ 1)使用clear属性
​ 2)给父级高度
​ 3)在父级中定义,overflow:hidden
应用场景: 被我们使用在让块元素一行显示

​ 块元素一行显示:
​ 1)浮动
​ 2)display:
​ inline 行内元素
​ block 块元素
​ inline-block 行内块
​ 行内与块的特点都存在
​ 宽度由内容撑起
​ 可以设置宽高
​ 浮动效果(清除浮动的问题)和设置inline-block效果几乎一致

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>浮动</title>
		<style type="text/css">
			#box{
				border: 2px solid #008000;
				/* 添加高度 */
				/* 清除浮动  父级中 */
				 overflow: hidden; 
			}
			.div{
				width: 100px;
				height: 100px;
				color: #fff;
				/* 浮动 */
				float: left;
			}
			.div1{
				background: black;
			}
			.div2{
				background: skyblue;
				/* 清除浮动 */
				clear: both;
			}
			.div3{
				background: green;
			}
			/* 清除浮动 */
			.clear{
				clear: both;
			}
			/*清除浮动 块元素一行显示*/
			p{
				background: #87CEEB;
				/* 行内元素 */
				display: inline;
				width: 100px;
				height: 100px;
				/* 行内块  浮动效果*/
				display: inline-block;
			}
		</style>
	</head>
	<body>
		<div id="box">
			<div class="div div1">郑爽</div>
			<div class="div div2">杨洋</div>
			<div class="div div3">小小</div>
			<!-- <div class="clear"></div> -->
		</div>
		<p>红红火火恍恍惚惚</p>测试
	</body>
</html>

3.导航案例

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			/* 清除浏览器默认样式 */
			*{
				margin: 0;
				padding: 0;
			}
			ul{
				/* 清除列表标记 */
				list-style: none;
				font-size: 0px;
			/* 元素内部的行内元素|行内块元素|文本水平对其方式*/
				text-align: center;
				background: pink;
			}
			ul li{
				display: inline-block;
				font-size: 30px;
				width: 200px;
				
			}
			a{
				text-decoration: none;
			}
			ul li:hover{
				background: #87CEEB;
			}
			ol{
				list-style: none;
				/* 清除浮动 */
				overflow: hidden;
				width: 800px;
				 /* 块元素自己在父级水平居中*/
				margin: 0 auto;
				background: #87CEEB;
			}
			ol li{
				/* 浮动 */
					float: left;
					padding: 0 100px;
					
			}
			ol li:hover{
				background: #FFC0CB;
			}
		</style>
	</head>
	<body>
		<!-- 第一种方法 -->
		<ul>
			<li><a href="">我的说说</a></li>
			<li><a href="">我的相册</a></li>
			<li><a href="">我的访问量</a></li>
		</ul>
		<!-- 第二种方法 -->
		<ol>
			<li><a href="">华为</a></li>
			<li><a href="">三星</a></li>
			<li><a href="">苹果</a></li>
		</ol>
	</body>
</html>

二、JavaScript

1.javaScript基本用法

1**)javaScript是一个动态语言

​ **作用:**验证发往服务器端的数据、增加 Web 互动、加强用户体验度等。

2)JavaScript组成:

​ 1.ECMAScript js的核心语法
​ 2.BOM 浏览器对象模型
​ 3.DOM 文档对象模型
​ BOM>DOM

3)使用方式:

行内: 元素上使用js代码
内部: html内部定义script标签对,标签对中定义js代码
外部: 外部定义js文件,文件中定义js代码,在使用的html中使用script标签对用来引入
注意:一个script标签不能及用来引入外部js文件,又用来定义js代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>js入门</title>
		<!-- 外部定义js文件 -->
		<script src="js/demo01.js" type="text/javascript" charset="utf-8"></script>
		
	</head>
	<body>
		 <!-- 
			js代码在html月面中的位置:
				可以在html中的任意位置定位
				推荐:
					head中,便于后期维护
					body结束之前:保证在执行js代码的时候,页面所有的内容都加载完成之后执行,如果要在head中配合window.onload一起使用
	-->
		 <input type="button" value="按钮" onclick="console.log('哈哈哈哈')"/>
		 <div id="div">
		 	欢迎来到js学习F!!!!
		 </div>
		 <div id="box">
		 	哈哈哈哈哈
		 </div>
		 <!--内部定义script标签 -->
		 <script type="text/javascript">
		 	console.log("js和java什么关系???");
			console.log(document.getElementById("div"));
		 </script>
	</body>
</html>

2.变量

js中使用var关键字定义变量
var 变量名=赋值
​ 声明同时赋值,先声明后赋值
​ 动态语言的特点,类型由赋值决定
​ 注意:
​ 同时打印多个值
​ 同时声明多个值
​ 变量可以省略var
变量的分类:
​ **全局变量:**否则就是全局变量
局部变量:函数中定义的变量为局部变量
变量的作用域提升:
​ 前提是必须是使用var关键字声明的变量,才有作用域提升的问题
​ 只提升变量的声明,提升到当前作用域的最上面
​ 变量不赋值,存在默认值undefined

<script type="text/javascript">
			console.log(name);
			var a=5;
			var b=10;
			var c=15,d=10;
			console.log(a,b);
			console.log(c,d);
			a="lisi";
			console.log(a);
			e=200;
			console.log(e);
			var name="hsq";
			var age;
			console.log(age);
		</script>

3.数据类型

1)基础数据类型:
Number 类型 控制台中显示蓝色
​ 表示整数,小数,NaN(not a number)
如何获取NaN类型的数据:
​ 1.赋值NaN
​ 2.运算无法计算正确的结果
String 类型
​ 字符串要定义在一对引号当中,’’|””都可以
Boolean类型
​ rue|false
Null 类型

​ 1.赋值

​ 2.获取不到元素
Undefined 未定义
​ 1.赋值
​ 2.只声明不赋值存在默认值
function 函数

2)复合数据类型:
​ 一切皆对象
Object 对象类型 {}
​ 对象中的内容都是以键值对的形式存在的
key:value
​ 多个键值对之间使用个逗号进行分隔
​ 最后一个键值对后面不需要添加逗号
​ key属性名,满足标识符的命名规范
​ key和value其实都是字符串
​ key如果满足标识符的命名规范,前后引号可以省略

3)​ typeof 运算符用来测试数据的数据类型
​ 使用方式:
​ typeof 数据
​ typeof(数据)

<script type="text/javascript">
		 	var a=1;
			var b=1.5;
			var c=NaN;
			console.log(a,b,c);
			console.log(5/'b');
			var name="hsq";
			var d='kkkk';
			console.log(name,d);
			var age=null;
			console.log(age);
			console.log(document.getElementById('box'));
			var un=undefined;
			console.log(un);
			//函数
			function fn(){
				return 1;
			}
			console.log(fn());
			//对象
			var p={
				name:"hhh",
				age:18,
				sex:1
			}
			console.log(p);
			//typeof
			console.log(typeof 123);//Number
			console.log( typeof 'aaaa');//String
			console.log(typeof false);//Boolean
			console.log(typeof null); //object 
			console.log(typeof undefined);//undefined
			console.log(typeof(function f(){}));//function
			console.log(typeof({}));//object
		 </script>

4.类型转换

显示类型转换
​ 通过其他方式|函数,手动让数据改变其类型
​ js中对象类型不参与类型转换(包含函数)
​ 任意类型都可以转换一下三种类型
​ String(数据)
​ Number(数据)
​ Boolean(数据)

隐式类型转换
​ 目的不是为改变数据的类型,但是执行过程中会隐式改变类型
规律:
​ String 转换什么等于本身
​ Boolean: 转换什么奇数是true,偶数false
​ Number 转换boolean值是1,0,转换字符串都是找不到NaN

 <script type="text/javascript">
		 	console.log(Number(true));//1
			console.log(Number(false));//0
			console.log(1+true);//2
			console.log(String(true));//true
			console.log(String(1));//1
			console.log(Boolean(1));//true
			console.log(Boolean(3));//true
			console.log(Number('a'));//NaN
			console.log(Number('name'));//NaN
			console.log(Boolean('a'));//true
			console.log("hhh"+true);
		 </script>

5.运算符

1)算术运算符

运算符 描述 例子****y=5 结果
+ x=y+2 x=7
x=y-2 x=3
* x=y*2 x=10
/ x=y/2 x=2.5
% 求余数 x=y%2 x=1
++ 自增(前导加、后导加) x=++y x=6
自减(前导减、后导减) x=–y x=4

2)赋值和扩展运算符

运算符 例子****x=10, y=5 等价于 结果
= x=y x=5
+= x+=y x=x+y x=15
-= x-=y x=x-y x=5
*= x*=y x=x*y x=50
/= x/=y x=x/y x=2
%= x%=y x=x%y x=0

3)比较运算符

运算符 描述 例子****x=5
== 等于 x==8 为 false
=== 全等(值和类型) x=5 为 true;x=“5” 为 false
!= 不等于 x!=8 为 true
> 大于 x>8 为 false
< 小于 x<8 为 true
>= 大于或等于 x>=8 为 false
<= 小于或等于 x<=8 为 true

4)逻辑运算符

运算符 描述 例子****x=5, y=2
&& and (x < 10 && y > 1) 为 true
|| or (x5 || y5) 为 false
! not !(x==y) 为 true

5)三目运算

运算符 描述 例子
?: 如果…否则… 3>5?3:5

6)块

{} 就是块
java中{}自成作用域
​ js中块不是作用域,作用域在js中之间函数function

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			/* 
			 运算符:
				+ 字符串的连接符使用
			    
				= == === 之间的区别:
					= 赋值
					== 比较数据是否相同
					=== 比较数据和类型是否都相等
						先比较类型,后比值
				
				! 非 取反
				!! 不变
				!!!取反
				...
				逻辑运算符:  &&   ||
				java中逻辑运算符两边的操作数必须为boolean类型的
				js中中逻辑运算符两边的操作数可以都是boolean,也可以有其他类型的数据参与,如果有, 结果肯定为其中一个操作数
				
				&& 一个为false就是false
				   第一个操作数转为boolean,为false,结果就为第一个操作数的值
										 为true,,结果就为第二个操作数的值
				|| 一个为true就是true
					第一个操作数转为boolean,为true,结果就为第一个操作数的值
					  为false,结果就为第二个操作数的值
			 
			
			 */
			console.log(1+'2');
			
			console.log(1 == '1');
			console.log(1 === '1');
			
			console.log(!true);
			console.log(!!true);
			console.log(!!!true);
			//&&
			console.log(Boolean(undefined));
			
			console.log(true && 12);
			console.log(0 && 12);
			
			console.log(true || 12);
			console.log(0 || null);
			console.log(undefined || null);
			
			//块
			{
				var a='hahaha';
			}
			console.log(a);
		</script>
	</body>
</html>

6.控制语句

跟java语句一样

流程控制语句一共有三种:

​ a. 流程执行: 从上到下,从左到右

​ b. 选择执行: 分支选择

​ c. 循环执行: 重复执行

7.数组

数组:可以存储任意个任意类型的数据,长度可变
创建数组: new Array();
​ new Array(数据1,数据2,数据3);
​ [数据1,数据2,…] 字面量
**数组有序:**从0开始,索引顺序
​ 根据索引操作数组,索引不是0~n整数,作为数组的自定义属性
数组遍历:
​ 普通for
​ for …in
​ foreach

 <script type="text/javascript">
		 	//定义数组
			var arr1=new Array();
			console.log(arr1);
			var arr2=new Array(1,false,'hhh',null,undefined);
			console.log(arr2);
			var arr3=[1.2,2,'hhh',false];
			console.log(arr3);
			arr1[0]=1;
			arr1[1]=2;
			arr1['hhh']="哈哈哈";
			console.log(arr1);
			console.log(arr1.length);
			console.log(arr1['hhh']);
			//遍历
			console.log('-------------普通for-------');
			for (var i = 0; i <arr2.length; i++) {
					console.log(arr2[i]);
			}
			console.log('-------------for in-------');
			for(var i in arr2){
				console.log(arr2[i]);
			}
			console.log('-------------foreach-------');
			arr2.forEach(function(value,index){
				console.log("数据组"+value);
				console.log("索引"+index);
			})
			
		 </script>

8.数组常用的方法

数组中的常用的方法:
​ push 添加元素到最后
​ unshift 添加元素到最前
​ pop 删除最后一项
​ shift 删除第一项
​ reverse 数组翻转
​ join 数组转成字符串
​ indexOf 数组元素索引
​ slice 截取(切片)数组,原数组不发生变化
​ splice 剪接数组,原数组变化,可以实现前后删除效果
​ concat 数组合并

注意:
​ slice 截取(切片)数组,原数组不发生变化
​ splice 剪接数组,原数组变化,可以实现前后删除效果

 <script type="text/javascript">
			 var arr01=[1,2,3,45,5];
			 arr01.reverse();
			 console.log(arr01);
			 //添加元素到最后
			 arr01.push(6);
			 console.log(arr01);
			 //添加元素到最前
			 arr01.unshift(0);
			 console.log(arr01);
			 // 删除最后一项 
			 arr01.pop();
			 console.log(arr01);
			 // 删除第一项 
			 arr01.shift();
			 console.log(arr01);
			 //数组翻转 
			 arr01.reverse();
			 console.log(arr01);
			 //数组转成字符串 
			 arr01.join();
			 console.log(arr01);
			 // 数组元素索引 
			console.log(arr01.indexOf(1));
		 	var arr=['pink','hhh','ssss','qqqq'];
			console.log("原数组:"+arr);
			//根据索引2来截取数组
			console.log(arr.slice(2));
			//根据索引1-3,不包含3
			console.log(arr.slice(1,3));
			//根据索引1截取数组
			console.log(arr.splice(1));
			//根据索引0~1截取
			console.log(arr.splice(0,1));
			//截取有hhh代替
			console.log(arr.splice(1,2,'hhh'));
			console.log(arr);
		 </script>

9.函数function

js中的函数(java中的方法)
​ 封装功能,处理业务的代码块
​ 定义:
数声明**
function 函数名 (参数列表) {
函数体;
[return 返回值;]
}
调用:

  1. 函数名(实参);
  2. 转换函数表达式,在最后添加()自执行
 ​		在函数声明的前面添加~|!|+|-
 ​		在函数声明天后添加()包裹

 **函数表达式的方式**
 ​	var 变量名 = function 函数名 (参数列表) {
 ​		函数体;
 ​		[return 返回值;]
 ​	};
 ​	函数名一般省略,不可以通过函数进行调用,只能通过变量名,函数名可以在函数内部进行递归使用
 ​	调用:
 ​		**1.通过变量名调用  变量名(参数);**
 ​		**2.函数表达式最后添加(),直接直接这个函数,自执行**

注意:参数省略var关键字

函数的作用域提升:
​ 只有函数声明的方式才有函数作用域的提升,函数表达式没有,提升到当前作用域的最上面

	<script>
		fn2('李四',15);  //作用域提升
		   
		   //函数声明
		   function fn1(){
			   console.log("我是函数声明fn1");
			   return '返回值';
		   }
		   fn1();
		   console.log(fn1());
		   
		   function fn2(name,age){
				console.log("我是函数声明fn2");
				if(age==15){
					console.log(name+"哈哈哈只有15岁");
					return;
				}
				console.log(name,age);
		   }
		   fn2('zhangsan',18);
		   
		   //参数可以不一一对应
		   fn2();
		   fn2(123);
		   fn2(1,2,3,4,5);
		   
		   //函数表达式
		   var f1=function fn3(i){
			   if(i==5){
				   return;
			   }
			    console.log("我是函数表达式"+i);
			   i++;
			   fn3(i);
		   }
		   
		   f1(1);
		   //fn3();
		   
		   //函数表达式自执行
		   var f2=function(){
			   console.log("heihei");
		   }();
		   
		   //函数声明转为函数表达式
		   ~function fun1(){
			    console.log("我是fun1");
		   }();
		   
		   !function fun2(){
		   		console.log("我是fun2");
		   }();
		   +function fun3(){
		   		console.log("我是fun3");
		   }();
		   -function fun4(){
		   		console.log("我是fun4");
		   }();
		   
		   (function fun5(){
		   		console.log("我是fun5");
		   })();
		</script>

函数注意事项

<script>
			//b.	若函数形参同名(一般不会这么干),在使用时以最后一个值为准。
			function fn(a,a,a){
				console.log(a);
			}
			fn(1,2,3,4,5);
			console.log();
			//函数的参数可以定义默认值
			function fn2(x='zhangsan',y='lisi'){
				console.log(x,y);
			}
			fn2(1,2);
			
			
			// 值传递
			var num = 12;
			function change(n) {
				n = 30;
			}
			change(12);
			console.log('值传递-----' + num);  //12
			
			// 引用传递
			var obj = {
				name: "tom"
			};
			
			function paramter(o) {
				o.name = '2';
			}
			paramter(obj);
			console.log('引用传递-----' + obj.name);  //2

			var obj2 = [1, 2, 3];

			function paramter2(o) {
				//o = [2, 3, 4];  //指向新数组
				o[0] = 3;
			}
			paramter2(obj2);
			console.log('引用传递-----' + obj2);  // [1, 2, 3]
		</script>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/121479.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!