弹性布局,网格布局,JavaScript

news2024/11/15 11:02:46
  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)//false

console.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++; //下标自加1
            if(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.coloradmin.cn/o/833762.html

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

相关文章

编译运行LeGO-LOAM算法(跑.bag包)

ubuntu18.04 ros melodic 官方链接&#xff1a;https://github.com/RobustFieldAutonomyLab/LeGO-LOAM 文章目录 1、下载并编译 gtsam2、下载并编译 LeGO-LOAM3、测试运行 1、下载并编译 gtsam 我下载的是gtsam-4.0.2&#xff0c;官网用的gtsam-4.0.0&#xff0c;因为我用的实…

关于个人微信API接口的开发

个人微信开发API接口可拓展功能说明 1、个人微信多账号管理、聚合聊天、多个微信号同时登陆、多个微信号集中在一个窗口进行聊天&#xff0c;实现一人多号同时沟通快速提升沟通效率&#xff0c;提升微信营销效率。 2、客服灵活分配&#xff1a;客服主管可自由分配微信号给指定…

如何使用njsscan识别Node.JS应用中的不安全代码

关于njsscan njsscan是一款功能强大的静态应用程序测试&#xff08;SAST&#xff09;工具&#xff0c;可以帮助广大研究人员找出Node.JS应用程序中不安全的代码模式。该工具使用了 libsast的简单模式匹配器和语法感知语义代码模式搜索工具 semgrep实现其功能。 工具安装 当前…

2023年华数杯数学建模C题思路代码分析 - 母亲身心健康对婴儿成长的影响

# 1 赛题 C 题 母亲身心健康对婴儿成长的影响 母亲是婴儿生命中最重要的人之一&#xff0c;她不仅为婴儿提供营养物质和身体保护&#xff0c; 还为婴儿提供情感支持和安全感。母亲心理健康状态的不良状况&#xff0c;如抑郁、焦虑、 压力等&#xff0c;可能会对婴儿的认知、情…

华为测试开发秋招三面,两轮技术综合面试+HR,险过!

流程上是三轮面试&#xff0c;两轮的技术综合面试HR面试&#xff0c;先面前两轮&#xff0c;前两轮过了&#xff0c;再联系面试者HR面试&#xff0c;面试的岗位是测试岗&#xff0c;两轮面试在1个半小时左右。 面试时&#xff0c;对自己要有自信&#xff0c;对自己的简历也要吃…

flutter:Future、Stream、RxDart

Future 在Flutter中&#xff0c;Future是Dart语言中的一个类&#xff0c;用于表示异步操作的结果。与Future相关的的重要关键字包括async和await。 async&#xff1a;这个关键字用于在方法或函数声明前添加&#xff0c;以指示该方法为异步方法。在异步方法中&#xff0c;执行…

zsh中安装ros-<ros2-distro>-turtlebot3*失败 || 以humble为例

在zsh中尝试使用 sudo apt install ros-<ros2-distro>-turtlebot3* 安装turtlebot3相关仿真包失败&#xff0c;报错E: 无法定位软件包。 但是在bash中尝试使用同样的命令却可以安装。 原因是zsh中如果要使用通配符&#xff0c;那么一定要放在字符串里&#xff0c;以上…

冒泡排序【Java算法】

文章目录 1. 概念2. 思路3. 代码实现 1. 概念 比较前后相邻的两个数据&#xff0c;如果前面数据大于后面的数据&#xff0c;就将这两个数据互换。这样对数组的第0个数据到第 N - 1 个数据进行一次遍历后&#xff0c;最大的一个数据就 “沉” 到数组的第 N - 1 个位置。 N N - …

UI自动化测试之日志记录和单元测试

设置日志 很多公司要求自动化测试需要有日志记录。 记录程序运行时的状态和结果&#xff0c;方便排查问题。 实现步骤&#xff1a; ①在项目中创建config目录&#xff08;不用创建包&#xff09;&#xff0c;复制粘贴log.conf文件 ②在项目中创建logs目录&#xff0c;用于…

第三方材料检测实验室LIMS系统源码 lims源码

实验室LIMS系统采用国际规范的业务管理流程和严格的质量控制体系&#xff0c;对每个检测流程节点采用 “人、机、料、法、环、测”进行质量控制&#xff0c;可记录&#xff0c;可追溯。强大的数据查询和统计分析能力&#xff0c;提高工作效率&#xff1b;自动化地采集实验室原始…

轻量化YOLOv5改进 | 结合repghost结构冲参数化网络,实现轻量化和加速推理,

RepGhost: A Hardware-Efficient Ghost Module via Re-parameterization 论文总结本文改进repghost 核心代码测试参数量和计算量🔥🔥🔥 “引入RepGhostNet以加速CNN网络推理” “网络宽度的自定义调整:无缝嵌入YOLOv5” “通过结构重参数化优化网络性能” “实现高效和…

nexus迁移

数据和配置迁移 打包两个目录&#xff0c;配置nexus-2.13.0-01和数据sonatype-work 数据量大可以split分割之后迁移再合并 大概看下文件目录 [roottest nexus]# tree -L 3 . ├── nexus-2.13.0-01 │ ├── bin │ │ ├── jsw │ │ ├── nexus │ │ …

拥抱未来:2023年及以后十大DevOps工具的最终清单!

软件开发和 IT 运营的世界在不断发展&#xff0c;DevOps 已成为寻求敏捷性、效率和协作的组织的重要方法。随着我们进入 2023 年及以后&#xff0c;DevOps 格局将随着新工具的引入和现有工具的改进而不断发展。在本文中&#xff0c;我们列出了将在未来几年塑造行业的十大DevOps…

2023年08月IDE流行度最新排名

点击查看最新IDE流行度最新排名&#xff08;每月更新&#xff09; 2023年08月IDE流行度最新排名 顶级IDE排名是通过分析在谷歌上搜索IDE下载页面的频率而创建的 一个IDE被搜索的次数越多&#xff0c;这个IDE就被认为越受欢迎。原始数据来自谷歌Trends 如果您相信集体智慧&am…

如何克服看到别人优于自己而感到的焦虑和迷茫?

文章目录 每日一句正能量前言简述自己的感受怎么做如何调整自己的心态后记 每日一句正能量 行动是至于恐惧的良药&#xff0c;而犹豫、拖延&#xff0c;将不断滋养恐惧。 前言 虽然清楚知识需要靠时间沉淀&#xff0c;但在看到自己做不出来的题别人会做&#xff0c;自己写不出的…

2023华数杯数学建模A题2023华数杯A 题隔热材料的结构优化控制研究

问题1 问题1&#xff1a; 该问题需要建立一个数学模型来描绘织物整体热导率与单根纤维热导率之间的关系。这个模型需要考虑织物的结构&#xff08;如纤维的排列、空隙大小和分布等&#xff09;以及纤维和空隙中的空气对热传导的贡献。此外&#xff0c;我们需要根据织物的整体热…

网页版Java五子棋项目(一)websocket【服务器给用户端发信息】

网页版Java五子棋项目&#xff08;一&#xff09;websocket【服务器给用户端发信息】 一、为什么要用websocket二、websocket介绍原理解析 三、代码演示1. 创建后端api&#xff08;TestAPI&#xff09;新增知识点&#xff1a;extends TextWebSocketHandler重写各种方法 2. 建立…

LeetCode--剑指Offer75(2)

目录 题目描述&#xff1a;剑指 Offer 58 - II. 左旋转字符串&#xff08;简单&#xff09;题目接口解题思路1代码解题思路2代码 PS: 题目描述&#xff1a;剑指 Offer 58 - II. 左旋转字符串&#xff08;简单&#xff09; 字符串的左旋转操作是把字符串前面的若干个字符转移到…

Win11系统下FTP服务器搭建(用于Cadence 中心库服务器搭建)(上)

本文用于快速搭建一个FTP服务器 一、配置IIS Web服务器 使用快捷键【Win R】打开运行窗口&#xff0c;并输入optionalfeatures进入配置windows功能&#xff1b; 选择红框标识选项后&#xff0c;点击确定。 二、配置IIS web 站点 1.首先我们在本地创建一个ftp服务器的根目录…

【Pycharm2022.2.1】python编辑器最新版安装教程(包含2017-2022的所有版本win/mac/linux)

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 永久安装 Pycharm&#xff08;2017-2022的win/mac/linux所有版本&#xff09;/ IntelliJ IDEA也可以, 按照本文教程所写的&#xff0c;具体步骤跟着下面的图文教程一步一步来就行&#xff0c;一分钟即可搞定&#xff0c;过…