弹性布局,网格布局,JavaScript

  1. 弹性盒子布局(Flexbox Layout):通过display: flex;设置容器为弹性盒子,可以实现更复杂的自适应和响应式布局。

  2. 网格布局(Grid Layout):通过display: grid;设置容器为网格布局,可以将元素划分为一个个网格,并定义网格在容器中的位置和大小。

display属性主要用来决定元素的呈现方式

display:block;/*以块级元素的方式显示*/
display:inline-block;/*在一行中以块级元素的方式显示*/
display:inline;/*在一行中显示*/
display:flex;/*弹性盒子布局*/
display:grid;/*网格布局*/
  • flex布局
flex-grow: 1.5;/*弹性布局时,元素的扩充比例*/
flex-shrink: 0.8;/*弹性布局时元素的收缩比例*/
flex-direction: row;
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>flex弹性布局</title><style>html,body{height: 100%;width: 100%;margin: 0;display: flex;flex-direction: column;font-size: 50px;font-family: 楷体, serif;}header{height: 60px;background-color: #0a142b;color: #dddddd;}main{flex-grow: 1.5;flex-shrink: 0.8;display: flex;flex-direction: row;}aside{width: 200px;background-color: #acacb3;}section{flex-grow: 1.5;flex-shrink: 0.8;display: flex;flex-direction: column;}nav,footer{height: 60px;background-color: #33b4da;}article{flex-grow: 1.5;flex-shrink: 0.8;background-color: bisque;}</style></head><body><header>头部区域</header><main><aside>菜单栏</aside><section><nav>操作导航</nav><article>独立内容区</article><footer>网页相关信息</footer></section></main></body>
</html>

结果:

请添加图片描述

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>flex弹性布局</title><style>html,body{height: 100%;width: 100%;margin: 0;display: flex;flex-direction: row;font-size: 50px;font-family: 楷体, serif;}aside{width: 200px;background-color: #acacb3;color: black;}aside > .title{height: 60px;background-color: #0a142b;}main{flex-grow: 1.5;flex-shrink: 0.8;display: flex;flex-direction: column;}header{height: 60px;background-color: black;color: #dddddd;}section{flex-grow: 1.5;flex-shrink: 0.8;display: flex;flex-direction: column;}nav,footer{height: 60px;background-color: #33b4da;}article{flex-grow: 1.5;flex-shrink: 0.8;background-color: bisque;}</style></head><body><aside><div class="title"></div>菜单栏</aside><main><header>头部区域</header><section><nav>操作导航</nav><article>独立内容区</article><footer>网页相关信息</footer></section></main></body>
</html>

结果:

请添加图片描述

  • grid布局
display: grid;
grid-template-columns: 100%;
grid-template-rows: 60px calc(100% - 200px);
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>grid网格布局</title><style>html,body{height: 100%;width: 100%;margin: 0;font-size: 50px;font-family: 楷体, serif;}body{display: grid;grid-template-columns: 100%;grid-template-rows: 60px calc(100% - 60px);}header{background-color: #0a142b;color: #dddddd;}main{display: grid;grid-template-columns: 200px calc(100% - 200px);grid-template-rows: 100%;}aside{background-color: #acacb3;}nav,footer{height: 60px;background-color: #33b4da;}article{height:calc(100% - 120px);}</style></head><body><header>头部区域</header><main><aside>菜单栏</aside><section><nav>操作导航</nav><article>独立内容区</article><footer>网页相关信息</footer></section></main></body>
</html>

结果:

请添加图片描述

JavaScript

<script type="text/javascript" src="demo.js"></script>

JavaScript执行过程

用户从浏览器发出页面请求,服务器接收请求并进行处理,处理完成后会将页面返回至浏览器,浏览器开始解释执行该页面,如果页面中包含有 JavaScript 脚本,那么浏览器会再次向服务器发出 JavaScript 脚本获取请求,服务器接收请求并进行处理,处理完成后会将 JavaScript 脚本返回至浏览器,浏览器开始解释执行JavaScript 脚本。

  • 数据类型
数据类型
undefined
null
number
boolean
string
object
  • var和let的区别

var是全局变量

let是局部变量

  • 字符串
let name ="ZhangSan";
let name='LiSi';
方法说明
charAt(index)返回指定位置的字符串
indexOf(str)查找字符串首次出现的位置
substring(start,end)返回在【】区间中的字符串
split(str)分割
replace(oldStr,newStr)替换
  • 数组

push()添加元素

.concat()拼接数组

join(“”)按照指定字符串拼接,结果是字符串

splice(start,deleteCount,items)从start开始删除指定数量的元素,并插入items

遍历:

numbers.forEach(num=>console.log(num))

let num = [1,2,3];
console.log(num)
//在JavaScript中,数组是可以自动扩容的
//添加元素
let num2 = num.push(4,5,6);
console.log(num2)
let num3 = [7,8,9];//拼接num3在num后面,生成一个新数组
let num4 = num.concat(num3);
console.log(num4)
//将数中的元素按照给定字符串拼接起来,结果是一个字符串
var s = num4.join("&@");
console.log(s)let arr = [1,2,3,4,5,6]
//从3开始删除数组中的元素,删除2个元素
arr.splice(3,2);
console.log(arr)
// //从2这个位置开始删除元素,删除1个元素,然后再将10,20,30,40从2这个位置开始插入
arr.splice(2,1,10,20,30,40)
console.log(arr)//拼接
let arr2 =[100,200]
let numbers = arr.concat(arr2);
console.log(numbers)for (let i = 0; i < numbers.length; i++) {console.log(numbers[i])
}console.log("================")// for (const index in numbers) {
//     console.log(numbers[index])
// }console.log("================")
numbers.forEach(num=>console.log(num))
console.log("================")
numbers.map(num=>num*10).filter(num=>num%3===0).forEach(num=>console.log(num))
console.log("--------")
let number = numbers.find(num=>num%5===0);
console.log(number)
console.log("-----------")
//找到数组中第一个匹配条件的元素,如果没有,那么结果就是undefined
let num1 = numbers.find(num => num % 5 === 0);
console.log(num1)
  • 对象Object

对象创建的方式:

let user = {'name':'ZhangSan','age':'18','sex':'男'
}let student = new Object();student.name="ZhangSan";student.age =18;student.sex="男";

对象属性的遍历

//基于工具类实现对象的遍历
Object.keys(student).forEach(prop=>console.log(prop+"="+student[prop]))
//for-in循环,循环的就是对象的属性名
for (let prop in student) {console.log(prop+"="+student[prop])
}

对象的访问方式

//访问对象的方式有两种:
//第一种:通过 对象名.属性名
console.log(student.name)
//第二种: 通过 对象名[属性名]
console.log(student["nick-name"])

将一个对象赋值给另一个对象

let stu1 = {'name':'WangWu','sex':'男'
};
let stu2={};Object.keys(stu1).forEach(prop=>stu2[prop]=stu1[prop])
console.log(stu2)
console.log(stu1===stu2)
console.log("------")
let s1 = JSON.stringify(stu1)//将stu1转化为json格式的字符串
console.log(s1)
//再将json格式的字符串解析成一个对象,这个解析出来的对象就与原来的对象地址不一样了
let s2 = JSON.parse(s1);
console.log(s2)
console.log(s1===s2)
  • 窗体函数
函数名说明
alert(“提示信息”)提示对话框
confirm(“提示信息”)确认对话框
prompt(“提示信息”)输入对话框
  • 数学相关函数
方法说明
ceil()向上取整
floor()向下取整
round()返回与给定数值最近的一个整数
random()随机数(浮点数)
let number = parseInt("123")
console.log(typeof number)//将字符串解析成数字,必须是以数字开头
//如果中间存在其他非数字字符,解析停止
let num = parseInt("1234aa32");
console.log(num)//1234//在js中,两个整数相除,结果可能是浮点数
let n1 = 5; n2=3;
console.log(n1/n2)//判断结果是否不是数字
let b =isNaN(123)
console.log(b)//falseconsole.log(Math.ceil(0.2));//1
console.log(Math.floor(0.99999));//0
console.log(Math.abs(-1))//1
//返回与给定数值最近的一个整数
console.log(Math.round(-2.6))//-3
console.log(Math.random());
  • 自定义函数
function sum(a,b){return a+b;
}function show(msg){console.log(msg)
}
console.log(sum(1,2))
show("hello world")
function sum(a,b){return a+b;
}function show(msg){console.log(msg)
}
console.log(sum(1,2))
show("hello world")//匿名函数,将函数赋值给一个变量,这个变量本质是一个函数
let print = function (msg){console.log(msg)
}
print("javascript");/*    function calculate(num1,num2){const result = num1+num2;return function (num3,num4){return result*(num3+num4);}}let s = calculate(1,2)(3,4);console.log(s)*/
let result = (function calculate(num1, num2){const result = num1+num2;return function (num3,num4){return result*(num3+num4);}
})(1,2)(3,4);
console.log(result)
  • 元素事件
名称说明
click鼠标左键单击
blur元素失去焦点
focus元素获得焦点
keydown键盘按下
keyup键盘按下后释放
mouseover鼠标移动到元素上
mouseout鼠标移动到元素外
change元素内容发生改变
input元素内容发生改变

开启元素事件只需要在事件名前面加上“on”即可,关闭元素事件只需要在事件名前面加上“off”即可。

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>点击事件</title>
</head>
<body><input type="button" value="登录" id="loginBtn"></body>
<script type="text/javascript">let btn = document.getElementById("loginBtn");
btn.onclick = function (event){console.log(event)alert("你点击了登录按钮")
}
</script>
</html>
<input type="text" onfocus="console.log('获得焦点')" onblur="console.log('失去焦点')">
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>按键事件</title></head><body><input type="text " id="a"></body><script type="text/javascript">let el = document.getElementById("a");el.onkeydown = function (){}el.onkeyup = function (event){let key = event.key;if (key==='Enter'){console.log('登录')}}</script>
</html>
  • 密码强度检测
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>密码强度</title><style>ul {margin: 0;padding: 0;}#a,#b,#c {display: inline-block;background-color: gray;height: 5px;width: 56px;}</style></head><body><input type="text" id="pw"><ul><li id="a"></li><li id="b"></li><li id="c"></li></ul></body><script type="text/javascript">document.getElementById("pw").onkeyup=function (){let password = this.value;let strong = 0;for (let i = 0; i <password.length; i++) {let s =password.charAt(i);//test函数检测给定的字符串是否满足正则表达式if (/[0-9]/.test(s)){strong |= 2;}else if (/[a-z]/.test(s)){strong |= 4;}else if (/[A-Z]/.test(s)){strong |= 8;}else if (/[~!@#$%^&*?\\.]/.test(s)){strong |= 16;}}let a =document.getElementById("a");let b =document.getElementById("b");let c =document.getElementById("c");if(strong >0 && strong <= 10){a.style.backgroundColor = 'green';b.style.backgroundColor = 'gray';c.style.backgroundColor = 'gray';} else if(strong > 10 && strong <= 20){a.style.backgroundColor = 'green';b.style.backgroundColor = 'green';c.style.backgroundColor = 'gray';} else if(strong > 20){a.style.backgroundColor = 'green';b.style.backgroundColor = 'green';c.style.backgroundColor = 'green';} else {a.style.backgroundColor = 'gray';b.style.backgroundColor = 'gray';c.style.backgroundColor = 'gray';}}</script>
</html>
  • 鼠标事件-轮播图
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>轮播图-鼠标事件</title><style>.img-box {width: 590px;height: 470px;margin: 0 auto;border-style: solid;}img{display: none;}.active{display: block;}</style></head><body><div class="img-box"><img src="../img/a.jpg"><img src="../img/b.jpg"><img src="../img/c.jpg"><img src="../img/d.jpg"><img src="../img/e.jpg"><img src="../img/f.jpg"></div></body><script type="text/javascript">//js提供了周期函数,周期从本质来说就是一个时间间隔,因此,这个//函数叫setInterval,也就是设置时间间隔。这个函数接收两个参数//第一个参数是一个函数的调用或者函数的名称,第二个参数是间隔时间//通过标签名获取元素,得到的结果是一个数组let imgArr = document.getElementsByTagName("img");for (let i = 0; i < imgArr.length; i++) {imgArr[i].onmouseover = function (){clearInterval(t);}imgArr[i].onmouseout = function (){t = setInterval(changeImage, 1000)}}let index = 0; //默认显示的图片是第一张const changeImage = () => {imgArr[index].className = '';//将原来的图片的显示移除index++; //下标自加1if(index === imgArr.length)index = 0;imgArr[index].className = 'active'; //下一张图片显示}// function changeImage(){//     imgArr[index].className = '';//将原来的图片的显示移除//     index++; //下标自加1//     if(index === imgArr.length)//         index = 0;//     imgArr[index].className = 'active'; //下一张图片显示// }//第一个参数是一个函数名,这个函数名不能有字符串。如果要使用//字符串,那么就必须是函数的调用let t = setInterval(changeImage, 1000)//周期函数可以通过clearInterval函数来清理掉// function removeInterval(){//// }</script>
</html>
  • change&input

change事件主要表示的是元素的内容发生了变化,可用于下拉列表、文件域、复选框、单选按钮

input事件主要表示的是元素的内容或者值发生了变化,可用于下拉列表、文件域、复选框、单选按钮以及所有的能够输入的元素(这个事件是HTML5提供的)


input事件: 在输入框输入的时候会实时响应并触发;

change事件:在输入框失去焦点,并且输入框的值发生变化的时候才会触发,和 blur事件略有不同,blur事件是每次失去焦点时触发,不管输入框数据有没有变化;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/20174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 引擎做残影效果——2、屏幕后处理方式

Unity实现残影效果 大家好&#xff0c;我是阿赵。 这里继续介绍Unity里面做残影的方法。之前介绍了BakeMesh的方法做残影&#xff0c;这一期介绍的是用屏幕后处理的方法做残影。 一、原理 之前的BakeMesh方法&#xff0c;是真的生成了很多个网格模型在场景里面。如果用后处理做…

day49-Springboot

Springboot 1. Springboot简介 1.1 简介&#xff1a;Springboot来简化Spring应用开发的一个框架&#xff0c;约定大于配置 1.2 优点&#xff1a; 可以快速的构建独立运行的Spring项目&#xff1b; 框架内有Servlet容器&#xff0c;无需依赖外部&#xff0c;所以不需要达成w…

正则匹配img标签里面src

正则&#xff1a; (?<src\s*\s*\")\S(?\"{1})匹配效果&#xff1a;

Ansible —— playbook 剧本

Ansible —— playbook 剧本 一、playbook的概述1.playbook简介2.什么是Ansible playbook剧本&#xff1f;3.Ansible playbook剧本的特点4.如何使用Ansible playbook剧本&#xff1f;5.playbooks 本身由以下各部分组成 二、playbook示例1.运行playbook2.定义、引用变量3.指定远…

HarmonyOS/OpenHarmony元服务开发-卡片使用动效能力

ArkTS卡片开放了使用动画效果的能力&#xff0c;支持显式动画、属性动画、组件内转场能力。需要注意的是&#xff0c;ArkTS卡片使用动画效果时具有以下限制&#xff1a; 以下示例代码实现了按钮旋转的动画效果&#xff1a; Entry Component struct AttrAnimationExample { St…

Vue axios + Vue使用

相对于原生的阿贾克斯&#xff0c;axios提供的方法使用起来会更加的简便&#xff0c;之前网络数据获取到了&#xff0c;如何和vue一起使用呢&#xff1f; 网络应用的核心就是data中的数据一部分是通过网络获取到的。所以在方法当中发起网络请求&#xff0c;在响应回来之后将服…

mac切换jdk版本

查询mac已有版本 1、打开终端&#xff0c;输入&#xff1a; /usr/libexec/java_home -V注意&#xff1a;输入命令参数区分大小写(必须是-V) 2.目前本地装有两个版本的jdk xxxxedydeMacBook-Pro-9 ~ % /usr/libexec/java_home -V Matching Java Virtual Machines (2):20.0.1 (…

【腾讯云Cloud Studio实战训练营】使用Cloud Studio迅捷开发一个3D家具个性化定制应用

目录 前言&#xff1a; 一、腾讯云 Cloud Studio介绍&#xff1a; 1、接近本地 IDE 的开发体验 2、多环境可选&#xff0c;或连接到云主机 3、随时分享预览效果 4、兼容 VSCode 插件 5、 AI代码助手 二、腾讯云Cloud Studio项目实践&#xff08;3D家具个性化定制应用&…

探索 GPTCache|GPT-4 将开启多模态 AI 时代,GPTCache + Milvus 带来省钱秘籍

世界正处于数字化的浪潮中&#xff0c;为了更好理解和分析大量数据&#xff0c;人们对于人工智能&#xff08;AI&#xff09;解决方案的需求呈爆炸式增长。 此前&#xff0c;OpenAI 推出基于 GPT-3.5 模型的智能对话机器人 ChatGPT&#xff0c;在自然语言处理&#xff08;NLP&a…

【MYSQL】MYSQL学习笔记【基础篇】【未完待续】

文章目录 MYSQL入门一、MYSQL概述1. 数据库相关概念1.1 数据库&#xff0c;数据库管理系统与SQL1.2 数据库种类以及主流数据库管理系统排名1.3 MySQL数据库安装1.4 数据模型 二、SQL2.1 通用语法与注释2.2 SQL分类2.3 图形化界面2.4 DDL2.4.1 数据库操作2.4.2 表操作2.4.2.1 表…

介绍一下JS垃圾回收机制

JavaScript中的垃圾回收机制负责自动管理内存&#xff0c;回收不再使用的对象所占用的内存空间。在JavaScript中&#xff0c;开发者不需要显式地分配和释放内存&#xff0c;垃圾回收器会自动完成这些操作。以下是关于JavaScript垃圾回收机制的一些关键概念&#xff1a; 内存生命…

Linux下基于Dockerfile构建镜像应用(1)

目录 基于已有容器创建镜像 Dockerfile构建SSHD镜像 构建镜像 测试容器 可以登陆 Dockerfile构建httpd镜像 构建镜像 测试容器 Dockerfile构建nginx镜像 构建镜像 概述&#xff1a; Docker 镜像是Docker容器技术中的核心&#xff0c;也是应用打包构建发布的标准格式。…

云曦暑期学习第三周——ctfshow--php特性(89-104)

目录 web89 preg_match函数 、数组 web90 intval()函数、强比较 web91 正则修饰符 web92 intval()函数、弱比较 web93 八进制、小数点 web94 strpos() 函数、小数点 web95 小数点 web96 highlight_file() 下的目录路径 web97 数组 web98 三目运算符 web9…

chrome扩展在popup、background、content之间通信解决传输文件问题

文章目录 背景介绍案例介绍代码示例popup页面&#xff0c;上传文件页面popup页面&#xff0c;js上传代码&#xff0c;file文件转base64background监听消息&#xff0c;base64转file文件&#xff0c;axios上传 附-转base64后直接下载 背景介绍 示例扩展API版本MV2。 以弹…

利用openTCS实现车辆调度系统(一)系统介绍

系统介绍 openTCS简介 官方的回答&#xff1a; openTCS&#xff08;开放式运输控制系统的缩写&#xff09;是一种免费的控制系统软件&#xff0c;用于协调自动导引车&#xff08;AGV&#xff09;和移动机器人车队&#xff0c;例如在生产工厂中。 通常应该可以控制任何具有通信…

在线思维导图怎么绘制?学学这几种绘制方法

在线思维导图怎么绘制&#xff1f;思维导图是一种非常有效的学习和工作工具&#xff0c;可以帮助我们更好地组织和呈现信息&#xff0c;提高学习效率和工作效率。而在线思维导图的出现&#xff0c;更是为我们的绘制带来了极大的便利。现在也有很多绘制思维导图的方法&#xff0…

用chatglm实现code interpreter

背景 开始文章之前可以先介绍下何为code interpreter。所谓code interpreter从实际操作讲就是让llm模型具备了立马执行代码、并把执行结果作为下轮模型生成的物料。这里面有两个关键词“立马执行代码”、“结果作为物料”&#xff0c;其实如果llm不具备控制计算机得到执行结果…

图文演示:如何三分钟极速搭建一个元宇宙3D虚拟展厅

引言&#xff1a; 元宇宙3D虚拟展厅时代已经来临。元宇宙是一个虚拟的、立体的数字空间&#xff0c;可以让用户沉浸在其中进行交互操作&#xff0c;并体验无限可能。如何快速搭建一个属于自己的虚拟展厅则受到越来越多人的关注。 一&#xff0e;虚拟展厅类型 1.党建展馆 实现…

html:去除input/textarea标签的拼写检查

默认情况下&#xff0c;textarea 会启动拼写和语法检查&#xff0c;表现效果就是单词拼写错误会出现红色下划线提示 <textarea></textarea>效果 有时&#xff0c;我们并不需要拼写检查&#xff0c;可以通过配置属性spellcheck"false" 去除拼写和语法检…

振弦传感器信号转换器应用山体滑坡安全监测

振弦传感器信号转换器应用山体滑坡安全监测 随着人类文明的进步&#xff0c;自然灾害对人们的生活和财产安全造成的威胁也越来越大。山体滑坡作为自然灾害中的一种&#xff0c;给人们的生活和财产安全带来了极大的威胁。因此&#xff0c;进行山体滑坡的安全监测显得尤为重要。振…