关于html:场景学习HTML入门

体验简介本场景云起实验室将提供一台配置了Windows Server 2019版本的ECS实例(云服务器)。 通过本教程的操作,您能够基于已有的环境疾速装置Visual Studio Code,并学习到HTML的基本知识,帮忙您理解各种罕用标签的意义以及根本用法。体验此场景后,能够把握的常识有: Visual Studio Code操作。HTML基本知识。 登录Window Server桌面资源创立胜利后界面显示loading(这是失常的) 登录Window Server桌面\1. Windows近程登录(在本人的电脑上): a. 按win+r键。 b. 在运行对话框中,输出mstsc,单击确定。 c. 在远程桌面连贯对话框中,单击暗藏选项,输出计算机和用户名,单击连贯。 配置阐明: 计算机:输出已创立的ECS实例的公网IP地址。您能够在云产品资源查问ECS公网地址。用户名:administrator。d. 在Windows平安核心对话框中,输出ECS实例的登录明码(在云产品资源获取ECS实例登陆密码),单击确定。 登录胜利界面如下。 \2. MAC近程登录:下载安装Microsoft Remote Desktop 10近程工具进行近程连贯,具体操作,请参见帮忙文档。 装置Visual Studio Code及配置\1. 关上浏览器并拜访Visual Studio Code官网下载链接,下载Windows版安装包。 \2. 将Visual Studio Code安装包粘贴到Windows近程机器的桌面下,并双击安装包。 \3. 在装置对话框中,单击确定。 \4. 在许可协定对话框中,抉择我批准此协定,单击下一步。 \5. 在抉择附加工作对话框中,选中创立桌面快捷方式和增加到PATH,单击下一步。 \6. 在筹备装置对话框中,单击装置。 \7. 期待装置实现后,勾选运行Visual Studio Code,单击实现。 \8. 在Visual Studio Code左侧导航栏中,单击,输出Preview on Web Server,抉择Preview on Web Server1.3.0版本后单击Install。 ...

May 27, 2022 · 5 min · jiezi

关于html:HTML标签-之-表格标签

一、表格的根本语法<table> <tr> <th>姓名</th> <th>性别</th> <th>年龄</th> </tr> <tr> <td>佩奇</td> <td>女</td> <td>5</td> </tr></table> 1、<table> </table> 是用于定义表格的标签。2、<tr> </tr> 是表格中的行,必须嵌套在 <table> </table> 标签中。3、<td> </td> 是表格中的单元格,td 是 table data 的缩写,意为单元格内容,它必须嵌套在 <tr> </tr> 标签中。单元格中能够放任何内容,文字、图片、链接都能够。4、<th> </th> 是表头单元格标签,th 是 table head 的缩写,意为表格头部,个别位于表格第一行或第一列,文本内容会加粗、居中显示。 二、表格的根本属性实际上不罕用,个别会通过 CSS 来设置。 属性名值阐明alignleft、center、right表格绝对四周元素的对齐形式border1 或 ""表格是否有边框,默认为"",示意没有边框cellpadding像素值规定单元格边缘与内容之间的间隔,默认 1 像素cellspacing像素值规定单元格之间的空白,默认 2 像素width像素值或百分比规定表格的宽度<table border="1" cellpadding="16" cellspacing="0"> //属性要写在 table 标签 <tr> <th>姓名</th> <th>性别</th> <th>年龄</th> </tr> <tr> <td>佩奇</td> <td>女</td> <td>5</td> </tr></table> 三、表格构造标签在表格标签中,别离用 <thead> 标签作为表格的头部区域、<tbody> 标签作为表格的主体区域,这样能够清晰的分清表格构造。 <thead> 外部必须有 <tr> 标签。 <table> <thead> <tr> <th>姓名</th> <th>性别</th> <th>年龄</th> </tr> </thead> <tbody> <tr> <td>佩奇</td> <td>女</td> <td>5</td> </tr> </tbody></table>四、合并单元格1、合并单元格的形式跨行合并:rowspan="合并单元格的个数"跨列合并:colspan="合并单元格的个数" ...

May 27, 2022 · 1 min · jiezi

关于html:HTML语义化一图以蔽之

HTML语义化,一图以蔽之图片来源于网络

May 25, 2022 · 1 min · jiezi

关于html:wallysDR8074AHK01IPQ8074A-4x4-24G-8x8-5G-80211ax

IPQ6000/IPQ6018/IPQ6010/IPQ4019/IPQ4029/IPQ8072/IPQ8074/QCN9074 BY:Wallys Communications (Suzhou ) Co., LTDEMAIL:sales3@wallystech.com wifi6 router/network cardwifi 6EWiFi 6802.11ax/802.11acwireless solutionsDipole/ panel //Dual Polarization Enclosure /Smart /omni /AntennaWireless Access Point/Point to Point / https://www.wallystech.com/Ro... Features■ Qualcomm Atheros IPQ8074A AR Quad Core CPU ■ On-board 5GHz radio, up to 4804Mbps physical data rate 32MB NOR Flash, 256MB NAND Flash ■ On-board 2.4GHz radio, up to 1147Mbps physical data rate ■ Support 11ax TX Beamforming ■ Support 11ac/ax MU-MIMO DL and UL ...

May 10, 2022 · 1 min · jiezi

关于html:html中input的accept总结

1.开发环境 vue22.电脑系统 windows11专业版3.在开发的过程中,咱们常常会应用input,咱们有时候须要设置input的accept属性规定通过文件上传来提交的文件的类型。上面我来做下总结。4.accept值: 扩展名值.3gppaudio/3gpp, video/3gpp.ac3audio/ac3.asfallpication/vnd.ms-asf.auaudio/basic.csstext/css.csvtext/csv.docapplication/msword.dotapplication/msword.dtdapplication/xml-dtd.dwgimage/vnd.dwg.dxfimage/vnd.dxf.gifimage/gif.htmtext/html.htmltext/html.jp2image/jp2.jpeimage/jpeg.jpegimage/jpeg.jpgimage/jpeg.jstext/javascript, application/javascript.jsonapplication/json.mp2audio/mpeg, video/mpeg.mp3audio/mpeg.mp4audio/mp4, video/mp4.mpegvideo/mpeg.mpgvideo/mpeg.mppapplication/vnd.ms-project.oggapplication/ogg, audio/ogg.pdfapplication/pdf.pngimage/png.potapplication/vnd.ms-powerpoint.ppsapplication/vnd.ms-powerpoint.pptapplication/vnd.ms-powerpoint.rtfapplication/rtf, text/rtf.svfimage/vnd.svf.tifimage/tiff.tiffimage/tiff.txttext/plain.wdbapplication/vnd.ms-works.wpsapplication/vnd.ms-works.xhtmlapplication/xhtml+xml.xlcapplication/vnd.ms-excel.xlmapplication/vnd.ms-excel.xlsapplication/vnd.ms-excel.xlsxapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet.xltapplication/vnd.ms-excel.xlwapplication/vnd.ms-excel.xmltext/xml, application/xml.zipaplication/zip5.应用input怎么动静设置accept呢? // template代码<form class="fileUpdateForm"> <input type="file" name="uploadFile" class="filesrc" @change="changeFile"></form>//办法代码this.$el.querySelector('.filesrc').accept = this.localUploadOptions.acceptType;this.$el.querySelector('.filesrc').click();6.本期的分享到了这里就完结啦,心愿对你有所帮忙,让咱们一起致力走向巅峰。

May 5, 2022 · 1 min · jiezi

关于html:使用-Lightly-在线格式化-HTML

编程我的项目文件中往往含有大量的文本,不同的程序员兴许也会有不同的编程习惯。在进行编程合作时,凌乱的代码不仅拉低的工作效率,看久了也容易影响情绪,而格式化本人的代码能够大大提高编程效率,前期批改和 debug 都会轻松不少。 轻量且功能强大的集成开发工具 Lightly 自带在线格式化性能,程序员在编码过程中,只需右键点选即可轻松地格式化 HTML 代码。 应用 Lightly 进行编程。 无需全选,右键抉择“格式化代码”或输出快捷键 Shift + Alt + F 即可主动格式化。 轻松 get 参差的代码。 不仅如此,Lightly 的在线格式化性能还能够格式化 JavaScript、Python 等代码,让程序员能更专一于写代码,也让编程变得更轻松。

May 4, 2022 · 1 min · jiezi

关于html:Python请求拉取网页上的内容

首先领有Python环境pip install requests装置Python罕用的requests依赖库通过申请获取所需页面前端代码或者接口后果 page = requests.get(url="https://facebug555.com").textprint(page)result = requests.get(url="https://facebug555.com").json()print(result)通过requests发送文件 file_data = {'file': ('1.txt', 'xxxxxxx')}upload_result = requests.post( url='https://facebug555.com', files=file_data).json()print(upload_result)

April 28, 2022 · 1 min · jiezi

关于html:圣杯布局与双飞翼布局

圣杯布局与双飞翼布局圣杯布局和双飞翼布局都是为了实现一个两侧宽度固定,两头宽度自适应的三栏布局。(两头先加载渲染)圣杯布局-Example<!DOCTYPE html><html><head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="referrer" content="origin" /> <meta property="og:description" content="圣杯布局" /> <meta http-equiv="Cache-Control" content="no-transform" /> <meta http-equiv="Cache-Control" content="no-siteapp" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <title>圣杯布局</title></head><style type="text/css"> * { padding: 0; margin: 0; } html, body { padding: 0; margin: 0; } body { min-width: 550px; } * { margin: 0; padding: 0; } .header, .footer { background: gray; width: 100%; } .footer { clear: both; } .main { height: 200px; padding: 0 150px 0 200px; background: greenyellow; *zoom: 1; } .left, .center, .right { float: left; } .center { width: 100%; height: 200px; background: red; } .left { width: 200px; height: 200px; background: yellow; margin-left: -100%; position: relative; left: -200px; } .right { width: 150px; height: 200px; background: gainsboro; margin-left: -150px; position: relative; left: 150px; }</style><body> <div class="header"> 头部 </div> <div class="main"> <div class="center">两头两头两头两头两头两头两头后</div> <div class="left">右边</div> <div class="right">左边</div> </div> <div class="footer"> 底部 </div></body></html>双飞翼布局-Example<!DOCTYPE html><html><head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="referrer" content="origin" /> <meta property="og:description" content="双飞翼布局" /> <meta http-equiv="Cache-Control" content="no-transform" /> <meta http-equiv="Cache-Control" content="no-siteapp" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <title>双飞翼布局</title></head><style type="text/css"> * { margin: 0; padding: 0; } .main>div { float: left; } .left { width: 200px; background: red; margin-left: -100%; } .right { width: 200px; background: blue; margin-left: -200px; } .middle { width: 100%; background: yellow; } .content { margin-left: 200px; margin-right: 200px; }</style><body> <div class="main"> <div class="middle"> <div class="content"> 两头 </div> </div> <div class="left"> 右边 </div> <div class="right"> 左边 </div> </div></body></html>长处兼容性好,兼容若有支流浏览器,包含万恶的IE6能够实现次要内容的优先加载额定知识点其实三列布局的形式还有很多 ,但也有各自的毛病1.如果左右两列用position: absolute定位布局做外层设计须要有个蕴含块设置(否则是绝对浏览器可视区域)这样会层级,页面管制绝对麻烦2.用浮动布局的话, 中间层要做到先加载实现不了3.flex布局低版本浏览器有些还不反对Thinking in JackDan

April 28, 2022 · 2 min · jiezi

关于html:DR6018SV02wifi6QualcommIPQ6010QCN9074wificard80211AX

IPQ6000/IPQ6018/IPQ6010/IPQ4019/IPQ4029/IPQ8072/IPQ8074/QCN9074 BY:Wallys Communications (Suzhou ) Co., LTDEMAIL:sales3@wallystech.com wifi6 router/network cardwifi 6EWiFi 6802.11ax/802.11acwireless solutionsDipole/ panel //Dual Polarization Enclosure /Smart /omni /AntennaWireless Access Point/Point to Point / https://www.wallystech.com/Ro...

April 27, 2022 · 1 min · jiezi

关于html:Akismet插件教程WordPress阻止过滤垃圾邮件插件

 Akismet 插件是一个基于云的应用程序,能够过滤掉基于WordPress建站的网站上的垃圾邮件。该插件已取得超过 500 万次下载,本文,知道博客为你介绍Akismet插件教程WordPress阻止过滤垃圾邮件插件。 什么是Akismet? Akismet 插件是WordPress的垃圾评论过滤服务,并应用其算法过滤掉垃圾邮件。该算法从其谬误和其余网站采取的口头中学习。当多个网站开始将外观类似的内容报告为垃圾邮件时,Akismet 将学会在将来将此类内容辨认为垃圾邮件。 Akismet插件教程WordPress阻止过滤垃圾邮件插件 Akismet 提供了几个突出的性能,例如: 浏览您的博客、评论和分割表格。在评论注释中显示URL以辨认误导性链接。为每条评论设置状态历史记录,以帮忙确定它是否被Akismet或版主革除。容许版主配置垃圾邮件参数,例如关键字和链接。抛弃性能可阻止重要的垃圾邮件,节俭磁盘空间并减速您的WordPress网站 举荐:WordPress缓存插件WP Fastest Cache插件应用教程 为什么你应该应用Akismet? 在风行的WordPress网站上,垃圾评论的数量可能高达85%。这意味着在每100条评论中,只有15条是失常的。除此之外,评论审核是一项耗时的工作。您将不得不破费有数小时手动过滤垃圾评论。 这就是Akismet能够为您节省时间的中央。WordPress插件会在垃圾评论以待解决状态进入您的审核队列之前主动捕捉垃圾评论。当一条评论被Akismet标记为垃圾邮件时,它不会像其余评论那样显示期待审核告诉,相同,会主动将它们挪动到垃圾邮件文件夹。 举荐:如何设置/禁用WordPress网站的评论性能 如何设置Akismet反垃圾邮件插件 当初,让咱们看看如何在您的网站上配置Akismet。 Akismet Anti-Spam垃圾评论防护插件作为WordPress装置的默认应用程序提供。然而,插件在激活时须要API密钥。以下局部将疏导您实现设置Akismet并使其在您的站点上运行的简略办法。 1、装置并激活Akismet反垃圾邮件插件 如果您的WordPress站点上尚未装置该插件,那么转到WordPress仪表板,点击“ 插件 “->” 装置插件 ”,在搜寻栏中输出“Akismet ”, 装置激活Akismet反垃圾邮件插件 单击立刻装置按钮开始装置插件。该过程实现后,点击激活。 激活后,该软件将要求您在提供的字段中填写API密钥。在提供的字段中填写Akismet的API密钥,放弃此窗口关上并依照以下步骤获取AkismetAnti-Spam插件的API密钥。 2、设置Akismet账号 插件启用之后,能够看到如上图画面, Akismet插件教程WordPress阻止过滤垃圾邮件插件 点击「设定Akismet 帐号」的按钮,会跳转到另外一个页面进行设定。 设置Akismet账号3、抉择Akismet订阅打算 抉择订阅打算。有大型项目或企业的付费订阅和供集体应用的收费版本。 抉择Akismet订阅打算 须要填写一些根本信息,记得先把价位拉到最左方,这样价格才会是0 元,确认没问题后,点击最下方的「CONTINUE WITH PERSONAL SUBSCRIPTION」按钮。 填写Akismet信息Akismet插件教程WordPress阻止过滤垃圾邮件插件 之后把邮件中的认证码填入。 填写验证码 举荐:如何阻止WordPress垃圾评论 4、获取Akismet API Key 在上一步骤实现后,Akismet将向您注册的电子邮件地址发送验证码。查看您的电子邮件并返回您的帐户页面。 5、增加Akismet API Key 返回WordPress仪表板上的激活页面。您还能够转到插件菜单,找到Akismet插件,输出API秘钥,链接即可。 增加Akismet-API-Key Akismet 反垃圾邮件现已胜利增加到您的站点。该插件将在激活后立刻通过您的评论和表单主动开始扫描垃圾邮件。 还能够调整 Akismet 中的设置。例如,该插件可让您在每个评论作者旁边显示已批准评论的数量,查看垃圾评论或主动抛弃它们,并在评论表单下显示隐衷申明。 ...

April 21, 2022 · 1 min · jiezi

关于html:获取节点的特殊方式

<input type="text" v-model="userEmail" name="regEmail" class="input-item email" placeholder="<?= lang('register_enter_address') ?>"/><input type="number" v-model="userPhone" name="regPhone" class="input-item phone" placeholder="<?= lang('register_enter_number') ?>"/>var phone = $("input[name='regPhone']").val() || "";var email = $("input[name='regEmail']").val() || "";

April 19, 2022 · 1 min · jiezi

关于html:Lightly新一代的-PHP-IDE

PHP 的全称为 Hypertext Preprocessor,即超文本预处理器。它是一种宽泛用于 Web 我的项目开发的计算机脚本语言,以嵌入 HTML 中应用。 PHP 最后于 1995 年由勒多夫(Rasmus Lerdorf)开发,用于大多数的网络服务器和操作系统上。依据 W3Techs 的报告,截至2021年9月:“有78.9%的网站应用PHP。” 大多数人对传统 PHP 编辑器(IDE)的印象往往与不太智能、卡顿相干,甚至有些程序员会感觉编辑器的装置与配置过程麻烦,而功能强大的 PhpStorm 却因为软件占用大而导致电脑臃肿、累赘。若弃而抉择内存占用较少的 Sublime 等轻量文本编辑器,尽管能够较自在地进行自定义,但装置插件过程也同样繁琐及充斥试错老本,同时还仍旧面临装置插件后软件变得臃肿的问题。 Lightly:新一代的 PHP IDE在 Lightly 中,咱们尝试整合了程序员搭档所面临的问题,致力打造出更合乎程序员期待的新一代 PHP IDE。 在 TeamCode 旗下的 Lightly PHP IDE,咱们为用户装备了一系列投合新时代程序员的特色与性能: 云端实时保留。Lightly PHP IDE 最大的亮点是通过云端技术,让用户实现在不同操作系统和浏览器中编写代码并运行 PHP 我的项目。与个别在线编辑器不同,Lightly 会将用户的代码实时保留在云端,无需任何操作即可从任意浏览器或客户端上登录账号并持续实现工作。自动检测及配置环境。作为程序员的一分子,Lightly 团队深知切换编辑器及设施时,繁琐的环境配置对许多人而言是一项难题。咱们在这一步骤上开发了自动检测和配置性能,缩小环境配置为程序员们带来的困扰,同时也为初尝编程的老手程序员们护航。欠缺的语法高亮、智能提醒、主动补全。与许多支流的编辑器一样,轻量且功能强大的 Lightly 装备齐全的语法高亮、智能提醒、主动补全性能,将来还将退出自定义模块,让 Lightly 变成你专属的编辑器。一键分享代码,在线多人合作。无论你是编程区博主或只是想把代码分享给共事,Lightly 的分享性能都能满足你的需要。只须要生成并复制链接,即可无忧分享你的代码。你甚至还能够通过内置的多人合作性能,邀请敌人退出你的我的项目,共同完成编写工作!简洁的操作页面。极简主义始终是编程的大趋势,Lightly 简洁的图形化操作界面能让用户专一于编写代码,进一步增进编程效率。如果你对编辑器还有更多的需要与期待,无妨通知咱们的团队,让咱们与你携手打造出更精彩的编程环境。 TeamCode 官网 | www.teamcode.comLightly 官网 | lightly.teamcode.com分割咱们 | lightly@teamcode.com

April 19, 2022 · 1 min · jiezi

关于html:理解offsetHeightscrollHeightclientHeight与js懒加载

### clientXXX(clientWidth/clientHeight) clientWidth/clientHeight 【内容宽高+内边距】(content+padding)### offsetXXX(offsetWidth/offsetHeight/offsetTop) offsetWidth/offsetHeight【内容宽高+内边距+外边距+滚动条】(content+padding+border+margin)### scrollXXX(scrollWidth/scrollHeight/scrollTop) scrollWidth/scrollHeight 【内容宽高】蕴含超出不可见的滚动局部### xxxTop offsetTop 是以后元素顶部间隔最近父元素顶部的间隔,offsetTop大小固定,和有没有滚动条没有关系(如 有10张高度为100px,无margin,无border 的图片,第1张图片offsetTop为0,第二张图片offsetTop为100,第二张图片offsetTop为200...) scrollTop 在有滚动条的状况下,为元素可视区域间隔元素顶部的像素,也就是曾经滚动了多少间隔(**每张图片的scrollTop都是一样的,会随着滚动条高度变动**) js懒加载 <body> <img src="./1.png" data-src="./1.png" class="img-content"/> <img src="./2.png" data-src="2.png" class="img-content"/> <img src="./3.png" data-src="3.png" class="img-content"/> <img src="./4.png" data-src="4.png" class="img-content"/> <img src="./5.png" data-src="5.png" class="img-content"/> <img src="./6.png" data-src="6.png" class="img-content"/> <img src="./7.png" data-src="7.png" class="img-content"/> <img src="./8.png" data-src="8.png" class="img-content"/> <img src="./9.png" data-src="9.png" class="img-content"/> <img src="./10.png" data-src="10.png"class="img-content"/></body><script> let imgs = document.getElementsByClassName("img-content"); //获取要懒加载的元素 let clientHeight = document.documentElement.clientHeight//屏幕高度(固定不变) function lazyLoad(imgs){ let scrollTop = document.documentElement.scrollTop || document.body.scrollTop//随滚动条高度变动 for(let i=0;i<imgs.length;i++){ //imgs[i].offsetTop 每张图片的offsetTop固定不变 if(scrollTop + clientHeight >imgs[i].offsetTop ){ imgs[i].src = imgs[i].getAttribute('data-src') } } } window.onscroll = function(){ //屏幕滚动的时候触发 lazyLoad(imgs) }</script>参考文章https://www.cnblogs.com/enhah...https://juejin.cn/post/684490... ...

April 12, 2022 · 1 min · jiezi

关于html:React中的renderProps和childrenProps

一:废话不多说,间接开讲: 这里有三个组件,我想让B组件内展现C组件,也就是说我想让B组件成为C组件的父亲。(这不是废话吗)我这样写不就完事了吗? 然而理论工作当中,咱们常常会临时不太确定B,C组件的关系,等到最初的时候再决定,这时候咱们假如B组件最初必定是C组件的父组件。 其实React中还有第二种让C组件成为B组件子元素的办法。 你如果之前学过提前学过一些知识点话,你对这个必定不生疏,也就是B标签的标签体内容是C标签。 然而如果你单纯这样写的话,很遗憾,页面上是不会显示C标签的 你可能会奇怪,不应该啊,这咋回事啊。 留神重点来了: 这时候你把B的爸爸疏忽了吧?A标签说:你小子在我屁股底下蹦跶不论我了是吧?这时候你其实是在A标签传递给B标签的props的children属性中写内容,你爸爸给你货色,你不收也没方法展现啊,对吧? ok,页面当初失常显示了 二:renderprops 当初展现是展现了,然而,客户需要忽然变了,想让你的B标签想给C标签一个属性,叫做name,值为"方"让它在C标签中展现,这咋办呢? 你可能会想,这不就是简简单单的父亲向儿子传递数据吗?props不就完事了吗?你于是乐不可支的关上代码,而后找到B标签 奇怪,我的C标签呢?哦,对 在A标签里,我得这样写! 当你刚刚敲下name的时候就发现了,state是B标签的,A标签压根就没有!! 这怎么办呢? 没方法,你只能批改你的代码为这样,给B一个属性,属性值为函数,并且返回值为C标签。而后咋办?在B标签里调呗! 调用的时候,把name值放进参数里,而后在返回的C标签内间接应用,如下图: 最初一步别忘了,你C标签还没接管呢! 页面成果,胜利显示~ 非得叫render吗?不须要,你能够轻易起名字,只不过是程序员之间的一种约定,当你写render的时候,他人看你的代码会马上晓得你行代码的意思。就好比for循环里写i=0,那样相互约定俗称的规矩。补充一下拓展常识 B组件里加文字,也相当于props,须要你在B组件外部接管才能够应用!

April 7, 2022 · 1 min · jiezi

关于html:地址栏里输入一个网址敲下回车会发生什么

前言:本文中不会牵扯太深的原理内容,只会让你理解一下大略流程,待你当前真正开始学习相干常识的时候,不至于一头雾水。如果你是一个初学者,那么本文会对你有启蒙作用,如果你是一个心愿深刻理解原理的阅读者,那么可能本文不适宜你。 一.我输出了一个网址www.baidu.com当你输出网址的时候浏览器并不意识这一段信息。那么把你输出的地址,解析成浏览器辨认的地址的这一过程就叫做DNS解析。D:domain 畛域 ,N:name ,S:system 域名零碎如果你开始理解到这一步的话,我置信你对于 对象这个概念应该很相熟了。这个零碎对于初学者来说,你也能够把它当作一个对象来对待。也是key域名 和value理论ip地址 的映射关系。 DNS {"www.baidlu"="1xx.x.x.x","localhost"="126.0.0.1"...} 这个对象寄存着互联网所有的 域名和理论IP地址的映射关系。为什么要有域名就好比你手机为什么要有通讯录一样,你能够间接把所有电话号码都记下,然而没必要也不不便,比方你给10086起名为女朋友,因为只有10086才会在节假日给你祝愿。你也能够间接通过女朋友这个联系人来给10086打电话。DNS零碎存在的意义也是这样的。 二.TCP的三次握手传输控制协议(英语:Transmission Control Protocol你须要首先明确的一点是DNS解析当前仅靠拿到手的实在ip地址是干不了任何事的。 第一次握手:首先浏览器会发送一个SYN包给服务器,SYN的解释节选自百度百科,你临时不须要深刻理解这个名词到底什么意思。它是用来确定服务器是否在吗(脑子第一工夫想进去这个词,并且感觉还行!)这是否像极了你追你女朋友时第一次聊天,第一句话“在吗?”。 第二次握手 :而后如果服务器在!那么服务器会发送 SYN和ACK包给浏览器。也就是你女朋友回复你了,而后你们才能够有下一步的话题。ACK代表的意思更像聊天里的:我在!请你持续说 第三次握手 :这次握手是浏览器给服务端说的话,浏览器端:ok我也在。 到这里你仅仅只是用到了 baidu.com你输出到地址栏里的这几个代码。 到这里你要晓得,浏览器是所求数据的那一方,浏览器是给予你数据的一方,你当初仅仅是晓得了,你所求服务器的实在地址(DNS)和建设连贯并且确定建设链接胜利(三次握手)。接下来才是咱们的重量级后面代码http的showtime。 http:hyper text transfer protocol超文本传输协定。 它的次要作用就是用来约定客户端和服务器端沟通的形式,来传输数据。你能够形象的这样认为。A和B在进行一项交易,A说咱们都用中文交换,B说:咱都用英语交换。后果谁都不肯屈从谁,这生意没法做。这时候进去一个神秘组织规定,这项交易咱们对立规定用法语交换,谁不恪守谁退出。所以你也没必要纠结为什么,http只是规定而已,它并没有具体的性能。 即然你是所求(request)的一方,那么你就会有你想要货色的具体内容。这个过程和你去超市买货色一样,你确定了超市的实在地址,并且确定了超市在营业期间。ok,接下来就是你确定本人具体要买哪些货色的时候了。http协定有四局部组成,申请行,申请头,空行,申请数据。(具体作用本文不探讨,请自行深刻理解)当服务器收到你的申请后,会给你一个回应response。也有四局部组成,状态行,响应头部,空行,相应数据 接下来浏览器就会开始解析相应数据,html和css和js的文件。 至此,大略流程就是这些,这期间还有很多常识须要你深刻理解。文本只是给你一个概念。

April 5, 2022 · 1 min · jiezi

关于html:js封装html事件绑定通用类

因为浏览器中有些品牌及型号有非凡的存在,有些办法不反对,这种事件就很让人头疼。比方在测试的时候,在谷歌浏览器好使,在IE下就不好使caniuse网站中就能查到api在浏览器反对状况addEventListener在IE6-8中就不反对stopPropagation在IE6-8中也不反对preventDefault有些浏览器反对状况还存在疑难这种状况下有必要封装一个通用类及公共办法来反对此类事件。addEventListener和removeEventListener须要独自封装成一个类,实现比较简单,就是对该元素是否存在办法进行判断,如果存在就挂载,切实没有就手动挂载一个办法 class BomEvent { constructor(element) { this.element = element; } addEvent(type, handle) { if (this.element.addEventListener) { //事件类型、须要执行的函数、是否捕获 this.element.addEventListener(type, handle, false); } else if (this.element.attachEvent) { this.element.attachEvent("on" + type, function () { handle.call(element); }); } else { this.element["on" + type] = handle; } } removeEvent(type, handle) { if (this.element.removeEventListener) { this.element.removeEventListener(type, handle, false); } else if (this.element.detachEvent) { this.element.detachEvent("on" + type, handle); } else { this.element["on" + type] = null; } }}// 阻止事件 (次要是事件冒泡,因为IE不反对事件捕捉)function stopPropagation(event) { if (event.stopPropagation) { event.stopPropagation(); // 规范w3c } else { event.cancelBubble = true; // IE }}// 勾销事件的默认行为function preventDefault(event) { if (event.preventDefault) { event.preventDefault(); // 规范w3c } else { event.returnValue = false; // IE }}

April 3, 2022 · 1 min · jiezi

关于html:html的事件的捕获和冒泡

element.addEventListener(event, function, useCapture)addEventListener有三个参数,大多数人个别只用到了两个参数 第一个参数 event指定事件名。第二个参数 function指定要事件触发时执行的函数。第三个参数useCapture,true——事件句柄在捕捉阶段执行;false——默认值。事件句柄在冒泡阶段执行 事件捕捉过程和冒泡过程如上图所示,传递形式别离是由上而下和由下而上。依据图示,能够写个demo来验证这个问题,addEventListener第三个参数设置为truelevel-1为div标签,level-2为p标签,level-3为span标签绑定事件,测试代码如下 const levelOne = document.getElementById("levelOne");const levelTwo = document.getElementById("levelTwo");const levelThree = document.getElementById("levelThree");window.addEventListener( "click", function (e) { console.log("window 捕捉", e.target.nodeName, e.currentTarget.nodeName); }, true);levelOne.addEventListener( "click", function (e) { console.log("levelOne 捕捉", e.target.nodeName, e.currentTarget.nodeName); }, true);levelTwo.addEventListener( "click", function (e) { console.log("levelTwo 捕捉", e.target.nodeName, e.currentTarget.nodeName); }, true);levelThree.addEventListener( "click", function (e) { console.log("levelThree 捕捉", e.target.nodeName, e.currentTarget.nodeName); }, true);其中e.target.nodeName指以后点击的元素,e.currentTarget.nodeName为绑定监听事件的元素 console.log("levelThree 捕捉", e.target.nodeName, e.currentTarget.nodeName);当点击最里层SPAN标签时,打印如下最先捕捉的是window,输入 e.target.nodeName为SPAN,window没有标签属性,e.currentTarget.nodeName为undefined上面levelOne到levelThree顺次捕捉,e.target.nodeName输入都为点击的SPAN标签,为大小,e.currentTarget.nodeName为绑定监听事件的元素由此可见,捕捉阶段从上往下传递 冒泡事件代码批改一下,第三个参数改为false。当点击最内层SPAN标签时,打印程序如下当点击levelTwo时,这时最内层的SPAN标签没有捕捉到冒泡事件。 stopPropagationstopPropagation() 办法避免调用雷同事件的流传。当有需要,心愿事件进行流传或有额定操作时,能够在事件捕捉阶段进行拦挡,比方点击最内层span标签时,如果我在levelOne就对事件进行了拦挡,事件将不会持续乡下传递 levelOne.addEventListener( "click", function (e) { e.stopPropagation() console.log("levelOne 捕捉", e.target.nodeName, e.currentTarget.nodeName); }, true);打印如下 ...

April 3, 2022 · 1 min · jiezi

关于html:HTML

中题目

April 1, 2022 · 1 min · jiezi

关于html:使用HTMLform表单操作腾讯云DNS控制台

        在应用中常常须要批改DNS记录,或者查问、删除操作。每次都得登录腾讯云控制台,腾讯云比拟鸡肋的一点就是须要进行微信扫码登录,每次操作太不不便。         能够应用api接口进行操作腾讯云上的产品。所以应用HTML写了一个前端页面,临时没有丑化,目前只有根底性能。 前端代码如下,同时能够拜访:http://dns.oiox.cn/ 应用 <!-- * @Author: 陈步云 * @Date: 2022-01-07 16:52:23 * @LastEditTime: 2022-03-29 15:09:56 * @LastEditors: Please set LastEditors * @Description: 关上koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @FilePath: /html/index.nginx-debian.html--><!DOCTYPE html><html><head><title>Welcome to chenby!</title><meta charset="UTF-8"><!-- <script src="http://code.jquery.com/jquery-3.6.0.min.js"></script><script src="http://oss.maxcdn.com/jquery.form/3.50/jquery.form.min.js"></script> --><style> body { width: 50em; margin: auto; font-family: Tahoma, Verdana, Arial, sans-serif; } h1{ text-align:center } button{ display:block; margin:0 auto }</style></head><body> <h1>腾讯云DNS记录控制台</h1> <h2>查问记录</h2> <form action="https://dnsapi.cn/Record.List" method="POST" > <div> * 腾讯云token <input name="login_token" type="text"> <br> <br>「去控制台创立 https://console.dnspod.cn/account/token/token <br> 比方 ID 为:13490,ToKen为:6b5976c68aba5b14a0558b77c17c3932。<br> 即残缺的 Token 为:13490,6b5976c68aba5b14a0558b77c17c3932 。」 <br> <br> </div> <div> 返回类型 <input name="format" type="text" value="json">「默认json」<br><br> </div> <div> * 操作域名 <input name="domain" type="text">「如 oiox.cn」<br><br> </div> <div> 子域名 <input name="sub_domain" type="text">「www」<br><br> </div> <div> <button type="submit" value="提交">提交</button> </div> </form> <h2>新增记录</h2> <form action="https://dnsapi.cn/Record.Create" method="POST"> <div> * 腾讯云token <input name="login_token" type="text"> <br> <br>「去控制台创立 https://console.dnspod.cn/account/token/token <br> 比方 ID 为:13490,ToKen为:6b5976c68aba5b14a0558b77c17c3932。<br> 即残缺的 Token 为:13490,6b5976c68aba5b14a0558b77c17c3932 。」 <br> <br> </div> <div> 返回类型 <input name="format" type="text" value="json"> 「默认json」<br><br> </div> <div> * 操作域名 <input name="domain" type="text"> 「如 oiox.cn」<br><br> </div> <div> * 记录类型: <select name="record_type" type="text"> <option value="A">A</option> <option value="AAAA">AAAA</option> <option value="SPF">SPF</option> <option value="CAA">CAA</option> <option value="CNAME">CNAME</option> <option value="MX">MX</option> <option value="TXT">TXT</option> </select> <br> <br> </div> <div> * 主机记录 <input name="sub_domain" type="text"> 「如 www 」<br><br> </div> <div> 解析线路: <select name="record_line" type="text"> <option value="默认">默认</option> <option value="联通">联通</option> <option value="挪动">挪动</option> <option value="电信">电信</option> <option value="铁通">铁通</option> <option value="境内">境内</option> <option value="境外">境外</option> </select> <br> <br> </div> <div> * 记录值 <input name="value" type="text"> <br>「如 IPv6:2620:119:35::35 IPv4:8.8.8.8, CNAME: cname.dnspod.com., MX: mail.dnspod.com. 等等」<br><br> </div> </div> <div> <button type="submit" value="提交">提交</button> </div> </form> <h2>批改记录</h2> <form action="https://dnsapi.cn/Record.Modify" method="POST"> <div> * 腾讯云token <input name="login_token" type="text"> <br> <br>「去控制台创立 https://console.dnspod.cn/account/token/token <br> 比方 ID 为:13490,ToKen为:6b5976c68aba5b14a0558b77c17c3932。<br> 即残缺的 Token 为:13490,6b5976c68aba5b14a0558b77c17c3932 。」 <br> <br> </div> <div> 返回类型 <input name="format" type="text" value="json"> 「默认json」<br><br> </div> <div> * 操作域名 <input name="domain" type="text"> 「如 oiox.cn」<br><br> </div> <div> * 记录ID <input name="record_id" type="text"> 「先应用查问性能查问到record_id」<br><br> </div> <div> * 记录类型: <select name="record_type" type="text"> <option value="A">A</option> <option value="AAAA">AAAA</option> <option value="SPF">SPF</option> <option value="CAA">CAA</option> <option value="CNAME">CNAME</option> <option value="MX">MX</option> <option value="TXT">TXT</option> </select> <br> <br> </div> <div> * 主机记录 <input name="sub_domain" type="text"> 「如 www 」<br><br> </div> <div> 解析线路: <select name="record_line" type="text"> <option value="默认">默认</option> <option value="联通">联通</option> <option value="挪动">挪动</option> <option value="电信">电信</option> <option value="铁通">铁通</option> <option value="境内">境内</option> <option value="境外">境外</option> </select> <br> <br> </div> <div> * 批改记录值 <input name="value" type="text"> <br>「如 IPv6:2620:119:35::35 IPv4:8.8.8.8, CNAME: cname.dnspod.com., MX: mail.dnspod.com. 等等」<br><br> </div> </div> <div> <button type="submit" value="提交">提交</button> </div> </form> <h2>删除记录</h2> <form action="https://dnsapi.cn/Record.Remove" method="POST"> <div> * 腾讯云token <input name="login_token" type="text"> <br> <br>「去控制台创立 https://console.dnspod.cn/account/token/token <br> 比方 ID 为:13490,ToKen为:6b5976c68aba5b14a0558b77c17c3932。<br> 即残缺的 Token 为:13490,6b5976c68aba5b14a0558b77c17c3932 。」 <br> <br> </div> <div> 返回类型 <input name="format" type="text" value="json"> 「默认json」<br><br> </div> <div> * 操作域名 <input name="domain" type="text"> 「如 oiox.cn」<br><br> </div> <div> * 记录ID <input name="record_id" type="text"> 「先应用查问性能查问到record_id」<br><br> </div> <div> <button type="submit" value="提交">提交</button> </div> </form></body> </html> ...

March 29, 2022 · 3 min · jiezi

关于html:小程序完成后的自我总结一

小程序中尺寸的设置rpx的应用多于px的应用因为小程序的应用是在不同机型的手机上进行的,所以这个时候就不能应用固定大下的px单位,而是要应用具备响应式的rpx单位了。 而rpx与px的大小换算就是个问题了,通常状况下,咱们是在iPhone6的机型下进行程序的编辑,规定屏幕宽度为750px,譬如iphone6,屏幕宽度为375px,共有750个物理像素,则1rpx = 0.5px。其余机型的尺寸也是如此进行的。 设施rpx换算px:屏幕宽度/750,px换算成rpx:750/屏幕宽度; flex弹性布局的应用在小程序的编辑过程中,弹性布局是必不可少的,它能够解决不少问题。 在应用弹性布局之前,首先要指明是弹性布局:display:flex。 几个罕用的css弹性布局设置: swiper轮播图的高度异样问题当我在应用小程序所进步的swiper组件时,发现swiper的高度与它当中的image的高度是不统一的,这就导致了一个不好的景象,那就是轮播图的进度圆点呈现在了轮播图的上面,大大的升高了应用好感。 对此也有着所对应的解决办法,咱们能够动静的设置轮播的高度,而不是让image天然的去将其撑开。 这个时候就须要利用到内联款式了,首先咱们能够先去获取轮播图当中图片的高度,咱们能够利用小程序当中给咱们提供的api, wx.createSelectorQuery()会返回了一个对象实例,更多内容能够去小程序的开发文档进行查问。 这个时候咱们就会获取到图片的高度,而后就须要给swiper轮播图进行设置高度了: <swiper style="{{height: imageHeight+'px'}}">... </swiper>

March 27, 2022 · 1 min · jiezi

关于html:对搭建编程HTML5的一些技术认识

HTML5的时代曾经到来,它对所有做前端搭建制作设计开发人员来说是一种福音。HTML5致力于解决跨浏览器问题,能够局部取代JavaScript,HTML5致力于把浏览器变成一个前端执行菠菜程序环境,而不是简略地视图工具。 第一局部,理解HTML和XHTMLHTML——Hyper Text Markup Language(超文本标记语言),它的发展史比较复杂,从1991年年底推出HTML,过后HTML并没有严格的定义,一路走来HTML2.0,HTML3.2,HTML4.0,HTML4.0.1,XHTML1.0。XHTML堪称是历尽了千锤百炼。XHTML——eXtensible Hyper Text Markup Language(扩大的超文本标记语言)。HTML4.0.1和XHTML具备了良好的兼容性,而且XHTML是更严格、更污浊的HTML代码。咱们习惯性的认为HTML是一种结构化的文档,但实际上HTML的语法非常的自在、宽容(次要是各个浏览器放纵的后果)比方如下的代码,HTML标签有头无尾,十分不标准:这显然违反了结构化文档的规定,然而用浏览器来浏览这份文档时,仍然能够看到浏览成果——这就是html不标准的中央。而XHTML致力于打消这种标准,XHTML要求HTML文档首先必须是一份XML文档。通常,计算机里的浏览器能够凑合各种不标准的HTML文档,但当初很多浏览器运行在移动电话和手持设施上,它们就没有能力来解决那些蹩脚的标记语言。 第二局部:从XHTML到HTML5WHATWG(Web Hypertext Application Technology Workding Group,Web超文本利用技术工作组)制订了一个新的HTML规范,HTML5。大量的考察表明:即便在一些正规的网站中,也很少有网站能通过HTML标准验证。仅有6.57%的网站合乎HTML标准验证。如果把那些名不见经传的小网站思考在内,整个互联网简直都是不符合规范的HTML页面。现有的HTML页面大量存在如下4中不符合规范的内容1.元素的标签大小写混淆。比方:<p></P>。2.元素没有正当完结的状况。比方:只有<p>没有</p>。3.元素中的属性没有指定属性值。比方<input type="text" disabled>。4.为元素的属性指定属性值时没有应用引号。比方:<input type=text>。出于“存在即正当”的思考,WHATWG组织开始定义一种“斗争式”的标准:HTML5。HTML5成人以上的不标准是符合规范的。HTML5是标准制定者对斗争的实现。 HTML5的劣势:从HTML4.0.1、XHTML到HTML5,并不是一种革命性的降级,而是一种标准向习惯的斗争,因而从HTML到HTML5的适度十分的轻松。1.解决跨浏览器问题。跨浏览器问题相对是一个永恒的“噩梦”,HTML的呈现可能会扭转这种场面,目前各种支流浏览器如:IE、Chrome、Firefox、Opera、Safari都体现出对HTML5极大的激情。如果各浏览器都遵循HTML5标准,当前前端程序员开发HTML+CSS+JavaScript页面将会变得更加轻松。2.局部代替了原来的JavaScript。比方HTML5以前要实现:关上一个页面后立刻让某行文本框取得焦点,要通过javascript来实现,而当初只须要加上一个属性(autofocus)即可。3.更明确的语义反对。(1)HTML5提供了<header>...</header>;<nav>...</nav>;<article>...</article>;<section>...</section>;<aside>...</aside>;<footer>...</footer>来代替以前只能通过div来实现的文档构造。(2)HTML5提供了两个新增的元素<time>2017-4-18</time>;<mark>被标记的语言</mark>提供了更加丰盛的语义相比于原来的<em../>(em示意被强调的内容,然而到底是哪一种强调并不分明)。4.加强了WEB应用程序的性能。始终以来,HTML被死死地限度着,客户端从服务器下载HTML页面数据,浏览器负责出现这些HTML页面数据。出于对客户机安全性思考,以前的HTML在安全性方面做的足够平安。于是呢,咱们就须要通过JavaScriptlai等其余形式来减少HTML的性能。 HTML5的语法变动1.标签不再辨别大小写。2.元素能够省略完结标签。3.容许省略属性值的属性。4.容许属性值不应用引号。(然而对于蕴含空格等容易引起浏览器混肴的属性值时候,HTML5强烈建议应用引号把这种非凡的属性值引起来)

March 21, 2022 · 1 min · jiezi

关于html:双飞翼布局和圣杯布局的小例子

 明天逛知乎日常搜寻了几个对于前端面试的问题,本认为学了react之类的框架就能够放弃css,当初想想本人真是太天真了。老前辈们说过:“Css你能够不把每一个属性全都记住,然而你肯定要在你须要的时候晓得去哪里找。”不过这句话有迷惑性,我再来改一下,常见的属性你肯定要记住,不常见,不常常应用的你须要记住有这个属性,在你看到这个属性的时候,你要晓得你见过,不要一头雾水一脸懵逼。 圣杯布局有好几种办法实现,它并不是只有一种固定格局.最常见的圣杯布局MDN官网文档,基本上就是圣杯布局的大略思路. 页面nav占据最大的宽度,而后两边固定宽度,两头内容能够依据用户应用主动缩放。 1.flex 实现 如果要用flex实现的话 须要把<nav >和footer拿进去,给两头三个内容一个独自的父容器,给父容器一个display:flex (或者有更好的办法不必拆散,然而目前我只想到了分离出来nav和footer)    咱们要求的大略思路就是,nav和footer占据用户屏幕的百分百宽度,两头内容分为三列,脑子里肯定要有一个清晰的网页轮廓。   给左右两边定宽,而后给两头内容一个flex:1,这里左右两边的宽度也能够用flex-basis示意,这里须要了解的点上flex:1这个中央,flex:number (代表着这个元素能够如何调配剩下的空间,因为左右默认值为0,我独自给center设置了1,那么代表着center将单独享有剩下的所有空间,那么就实现了咱们想要的成果。)要留神的是flex:1是flex的简写模式,它的简写值能够有三个,在这里就不过多赘述.自行查阅mdn。 2.负margin 加浮动(这个太经典了,倡议熟读百遍) 同样是这样的布局模式;  通过下面简略的款式布局,呈现出页面成果如下(左右两边的空白是content的padding,筹备放入left和right 的div的,通常状况padding的值就是左右两边sider的宽度,个别是固定宽度,你也能够设置margin来等效替换padding,失去的布局成果是一样的)  这时候咱们须要用到浮动来将咱们的左右元素挪动到相应的地位, 这里为什么要margin-100%呢?你能够设想原本这三个元素应该是在同一行的,然而因为center盒子宽度满了,强行把left和right挤到下一行了,然而其实他们应该排在center盒子的最左边,因为div盒子是center left right这个上下文程序在html文档里写,\咱们给右边盒子一个-margin,留神margin是绝对于父亲元素来说的,我的-100%,也就是紧挨着父亲元素的最右边,此时left盒子和center盒子的右边重合。这时候我须要右边盒子再往左挪动300px,也就是父亲盒子为它空进来的宽度。 !!!!留神float是沿容器,容器,容器,并没有脱离父元素的限度!!!(到这你应该也就晓得下一步要干什么了,对,咱们要让他脱离父亲元素的限度) ok,第一工夫就应该想到应用position这个办法,那么positon的relative是最合适的,(如果你想达成用户滑动屏幕,左右栏固定的成果也能够用absolute。absolute的定位形式会去找上一层非static模式的盒子,始终找到浏览器窗口为止。)那么该左边盒子紧挨着center了(肯定要留神这里的意思,原本左边盒子也是和center盒子紧挨着在同一行的)这时候给了一个负的本身的宽度,那么他就会向右边挪动,覆盖住center200px也就是本身宽度的值 ,然而这时候它还是没有解脱父元素的限度,所以也要用定位,让他向右偏移本身宽度的长度 最终全副css代码和后果如下 3.双飞翼布局(广购平台页面经典布局)   圣杯布局和双飞翼布局实现的款式是大抵基本相同的,只不过双飞翼布局的内容区用独自的div包裹,让这个div来承当浮动的角色。

March 17, 2022 · 1 min · jiezi

关于html:交作业啦html5学习笔记

交作业啦因为前段时间比较忙(忙着相亲)所以很久都没有更新文章,也没有认真学习啦!导致我的老师都来质问我,所以明天要做个检讨了嘿嘿嘿,是不是有一种上高中的时候被老师催着交作业的感觉!!! 那么为了证实最近仍然在努力学习就给大家整顿一份近期的学习笔记,如果有什么须要补充的中央大家能够分割我提出意见。 html简略的学习记录:简介HTML5(超文本标记语言)是 Hyper Text Markup Language 5 的缩写,超文本包含文字、图片、音频、视频、动画等等 <body>、</body>等成对的标签,别离叫凋谢标签和闭合标签,独自出现的标签(空元素),如<hr/>意为用/来敞开空元素 DOCTYPE申明:通知浏览器咱们要应用什么标准<title>标签<meta>标签:描述性标签,用来形容网站的信息,个别用来做SEO(搜索引擎优化) 网页根本标签题目标签:<h1>一级标签</h1>、<h2>二级标签</h2>…段落标签:<p></p>换行标签:<br/>水平线标签:<hr/> 字体款式标签:粗体:<strong></strong>斜体:<em></em> 正文和特殊符号正文:<!--正文 -->特殊符号:空格:&nbsp;大于号:&gt;小于号:&lt;版权符号:&copy; 图像标签<img src="path" alt="text" title="text" width="x" height="y" /> 例如:一张只有聪慧的人才能看得见的照片(我来看看谁不聪慧) <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>这是一张照片</title> </head><body> <img src="4.jpg"title=这是一张照片 width="600"/></body></html>链接标签超链接标签:<a></a> <a href="path" target="指标窗口地位">链接文本或图像</a>基于以上内容实现了一个新闻页面,一篇我近期看到且比拟感兴趣的一则新闻!<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>新闻页面</title></head><body> <h1 align="center">#未成年人文身后容易被标签化#</h1> <br />央视网快看 22-3-8 <hr /> <p><center><img src="1.jpg" title="当天热搜榜" ></center></p> <p align="lift">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;明天看到了这样的一个话题:未成年人文身不是公事和家事"</p> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;而后看到上面的评论间接两极化,首先咱们看问题待看重点:未成年. <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;孩子们心智尚不成熟,文身后容易被标签化,甚至走入歧途。而且,孩子们正在长身材,文身易感化、难还原,长大后待业受限。这个话题的要害是未成年人,如果你是成年人你想文身那是你的自在, 未成年文身很多是自觉跟风或者是为了需要新鲜感而粗率做出的决定,而且过后的经济状况对于文身师的抉择可能也不会太好,可能会感化,难还原等问题,对未成年人的身材和身心都可能造成挫伤,将来退学、从军、待业若碰壁,便会影响成长和倒退。 有人总结:未成年人文身酷一时、痛毕生。 也有人说拿纹身说事是“刻板印象”,是对纹身的偏见。其实始终以来社会上就对纹身有两个比拟极其的认识,个人感觉成年人的话无所谓,想怎么纹就怎么纹,然而未成年人的话,还是多思考思考,切实想纹的话等到18岁成年了也不晚。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有人总结:未成年人文身酷一时、痛毕生。</p> <a href="https://ent.china.com/pic/rg/11060670/20220309/41589646.html">#未成年人纹身不是公事和家事#</a> <video</body></html>好啦!目前只学了这么一点点所以作业补交到这啦❤️

March 15, 2022 · 1 min · jiezi

关于html:爬虫学得好监狱进得早

提起“爬虫”,总有一丝神秘色彩,大家都调侃“爬虫写得好,laofan吃得饱”。 尽管是“高危职业”,但在大数据横行的年代,爬虫与反爬虫的需要却在剧烈减少,他们的关系就像矛与盾,越来越多的公司造“矛”发动守势,获取数据;又或者在造“盾”,封闭信息。 这种状况下,很多工程师可能会被公司要求,去理解点爬虫技术、反爬虫思路,能够更好地爱护本人和业务。 而且爬虫、反爬虫单方的奋斗招式愈发疯狂,环境也愈发顽劣,现如今深陷其中的工程师们不得不面对以下这些问题: 如何自保,有没有一套卓有成效的生存法令?反爬虫的伎俩都有哪些,应用它们的最佳时机又是什么?面对爬虫各式各样的假装,怎样才能精准辨认?如何能力在这个畛域立足并向上倒退? 然而说真的,当初爬虫、反爬虫的材料并不多,有的也过期了。甚至能够说,你当初网上能找到的爬虫办法,都有了反爬虫的策略。 那要如何能力晋升反爬效率,开拓新的反爬虫奋斗思路呢?我的教训,要害就两个点,「晋升思维 → 实战案例死记硬背」,举个例子剖析下: 挺分明的吧,这个案例出自《反爬虫兵法演绎 20 讲》专栏,作者很有意思,举了不少业务场景中的实在故事,讲了爬虫与反爬虫工程师的“生存法令”(划重点,这很重要);还提炼了10+ 反爬虫疑难点的排查思路,以及经典实用的“反爬虫兵法”,从思维层面上关上视线;最初配合“实战”,深刻了解爬虫和反爬虫实践,高效反爬。 讲师是「DS Hunter」,是现一线大厂前端负责人(具体的窃密,大家都懂)。但在反爬虫畛域,相对是一流的专家,看他专栏的深度就能感触到。 他的反爬格调独特,既长于长期蛰伏,在竞对不易觉察的角度和工夫发动防御;也能用技术和心理双层守势, 间接击败或劝退对手,他曾在多个月内,使竞对无奈抓取到己方的任何数据,甚至可能影响后续合并。 其实当初网上的反爬虫文章并不多,而且大部分做反爬的人都不违心分享。毕竟坑骗技巧就像魔术一样,一旦戳破了,就毫无技术含量可言。但他把本人的心法毫不保留的分享进去,让大家都能够接触到、学习到,真的是多少钱都买不到的。 这课堪称是一股清流,另辟蹊径,不单讲反爬虫套路,重点造就思维,从「发爬虫历史 → 反爬虫基础理论 → 反爬虫技术概论」的构建了一个残缺的反爬虫常识架构: 作为一门骨灰爬虫反爬虫爱好者,我能够负责任地说,这个内容设计十分零碎和扎实。 此外,专栏里还分享了一个「反爬虫从业者档次划分图」,通知你在爬虫畛域,如何从小白用户到内驱达人,一步步成长为架构能手,乃至团队首领。 第一层:器重如何辨别具体每一个爬虫,最好有人手把手教。第二层:能本人被动辨认一个未知的爬虫,即便网上搜不到方法,也能本人发明方法辨认。第三层:更关注零碎设计、扩大相干的常识。第四层:更关注如何组建团队。第五层:所有都不是问题了,这个时候,返璞归真,发现最要害的还是如何辨认爬虫。于是分心搜寻这方面的常识。 这个专栏尽管是从反爬虫视角切入的,但作者进行了双向剖析,基本上你学习反爬虫的同时也能理解爬虫,最重要的是「不拘泥」案例,从「思路」动手。 就好比通知你反爬具体是如何做的,如何如何碾压对手,咱们有如许如许牛。然而最初回想起来,如同也没有记住什么。就像解数学题,你不能记住这道题,而是应该明确这个道题的解法,触类旁通。 反爬无定式,间接实战对于想象力的限度是微小的。战场瞬息万变,被几个实战的例子困住,切实是得失相当。有句话说得好,“技术手段大同小异,但应用办法更为精华”。 做反爬其实和和平差不多,有的时候要闪电出击,有的时候要龟缩逞强。而且肯定要记住,不打无意义的和平。除了失去各种技术以外,我心愿你通过这个课程,学会这件事,并利用于工作以及生存中,那就是:“我就是想站着,还把钱挣了。” (转载自极客工夫)

March 15, 2022 · 1 min · jiezi

关于html:react组件化的思想

明天是我学习完react并且应用的第一个小工程,也不算小工程吧,仅仅就是一个小的动态网页。然而我的思维逻辑差不多曾经理清了,为什么咱们要用react写,而不是用html和css写,尽管我这个网页具体用react写的功能性组件不多,然而重要的是本人写下一个完完整整页面的那种开心,和遇到问题本人摸索的那种过程才是我最喜爱的。 react的组件化思维很适宜用于团队开发我的项目,因为页面的各个组成部分仅仅就是组件而已,要举例子的话,我喜爱用制作一辆汽车来举例子。 原本如果单单应用html来写一个网页的时候,人员调配工作起来十分麻烦,就比如说某个标签的class名称,万一反复呢?css文件合并的话就会引起不想要的成果,而在next.js上编写react的话,它会主动帮你在每个组件的css上别离给你加上新的后缀,保障每个组件的className不会 像这种className的后缀都是next.js这种框架主动帮你加上的,所有你能够在每个组件里纵情应用你喜爱的class名称。 这是我写的一个网页的组成部分,你能够大略看进去基本上和html的构造一样,其实动态网页的内容就是和纯html差不多,然而这种我的项目万一赶工程的话,我就能够放下的让我另一个共事实现页面的其余某个局部而不必放心合并呈现过错的问题。 页脚局部的显示成果,上面是局部代码 因为是一个动态的页面,其实react的货色 hooks 和state等也用不上,然而我曾经逐步造就起这种组件化一个页面的思维了,我置信我会在这条路上坚持下去的。

March 12, 2022 · 1 min · jiezi

关于html:html生成邮件签名

遇到这个需要的时候,我下意识反馈,要写行内款式,拷贝出 HTML 字符串,事实的确也是如此,记录一下在开发中遇到的问题一个有用的示例阅文邮件签名前端生成工具重点:自定义签名的主体必须要用table标签来写,不然会呈现意想不到的款式错乱 原生copy事件最开始因为不太了解邮箱签名是个什么货色,怎么生成,认为是间接复制出一段富文本呢,所以一开始应用上面的代码做的,倒是也能实现成果,而且能够间接粘贴进富文本的输入框,比方:写 邮件 的输入框,留神如果以html模式copy,不能将copy的内容粘贴微信等聊天工具的输入框,text模式能够轻易粘贴, 代码如下: const handleCopy = type => { const mailDom = document.querySelector('.profile-email-signature') let mailContent = '' let clipType = '' if (type === 'html') { mailContent = mailDom.innerHTML // 以html格局拷贝 clipType = 'text/html' } else { mailContent = mailDom.innerText // 以一般文本拷贝 clipType = 'text/plain' } const copyHandler = event => { console.log('copy事件触发') event.clipboardData.setData(clipType, mailContent) event.preventDefault() } // 监听copy事件 document.addEventListener('copy', copyHandler) // 为兼容Safari必须创立textarea const textarea = document.createElement('textarea') document.body.appendChild(textarea) // 暗藏此输入框 textarea.style.position = 'absolute' textarea.style.clip = 'rect(0 0 0 0)' // 赋值 textarea.value = '...' // 选中 textarea.select() // 复制 触发 copy 事件 document.execCommand('copy', true) document.body.removeChild(textarea) document.removeEventListener('copy', copyHandler)}clipBoard.js利用 clipBoard.js 将指标dom变成html复制进去,而后借助 email 客户端的 签名 html渲染,实现自定义签名,代码如下: ...

March 8, 2022 · 1 min · jiezi

关于html:原生下拉刷新

下拉刷新 <div class="content"> <div class="pullRefresh"> <div class="li">11111</div> <div class="li">11111</div> </div> </div> // 获取到操作的DOM元素 var content = document.querySelector(".content"); var pullRefresh = document.querySelector(".pullRefresh"); var startY,endY; content.addEventListener("touchstart",function(e){ startY = parseInt(e.changedTouches[0].pageY); }); content.addEventListener("touchmove",function(e){ endY = parseInt(e.changedTouches[0].pageY); if(endY - startY > 0){ content.style.marginTop = endY - startY + "px"; pullRefresh.style.height = endY - startY + "px"; } }); content.addEventListener("touchend",function(e){ endY = parseInt(e.changedTouches[0].pageY); if(endY - startY > 200 && (window.pageYOffset === 0 || document.documentElement.scrollTop === 0)){ pullRefresh.innerHTML = "加载中"; content.style.marginTop = "50px"; pullRefresh.style.height = "50px"; setTimeout(function(){ pullRefresh.innerHTML = "加载胜利"; setTimeout(function(){ content.style.marginTop = "0"; pullRefresh.style.height = "0"; },1000) },2000); }else{ console.log("下垃的幅度不够"); content.style.marginTop = "0"; pullRefresh.style.height = "0"; } });

March 8, 2022 · 1 min · jiezi

关于html:不会写代码的播音生不是个好运营

当你的业余和职业不对口...我想很多毕业生在大四的时候都会遇到一个问题,就是很难找到与本人专业对口的工作。媒体上也经常出现诸如大学生回乡卖猪,卖鸡蛋之类的新闻,业余与职业的矛盾在这种强烈的比照下被激化了。如果咱们扫视一下咱们四周,又有多少人陷于业余与岗位不对口的困惑当中呢? 职业定位理解本人+理解岗位抉择业余时,你理解本人的兴趣爱好吗?来自智联招聘网站的一份考察:在当初填写高考意愿的时候,42%被调查者是依据本人的主导志愿抉择业余的,有26%的人服从父母的决定,其余32%则是依据老师的倡议或遵从调剂调配;当问到“如果有机会从头再来的话,你会如何抉择”有52%的人说他们会另择业余。超过半数的人都投了反悔票。 就拿我本人来说吧,大学学的业余是播音主持,上大三的时候意识到一个播音生不能仅仅只会主持,俗话说播编不分家,所以我又去深造了电视编导双学位。然而起初没想到本人毕业之后的第一份工作竟然成为了互联网打工人(此处的心田想法主动省略,别问为什么,问了就是为了生存)不过还是很思念坐在录音室和演播间的日子。(此处附上一张照骗)从事互联网行业之后我感触到了很多乏味的事件,深深的了解了科技扭转世界的意义,在生活中也发现了四周很多可恶的研发小哥哥们,也突破了我之前对于程序员的刻板印象(格子衫、秃、板滞、木讷、无趣)之类的词语。这些刻板印象,常常会导致咱们对他人的认识有偏见。然而!!!当我真正走到这群人外面,发现真的不是这样的,就像我身边举个例子:他们会唱歌,会弹吉他,偶然会去蹦迪,会煮饭,会关照女朋友,他们有布局,有法则的作息时间,偶然也爱八卦娱乐,私底下还会养小宠物(我发现程序员都爱养猫,哈哈哈哈)他们的另外一个身份是铲屎官。通过近距离地接触我发现他们真的很可恶,我也很喜爱跟他们学习一些货色,发现写代码也是一件很乏味的事件,近期也在学习,写出了我人生中第一个用html设计的一个网页 <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script type="text/javascript"> function myFunction() { document.getElementById("demo").innerHTML = "段落被更改。"; console.log("段落被更改。"); window.alert("更改段落"); } </script> </head> <body> <div> <div> <div> <p id="demo"></p> <input type="text" name="username" id="username"> <input type="password" name="password" id="pasword"> <!-- <input type="submit" name="提交" id="btn" onclick="document.getElementById('p').innerText = 'Hello JavaScript' " /> --> <button type="button" onclick="myFunction()">试一试</button> </div> </div> </div> </body></html>(心愿大家不要讥笑我)还有就是心愿大家能够多多提出意见!致敬全天下的程序员“全年无bug”!!!!爱你们❤️

March 3, 2022 · 1 min · jiezi

关于html:金三银四抢人季HR-如何-3-招做到效率为王

春招伊始,面对队伍宏大的校招人群,簇拥而入的简历,HR 如何能力疾速搞定呢?Bug君总结了一下过往招聘季的一些比拟风行的环节: 通过线上宣讲,节俭出行老本、工夫,老板更认可了当初大多数企业都会在直播平台做招聘直播,只须要提前做好宣讲推广、邀约技术大佬,锁定直播间即可,简直不必破费多少工夫和行程老本。 在线口试测验简历真伪,技术人才品质更高了很多时候,面试官的工夫忙碌,基本顾不上每份简历都认真斟酌,但又不想放弃每一份简历,用在线口试的形式去考查候选人的程度,简略见效。 防舞弊动作到位,在线口试的成果更有把握了在交换的过程中,Bug君也理解到所有面试官在近程口试中最放心的一点就是舞弊的问题,但在校招中如果能不费吹之力也能躲避舞弊景象,对面试官来说是十分欣慰的。 为了让HR和面试官都能打赢这场春招之战,Bug君具体列举了一些干货,旨在让企业不错过任何一个优良技术人才的状况下,也能高效实现技术招聘。 高效筛简历:通过口试初筛更精准 Bug君常常混迹在各个HR论坛,有理解到传统的技术招聘流程大多都是通过简历上的信息简略评判、再接着电话面谈、邀请现场口试,整个效率极低,且缩短了招聘链路,不少HR叫苦不迭。 更扎心的是,很多候选人在简历上包装得一板一眼的,后果到现场面试口试才露出“真面目”,白白浪费了不少工夫。 校招是补充团队新鲜血液的关键时期,而在效率为王的明天,ShowMeBug 为HR们在初筛环节简化了链路: ShowMeBug 反对近程口试,帮忙企业做好简历初筛 无论是校招还是社招,置信不少HR都很头疼口试环节,如果是一两位候选人倒还好,若是大批量的招聘需要状况下,出题、评卷都会消耗不少工夫精力,最初口试就变成了一个简短且糊弄的环节。 开启防舞弊零碎,进步口试品质 口试造假也是HR常常困扰的问题,ShowMeBug的防舞弊零碎堪称是帮到点上了,平台具备摄像头检控官、切屏揭示、题目乱序、水印标记等性能,在口试环节,ShowMeBug 就是一名业余的监考官,解决HR的困扰。 全程记录:立体化复盘、评估、比照候选人资质 候选人加入完口试之后,通过 ShowMeBug 也可同步进行视频面试。 HR最好也能一起参加面试,很多技术面试官更多的是聊技术,很难挖掘到候选人其余方面的货色。HR能够在面试过程中更多地察看候选人的软性能力和后劲,配合面试官理解得更全面。 但大多数状况下HR无奈做到一一去全程跟进,而且就算参加了面试但回过头来又傻眼了:明天面试了那么多,一时想不起来哪个候选人才是最合适的?针对这一痛点,ShowMeBug通过独创的回放技术,可全程记录笔、面试,不便HR和面试官在确定候选人时进行回看,让关注的细节从新展现、让招聘更加精准。 争分夺秒:实时跟踪候选人动静,完结招聘 也有不少HR反馈技术面试官在口试面试完结后,都得追着问反馈,沟通效率非常低。 对于HR来讲,如果是大牛人物,时时刻刻都要追面试进度和放弃沟通跟进。而在ShowMeBug 上面试完结后,无需诘问后果,技术面试官本人在报告上写评估,共享每一次面试后果,HR或其余面试官只须要在后盾查看即可。这样也不便了HR在前期的候选人追踪与沟通。 春招的“抢人大战”已开始,HR如何能力招聘到适合且高质量的技术人才,不仅仅是实现招聘冲刺大赛的KPI,更是岗位价值的体现。 更多技术产品征询,欢送增加客服微信哦~ 更多文章留神!这种口试形式正在逐步被取代……技术分享 | 如何让上千容器同时"存活"ShowMeBug 荣获稀土掘金「2021年度人气技术团队」【重磅】兼顾好用与高颜值,ShowMeBug UI2.0 重磅上线技术招聘人的2021,都在这一张图里

February 25, 2022 · 1 min · jiezi

关于html:修HTML页面不能上下滚动的问题

批改HTML页面时发现不能高低滚动,而且超出的内容局部被挡住看不见,起初发现是款式的问题,找到这个款式正文掉就好了。批改之前的成果批改之后的成果

February 24, 2022 · 1 min · jiezi

关于html:Thymeleaf

html中应用Thymeleaf的${}来进行取值,就必须要在th:xxxx前面。input标签内,能够应用th:value;而textarea标签内就应用th:text。

February 23, 2022 · 1 min · jiezi

关于html:http3不再使用tcp协议的原因

http3不再应用tcp协定的起因 上一篇文章整顿了http0.9-http3的整个变动过程,然而说的不是很具体。比方浏览器是如何利用http1.1的,多个申请如何解决?http2到http3的底层协定特点以及对应的扭转背景都没有说分明。 明天就专门针对http3不再应用底层的tcp协定这个问题作为引子,具体论述下对应的扭转起因。 首先说咱们常常提到的TCP协定: TCP协定通过数据分片、达到确认、超时重发、滑动窗口、失序解决、反复解决、数据校验等规定,为应用TCP连贯的单方提供一个面向连贯、牢靠的字节流服务。 然而TCP连贯这个概念还是比拟形象。 咱们能够这么了解,电话两端有两个接线员,电话之间通过电话线进行连贯。在正式通话时,电话员A向接线员B拨号并说了这么一句话:有人吗?接线员B回了一句:我在!接线员A又说道:ok我晓得了。这相当于TCP连贯建设时的三次握手,用来确定单方状态。之后两边电话员就能够失常你来我往的通话了。 同时为了防止两个人的沟通内容有缺失等问题,两边还规定了如何交换,信号中断了如何解决等等。 TCP断开时则须要进行四次挥手过程,这个就没必要细说了。至于为什么是前三后四,这是因为校验太多了也没用,所以就采取了起码验证次数。 接下来聊聊UDP协定: 咱们要晓得,它最大的特点是无连贯。也就是信息在传输数据之前不须要建设连贯,当想要发送数据时,就把数据包尽可能快地扔到网络上,至于收没收到,就不论了(尽管这很重要) 那么,既然UDP协定这么不牢靠,HTTP3为何还要应用UDP协定? 咱们在上一篇文章中也讲到了HTTP2的一些问题,其中基于TCP协定的HTTP协定永远无奈解决队头阻塞的问题,这样的话,数据传输速度无奈进一步放慢。 HTTP3是基于UDP协定的,它同时还做了一些其余解决,比方减少数据包重传、拥塞控、调整传输节奏等等。其其核心思想是将TCP协定在内核实现的诸如牢靠传输、流量管制、拥塞管制等性能转移到用户态来实现,同时在加密传输方向的尝试也推动了TLS1.3的倒退。 至于说http3的毛病,那就是后话了,等五年后有趣味了我再来补充!

February 22, 2022 · 1 min · jiezi

关于html:32516网络编程

32516 - Internet ProgrammingAssignment 1:"An On-line Grocery Store with Graphic User Interface"Due on: Friday 23 April 2021, at 11:59 pmIntroductionIn this assignment, you are required to develop a web site for a Grocery Store to run a grocerybusiness on-line. This Grocery Store system is a simulated online grocery shopping experience.It is applicable to any e-commerce shopping application.The products in the store for sale can be divided into five categories: Frozen-Food, FreshFood,Beverages, Home-Health and Pet-Food. The data pre-defined in a MySQL database isshown as below:Attributes associated with each product:(Table; products)32 rows in set (0.01 sec)This assignment consists of four components. You are required to work individually tocomplete all functionalities of this project. This assignment counts as 45% towards your finalassessment.Objectives ...

February 21, 2022 · 6 min · jiezi

关于html:带你了解智能家居开源项目智汀家庭云与Home-Assistant之插件初步配置

简介咱们在日常应用中,局部智能设施自身反对接入HomeKit,也就是说用户能够通过苹果手机的“家庭”将该设施进行接入、管制。但这种操作存在显著的局限性,安卓手机无奈应用,而且无奈与不反对接入HomeKit的设施进行联动。比方用iPhone近程开关家里的灯; 就拿Home Assistant来说,是一款基于Python的智能家居开源零碎,可能反对接入泛滥品牌智能设施,然而在肯定水平上也存在优劣势:第一方面劣势是具备集中化的治理;另一方面劣势是它只可能在局域网内拜访,无奈通过外网近程管制; 在此很多人还不晓得,国内首个采纳智能家居各厂商软件特点的全面开源协定,它凭借着能够离线运行在局域网内,并且通过绑定到智汀云来获取更弱小的性能,崛起的新秀。运行在局域网环境时,用户能够通过智汀APP发现与治理智汀家庭云,装置插件来对设施进行治理与管制。 其次,通过智汀云帐号,将智汀家庭云设施关联到云端,而后通过云端直达的形式反对在外网对设施进行管制。 同时提供设施间接接入云端虚构家庭的性能,不便无智汀家庭云设施的用户应用;智汀云也提供虚构家庭数据迁徙到实体家庭的接口。 对于关联到云端的家庭,智汀云提供云对云接入性能,用户可受权小度,天猫精灵,Google Nest 等智能音箱间接对设施进行管制。 二、装置第三方插件智汀家庭云运行在 Linux 主机下,通过 Docker 来对其中的服务进行部署与资源隔离。其中局部外围服务容器须要事后配置,并且随系统启动主动运行;而插件(plugin)类服务则是由 SA 调用 docker API 的形式进行治理。 插件启动后会运行一个 gRPC 服务以及一个可选的 HTTP 服务,SA 通过 docker API 监听插件运行状态,通过 gRPC 接口获取插件信息,对于插件实现教程实现的示例插件;参考该文献:golang | 智汀科技开发文档 开发范例1. 镜像编译和部署 临时仅反对以镜像形式装置插件,调试失常后,编译成镜像提供给SA Dockerfile示例参考FROM golang:1.16-alpine as builderRUN apk add build-baseCOPY . /appWORKDIR /appRUN go env -w GOPROXY="goproxy.cn,direct"RUN go build -ldflags="-w -s" -o demo-plugin FROM alpineWORKDIR /appCOPY --from=builder /app/demo-plugin /app/demo-plugin # static fileCOPY ./html ./htmlENTRYPOINT ["/app/demo-plugin"]编译镜像docker build -f your_plugin_Dockerfile -t your_plugin_name运行插件docker run -net=host your_plugin_name//留神:-net=host 参数只有linux环境才有用。而比照HomeBridge:是一个动静插件,次要作用是能够让homekit辨认到Home Assistant接入的设施相当于一个桥的作用。 ...

February 19, 2022 · 1 min · jiezi

关于html:HTML元素分类总结

概述 在HTML中,存在着许许多多的元素(同:”HTML标签”),这些元素最终可分为三类,别离是块级元素,内联元素(同:”行内元素”),块级内联元素(同:”行内块元素”)。 你对这些元素是否真的理解呢? 咱们来看看这三类元素的特点: 块级元素 一.特点 1.每个块级元素都从新的一行开始显示(块级元素独占一行) 2.元素的宽度,高度,内边距(padding),边框(border),外边框(margin)都能随便设置 3.块级元素在网页中所占面积=内容区(content)+内边距(padding)+边框(border)+外边距(margin) 4.块级元素自身未设置宽度的状况下,宽度=父元素宽度-该元素的左右外边距-该元素的左右边框-该元素的左右内边距 5.块级元素未设置padding和border的状况下,padding和border的数值为0 6.块级元素未设置宽度和外边距的状况下,margin的值为0,宽度为100%(即与父元素宽度统一) 7.块级元素设置宽度但未设置外边距的状况下,左外边距的值为0 8.块级元素设置宽度,未设置padding和border,同时设置margin: 0 auto的状况下,左右外边距平分 父元素宽度-该元素宽度所残余的空间 9.块级内联元素不受父元素的line-height以及本身的vertical-align影响 二.将非块级元素转换成块级元素的办法 1.display:block 2.float:left或right 3.position:absolute或fixed 4.父元素应用display:flex,子元素会变为块级元素 三.常见块级元素 <div>,<p>,<h1>...<h6>,<ol>,<ul>,<dl>,<address>,<blockquote> ,<form> 内联元素 一.特点 1.当父元素宽度足以放下多个内联元素时,一行内能够显示多个内联元素,否则放不下的内联元素将另起一行(一行寄存多个内联元素) 2.内联元素的宽度,高度由该元素的内容撑开 3.内联元素的宽度/高度/padding-top/border-top/margin-top/margin-bottom设置有效 4.如果padding/border/margin未设置的状况下,全副为0 5.内联元素受父元素的line-height以及本身的vertical-align影响 二.将非内联元素转换成内联元素的办法 应用display:inline 三.常见内联元素 ,<span>,,,, 块级内联元素 一.特点 1.当父元素宽度足以放下多个块级内联元素时,一行内能够显示多个块级内联元素,否则放不下的块级内联元素将另起一行(一行寄存多个块级内联元素) 2.块级内联元素的宽度,高度,内边距(padding),边框(border),外边框(margin)都能随便设置 块级内联元素的宽度,高度未设置的状况下,由该元素的内容撑开4.块级内联元素受父元素的line-height以及本身的vertical-align影响 二.将非内联元素转换成内联元素的办法 应用display:inline-block 三.常见内联元素 <input> 关键词:web前端培训 前端培训

February 17, 2022 · 1 min · jiezi

关于html:写一个简单的时间轴

利用相对路径以及动静left的大小展现不同工夫对应的图片 <div className="timeLine"> <div className="cList"> <ul className="cUl" style={{ left: currentIndex * 1800 + "px" }}> {list.map((v, index) => ( <li key={index} style={{ left: index * -1800 + "px" }}> <div className="container-li"> <div className="li-left"> <img src={v.img} alt="" width="100%" height="100%"/> </div> <div className="li-right"> <h4>{v.date}</h4> <p>{v.text}</p> </div> </div> </li> ))} </ul> </div>{" "} <div className="yearList"> <ul> {dateList.map((v, index) => ( <li className={[index === currentIndex ? "year-active" : ""]} key={index} onClick={this.onchange.bind(this, index)} > {v} </li> ))} </ul> </div></div>ul li { list-style: none;}.timeLine { height: 300px;}.cList { width: 100%; position: relative;}.cUl { width: 100%; height: 190px; margin: 0 auto; position: relative; left: 0px;}.cUl li { width: 100%; position: absolute; padding: 8px 0;}.container-li { display: flex; align-items: center;}.yearList { width: 100%; list-style: none; position: relative; z-index: 5; margin-bottom: 0;}.yearList ul { height: 30px;}.yearList li { float: left; height: 100%; cursor: pointer; text-align: center; font-size: 14px; line-height: 30px; width: 30%;}.year-active { background: #6478a4; color: white;} ...

February 16, 2022 · 1 min · jiezi

关于html:情人节码了一个程序员专属冰墩墩内含源码免费获取

一、成果 明天情人节,大家都筹备了什么礼物? 给大家介绍一个情人节“程序员专属表白冰墩墩。” 二、代码<div class="main-wrap"> <div class="face-border-box"> <div class="face-round-border face-round-green"></div> <div class="face-round-border face-round-yellow"></div> <div class="face-round-border face-round-red"></div> <div class="face-round-border face-round-blue"></div> </div> <div class="main"> <div class="body"> <div class="face-round"> <div class="face"> <div class="eyes"> <div class="left"> <div class="ball"></div> </div> <div class="right"> <div class="ball"></div> </div> </div> <div class="nose"></div> <div class="mouth"> <div class="shape"></div> </div> </div> </div> <div class="ears"> <div class="left"></div> <div class="right"></div> </div> <div class="arm"> <div class="left"></div> <div class="right"> <div class="hand">♥</div> </div> </div> <div class="bg"></div> <div class="logo"></div> <div class="leg"> <div class="left"></div> <div class="right"></div> </div> <div class="foot"> <div class="left"></div> <div class="right"></div> </div> </div> <div class="road"></div> </div></div>三、程序员专属冰墩墩礼物参数 名称:程序员专属冰墩墩 语言:html+css  代码:300行  用时:520秒 寓意:“我不慎调用了爱你这个办法,最初才发现「爱上你是一个死循环...」” 四、源码 源码中转:https://github.com/zegoim/zeg... 你学废了吗? 最初,祝大家情人节高兴,女朋友都喜爱你们的礼物!

February 14, 2022 · 1 min · jiezi

关于html:编辑CSDN文章怎么打多个空格

问题每次用CSDN写博客的时候,无论在编辑处敲了多少空格或者Tab键,然而在注释成果处只显示一个空格,不能显示多个空格。就像这样: 解决因为CSDN文章编辑遵循HTML,所以咱们将空格换成HTML代码就能够了,就像这样: 名称代码长度不换行空格&nbsp;惯例空格的宽度半角空格&ensp;一个字母的宽度全角空格&emsp;一个字的宽度窄空格&thinsp;半个字母的宽度成果1、不换行空格(&nbsp;) 张三&nbsp;李四张三&nbsp;&nbsp;李四张三&nbsp;&nbsp;&nbsp;李四张三&nbsp;&nbsp;&nbsp;&nbsp;李四成果: 张三 李四张三  李四张三   李四张三    李四 2、半角空格(&ensp;) 张三&ensp;李四张三&ensp;&ensp;李四张三&ensp;&ensp;&ensp;李四张三&ensp;&ensp;&ensp;&ensp;李四成果: 张三 李四张三 李四张三 李四张三 李四 3、全角空格(&emsp;) 张三&emsp;李四张三&emsp;&emsp;李四张三&emsp;&emsp;&emsp;李四张三&emsp;&emsp;&emsp;&emsp;李四成果: 张三 李四张三 李四张三 李四张三 李四 4、窄空格(&thinsp;) 张三&thinsp;李四张三&thinsp;&thinsp;李四张三&thinsp;&thinsp;&thinsp;李四张三&thinsp;&thinsp;&thinsp;&thinsp;李四成果: 张三 李四张三 李四张三 李四张三 李四

February 13, 2022 · 1 min · jiezi

关于html:DOM树问题

在我的项目遇到客户端DOM和服务端内容不统一的问题,在本地运行时,不会由任何影响,当我的项目部署上线之后,产生的问题就很重大了,对导致我的项目页面打不开。问题重现:HTML代码: <template> <div> <div> <p>其余内容</p> </div> 提醒: {{ tips || "暂无" }} </div></template>会呈现如下谬误: [Vue warn]: The client-side rendered virtual DOM tree is not matching server-rendered content. This is likely caused by incorrect HTML markup, for example nesting block-level elements inside <p>, or missing <tbody>. Bailing hydration and performing full client-side render 意思是:客户端出现的虚构DOM树与服务器出现的内容不匹配。 起因:没有应用正确的标签语法。导致客户端和服务端渲染进去的后果不统一 解决办法:1,应用正确的标签语法 <div>提醒: {{ tips || "暂无" }}</div>2,应用<client-only>组件只在客户端进行渲染此段代码。 <client-only> <div>提醒: {{ tips || "暂无" }}</div></client-only>

January 30, 2022 · 1 min · jiezi

关于html:使用offsetpath实现自定义路径动画

很多时候美工提供的效果图,对某个点的静止轨迹并不是一个惯例直线,这时候能够应用offset-path实现点的静止轨迹。 例如这张图里,要实现绿色点沿着红色曲线运动。html局部 <div class="move-box"> <div class="dot"></div></div>css局部 @keyframes move { 100% { offset-distance: 100%;}}.move-box{ width: 80%; height: 1000px; margin: 50px auto; border: 1px solid black; position: relative; /*背景图只是用来演示静止轨迹是否正确*/ background: url(files/leaf.png) no-repeat left top;}.dot{ position: absolute; left: 38px; top: 104px; width: 20px; height: 20px; border-radius: 50%; background: green; box-shadow: 0 0 20px green; offset-path: path("M44.500,162.500 C44.500,162.500 89.756,180.432 135.500,145.500 C181.244,110.568 188.925,108.900 199.500,73.500 C210.075,38.100 204.689,3.134 270.500,17.500 C336.311,31.866 405.804,-10.398 429.500,4.500 C453.196,19.398 510.841,47.341 531.500,73.500 C552.159,99.659 529.723,58.407 602.500,31.500 C675.277,4.593 692.423,6.276 704.500,40.500 C716.577,74.724 710.319,92.353 711.500,122.500 C712.681,152.647 689.619,223.416 680.500,260.500 C671.381,297.584 529.438,204.141 559.500,324.500 C589.562,444.859 503.852,697.103 614.500,521.500 C725.148,345.897 681.020,258.038 717.500,319.500 C753.980,380.962 779.594,527.618 702.500,596.500 C625.406,665.382 412.897,742.971 378.500,639.500 C344.103,536.029 401.155,541.987 422.500,415.500 C443.845,289.013 370.529,186.899 485.500,172.500 C600.471,158.101 688.010,121.886 634.500,113.500 C580.990,105.114 610.507,137.029 492.500,112.500 C374.493,87.971 364.275,43.495 312.500,119.500 C260.725,195.505 225.342,182.297 165.500,301.500 C105.658,420.703 110.850,569.542 61.500,548.500 C12.150,527.458 44.798,372.481 12.500,317.500 C-19.798,262.519 26.643,163.161 44.500,162.500 Z"); animation: move 30s linear infinite;}这里须要留神的是: ...

January 20, 2022 · 1 min · jiezi

关于html:登录注册-会员中心-收藏-动态-创作-HTML常用标签之表格标签合并单元格

一、合并单元格的形式 跨行合并rowspan="合并单元格的个数"跨列合并colspan="合并单元格的个数"在这里插入图片形容二、指标单元格 咱们只需将代码写入指标单元格即可实现合并单元格的操作 跨行:最上侧单元格为指标单元格跨列:最左侧单元格为指标单元格三、删除单元格 在合并单元格时,咱们须要删除多余的单元格,仅保留指标单元格即可,具体操作见上面的代码实现~四 、代码实现 预览图~在这里插入图片形容总结 简略地说,合并单元格分为三步: 确定跨列合并还是跨行合并找到指标单元格,并在指标单元格中增加合并代码删除多余单元格

January 18, 2022 · 1 min · jiezi

关于html:HTML标签

一、列表标签(网页中展现行内容,依照行的形式,参差显示内容) 1.有序列表 <ul> <li></li> </ul>特点: ①列表每项前有 “·” ②文字没有靠左 ③li有默认装璜2.无序列表 <ol> <li></li> </ol>特点: 与有序列表雷同 列表每项前有数字3.**自定义列表**(通常会在页面底部应用) <dl> -------整体标签(dl标签中只能呈现dt和dd标签) <dt></dt> ----题目 <dd></dd> ----题目形容 </dl>二、表格标签 1.表格的根本标签:<table> --------表格整体(包裹在最外边) <tr></tr>----表格的行 <td></td>----表格的列</table>2.表格相干属性border 边框width 宽度height 高度align 表格对齐形式(left、right)cellspacing 单元格间距cellpadding 内容与单元格间距<table border='1' width='100' height='10'>3.表格题目和表头单元格<table> <caption></caption> ---表格整体大题目 默认剧中 <th></th> -------------一列小标题,用于表格第一行,默认加粗居中</table>4.表格的构造标签(可省略,包裹tr)thead tbody tfoot5.合并单元格(程度/垂直的多个单元格合并成一个 保一删一) rowspan clospan留神:只有同一个构造标签能力合并,不能跨thead,tbody,tfoot三、表单标签(type属性值体现不同的成果)(收集用户信息,提交给后盾) 1.input系列标签 type=‘’ *text:文本框,单行文本 pleaceholder:占位符(提醒用户输入框内容) (name/value属性 name给input设置名字 value提交后盾名字)*password:明码框*radio:单选 想要实现单选 须要给同一组单选按钮减少雷同的name属性值*checkbox:多选 *file:文件抉择 多文件上传 multiple*submit:提交 将数据提交到后端*reset:重置 将书写的数据进行清空*button:按钮2.button按钮标签<button type='submit/reset/button'>提交/重置/按钮</button>3.select下拉菜单 默认选中 selected<select><option></option></select>4.textarea文本域 反对多行文字 标签中 辨认换行和空格 右下角拖拽扭转大小 理论用于开发时针对款式成果 举荐css款式<textarea></textarea>5.label 标签 减少用户体验 减少表单控件范畴 label标签中只能呈现一个 input标签 应用办法: 应用label蕴含须要点击的内容 给label的for属性增加属性值 给须要抉择的表单控件减少id属性并且值为下面for里的值四、语义化标签 ...

January 17, 2022 · 1 min · jiezi

关于html:超好用的网站克隆工具就是玩

你好,我是悦创。 我的一个 Python 一对一学员,忽然给我提了一个这样的需要: 大略就是下面的聊天记录一样,这个一对一学员的需要有点让我无语。 不过还是能够简略的实现一下,这个时候间接应用浏览器的间接保留是行不通的。因为,会有问题的。 所以我接下来举荐这个程序。 HTTrack 是一个收费的网站克隆工具。它容许您将 Internet 上的万维网站点下载到本地目录,以递归形式构建所有目录,并从服务器到计算机获取 HTML,图像和其余文件。HTTrack 安顿原始站点的绝对链接构造。只需在浏览器中关上“镜像”网站的页面,就能够从一个链接到另一个链接浏览该网站,就像您正在在线查看它一样。HTTrack 还能够更新现有的镜像站点,并复原中断的下载。HTTrack 是齐全可配置的,并且具备集成的帮忙零碎。 装置 HTTrack apt-get 更新 sudo apt-get updatekali 装置 HTTrack sudoapt-get install httrack webhttrack运行 HTTrack 装置胜利执行 webhttrack命令。浏览器输出 http://localhost:8080关上如下页面。 网站克隆 克隆我的博客,然而大家还是略微克服一些哦!https://github.aiyc.top/ 输出实现之后,始终 next 即可。最初克隆的网站预览。 哎,就是玩! 可能对于刚刚接触 html 的同学有用吧,能够更不便的学习人家的编码技巧,心愿对你们有用。 官网地址: http://www.httrack.com/ AI悦创·推出辅导班啦,包含「Python 语言辅导班、C++辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 安排作业 + 我的项目实际等。QQ、微信在线,随时响应!V:Jiabcdefh

January 10, 2022 · 1 min · jiezi

关于html:选项卡

CSS .ele{ height: 20px;}ul{ list-style: none;}ul li { padding-right: 30px; float: left;}a { text-decoration: none; color: black;}.active a { border-bottom: 2px solid #F40;}a:hover{ color: #f40;}.elec { width: 220px; margin-top: 5px; margin-left: 40px;overflow-x: auto; }.elec p { padding-left: 2px; border-left: 1px solid #f40; font-size: 14px; overflow: hidden;/*溢出暗藏*/ text-overflow:ellipsis;/*暗藏局部显示省略号*/ white-space: nowrap;/*文本一行显示*/}HTML <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>tab选项卡代码</title> <style type="text/css"> .title { width: 500px; height: 50px; color: black; border: 1px solid gray; margin: 0; display: flex; } .title span { width: 80px; height: 50px; line-height: 50px; text-align: center; float: left; font-family: "微软雅黑"; font-size: 24px; flex: 1; border-right: 1px solid black; } .title span:nth-child(3){ border-right: none; } .tab { color: red; background-color: #999; cursor: pointer; } #tab>div { width: 500px; height: 200px; border: 1px solid gray; display: none; text-align: center; line-height: 200px; font-family: "微软雅黑"; font-size: 24px; } #tab .content { display: block; } </style> </head> <body> <div id="tab"> <h2 class="title"> <span class="tab" onmouseover="changeTab(this)">选项一</span> <span onmouseover="changeTab(this)">选项二</span> <span onmouseover="changeTab(this)">选项三</span> </h2> <div class="content" style="background: greenyellow;">内容一</div> <div style="background: cyan;">内容二</div> <div style="background: goldenrod;">内容三</div> </div> </body> </html>JS ...

January 7, 2022 · 2 min · jiezi

关于html:编程的浪漫告白持续更新欢迎收藏

你好,我是悦创。 集体博客首发:https://www.aiyc.top/2129.html 1、抖音同款,不批准不许走Coder1:https://gitee.com/huangjiabaoaiyc/image/raw/master/202112311324076.py Coder2:https://github.aiyc.top/aiyccdn/py/202112311327181.py # coding: utf8from tkinter import *from tkinter import messageboximport randomdef no_close(): return#敞开所有窗口def close_all_window(): window.destroy()#敞开窗口提醒def close_window(): messagebox.showinfo(title="不要嘛~", message="不选好不许走!")#“好的”窗口def Love(): love = Toplevel(window) love.geometry("300x100+580+250") love.title("爱你么么哒~") btn = Button(love, text="在一起!", width=10, height=2, command=close_all_window) btn.place(x=100, y=30) love.protocol("WM_DELETE_WINDOW", no_close)window = Tk()window.title("嗨,小姐姐") #窗口题目window.geometry("360x640+550+50") #窗口大小window.protocol("WM_DELETE_WINDOW", close_window) #窗口敞开label = Label(window, text="察看你很久了", font=("微软雅黑", 18))label.place(x=120, y=50)label = Label(window, text="做我女朋友好不好?", font=("微软雅黑", 24))label.place(x=70, y=100)btn1 = Button(window, text="好", width=15, height=2, command=Love)btn1.place(x=110, y=200)# “不好”按钮pos = [110, 300]btn2 = Button(window, text="不好", width=15, height=2)btn2.place(x=pos[0], y=pos[1])def on_enter(e): global pos dx = random.randint(100, 200) dy = random.randint(100, 300) print(pos,dx,dy) pos = (pos[0] + dx) % 200, (pos[1] - 250 + dy) % 350 + 250 btn2.place(x=pos[0], y=pos[1])btn2.bind("<Enter>", on_enter)#显示窗口,音讯循坏window.mainloop()运行成果 ...

December 31, 2021 · 2 min · jiezi

关于html:HTML之2022新年快乐虎年大吉给对象的不一样礼物

你好,我是悦创。 集体博客首发:https://www.aiyc.top/2128.html 成果截图: 在线体验:https://github.aiyc.top/YearTiger2022/ 源码:https://github.com/AndersonHJB/YearTiger2022 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <style> body { margin: 0; padding: 0; overflow: hidden; } .city { width: 100%; position: fixed; bottom: 0px; z-index: 100; } .city img { width: 100%; } </style> <title>2022虎年高兴</title></head><body onselectstart="return false"><canvas id='cas' style="background-color:rgba(0,5,24,1)">浏览器不反对canvas</canvas><div class="city"><img src="city.png" alt=""/></div><img src="moon.png" alt="" id="moon" style="visibility: hidden;"/><div style="display:none"> <div class="shape">2022新年快乐</div> <div class="shape">虎年大吉</div> <div class="shape">ヾ(^∀^)ノ</div></div><audio src="boom.mp3" preload="auto"></audio><audio src="boom.mp3" preload="auto"></audio><audio src="boom.mp3" preload="auto"></audio><audio src="boom.mp3" preload="auto"></audio><audio src="boom.mp3" preload="auto"></audio><audio src="boom.mp3" preload="auto"></audio><audio src="shotfire.mp3" preload="auto"></audio><audio src="shotfire.mp3" preload="auto"></audio><audio src="shotfire.mp3" preload="auto"></audio><script> var canvas = document.getElementById("cas"); var ocas = document.createElement("canvas"); var octx = ocas.getContext("2d"); var ctx = canvas.getContext("2d"); ocas.width = canvas.width = window.innerWidth; ocas.height = canvas.height = window.innerHeight; var bigbooms = []; window.onload = function() { initAnimate() } function initAnimate() { drawBg(); lastTime = new Date(); animate(); } var lastTime; function animate() { ctx.save(); ctx.globalCompositeOperation = 'destination-out'; ctx.globalAlpha = 0.1; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.restore(); var newTime = new Date(); if (newTime - lastTime > 200 + (window.innerHeight - 767) / 2) { var random = Math.random() * 100 > 2 ? true : false; var x = getRandom(canvas.width / 5, canvas.width * 4 / 5); var y = getRandom(50, 200); if (random) { var bigboom = new Boom(getRandom(canvas.width / 3, canvas.width * 2 / 3), 2, "#FFF", {x: x, y: y}); bigbooms.push(bigboom) } else { var bigboom = new Boom(getRandom(canvas.width / 3, canvas.width * 2 / 3), 2, "#FFF", { x: canvas.width / 2, y: 200 }, document.querySelectorAll(".shape")[parseInt(getRandom(0, document.querySelectorAll(".shape").length))]); bigbooms.push(bigboom) } lastTime = newTime; } stars.foreach(function() { this.paint(); }) drawMoon(); bigbooms.foreach(function(index) { var that = this; if (!this.dead) { this._move(); this._drawLight(); } else { this.booms.foreach(function(index) { if (!this.dead) { this.moveTo(index); } else if (index === that.booms.length - 1) { bigbooms.splice(bigbooms.indexOf(that), 1); } }) } }); raf(animate); } function drawMoon() { var moon = document.getElementById("moon"); var centerX = canvas.width - 200, centerY = 100, width = 80; if (moon.complete) { ctx.drawImage(moon, centerX, centerY, width, width) } else { moon.onload = function() { ctx.drawImage(moon, centerX, centerY, width, width) } } var index = 0; for (var i = 0; i < 10; i++) { ctx.save(); ctx.beginPath(); ctx.arc(centerX + width / 2, centerY + width / 2, width / 2 + index, 0, 2 * Math.PI); ctx.fillStyle = "rgba(240,219,120,0.005)"; index += 2; ctx.fill(); ctx.restore(); } } Array.prototype.foreach = function(callback) { for (var i = 0; i < this.length; i++) { if (this[i] !== null) callback.apply(this[i], [i]) } } var raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) { window.setTimeout(callback, 1000 / 10); }; canvas.onclick = function() { var x = event.clientX; var y = event.clientY; var bigboom = new Boom(getRandom(canvas.width / 3, canvas.width * 2 / 3), 2, "#FFF", {x: x, y: y}); bigbooms.push(bigboom) } var Boom = function(x, r, c, boomArea, shape) { this.booms = []; this.x = x; this.y = (canvas.height + r); this.r = r; this.c = c; this.shape = shape || false; this.boomArea = boomArea; this.theta = 0; this.dead = false; this.ba = parseInt(getRandom(80, 200)); var audio = document.getElementsByTagName("audio"); for (var i = 0; i < audio.length; i++) { if (audio[i].src.indexOf("shotfire") >= 0 && (audio[i].paused || audio[i].ended)) { audio[i].play(); break; } } } Boom.prototype = { _paint: function() { ctx.save(); ctx.beginPath(); ctx.arc(this.x, this.y, this.r, 0, 2 * Math.PI); ctx.fillStyle = this.c; ctx.fill(); ctx.restore(); }, _move: function() { var dx = this.boomArea.x - this.x, dy = this.boomArea.y - this.y; this.x = this.x + dx * 0.01; this.y = this.y + dy * 0.01; if (Math.abs(dx) <= this.ba && Math.abs(dy) <= this.ba) { if (this.shape) { this._shapBoom(); } else this._boom(); this.dead = true; } else { this._paint(); } }, _drawLight: function() { ctx.save(); ctx.fillStyle = "rgba(255,228,150,0.3)"; ctx.beginPath(); ctx.arc(this.x, this.y, this.r + 3 * Math.random() + 1, 0, 2 * Math.PI); ctx.fill(); ctx.restore(); }, _boom: function() { var fragNum = getRandom(100, 300); var style = getRandom(0, 10) >= 5 ? 1 : 2; var color; if (style === 1) { color = { a: parseInt(getRandom(128, 255)), b: parseInt(getRandom(128, 255)), c: parseInt(getRandom(128, 255)) } } var fanwei = fragNum; var audio = document.getElementsByTagName("audio"); for (var i = 0; i < audio.length; i++) { if (audio[i].src.indexOf("boom") >= 0 && (audio[i].paused || audio[i].ended)) { audio[i].play(); break; } } for (var i = 0; i < fragNum; i++) { if (style === 2) { color = { a: parseInt(getRandom(128, 255)), b: parseInt(getRandom(128, 255)), c: parseInt(getRandom(128, 255)) } } var a = getRandom(-Math.PI, Math.PI); var x = getRandom(0, fanwei) * Math.cos(a) + this.x; var y = getRandom(0, fanwei) * Math.sin(a) + this.y; var radius = getRandom(0, 2) var frag = new Frag(this.x, this.y, radius, color, x, y); this.booms.push(frag); } }, _shapBoom: function() { var that = this; putValue(ocas, octx, this.shape, 5, function(dots) { var dx = canvas.width / 2 - that.x; var dy = canvas.height / 2 - that.y; for (var i = 0; i < dots.length; i++) { color = {a: dots[i].a, b: dots[i].b, c: dots[i].c} var x = dots[i].x; var y = dots[i].y; var radius = 1; var frag = new Frag(that.x, that.y, radius, color, x - dx, y - dy); that.booms.push(frag); } }) } } function putValue(canvas, context, ele, dr, callback) { context.clearRect(0, 0, canvas.width, canvas.height); var img = new Image(); if (ele.innerHTML.indexOf("img") >= 0) { img.src = ele.getElementsByTagName("img")[0].src; imgload(img, function() { context.drawImage(img, canvas.width / 2 - img.width / 2, canvas.height / 2 - img.width / 2); dots = getimgData(canvas, context, dr); callback(dots); }) } else { var text = ele.innerHTML; context.save(); var fontSize = 200; context.font = fontSize + "px 宋体 bold"; context.textAlign = "center"; context.textBaseline = "middle"; context.fillStyle = "rgba(" + parseInt(getRandom(128, 255)) + "," + parseInt(getRandom(128, 255)) + "," + parseInt(getRandom(128, 255)) + " , 1)"; context.fillText(text, canvas.width / 2, canvas.height / 2); context.restore(); dots = getimgData(canvas, context, dr); callback(dots); } } function imgload(img, callback) { if (img.complete) { callback.call(img); } else { img.onload = function() { callback.call(this); } } } function getimgData(canvas, context, dr) { var imgData = context.getImageData(0, 0, canvas.width, canvas.height); context.clearRect(0, 0, canvas.width, canvas.height); var dots = []; for (var x = 0; x < imgData.width; x += dr) { for (var y = 0; y < imgData.height; y += dr) { var i = (y * imgData.width + x) * 4; if (imgData.data[i + 3] > 128) { var dot = {x: x, y: y, a: imgData.data[i], b: imgData.data[i + 1], c: imgData.data[i + 2]}; dots.push(dot); } } } return dots; } function getRandom(a, b) { return Math.random() * (b - a) + a; } var maxRadius = 1, stars = []; function drawBg() { for (var i = 0; i < 100; i++) { var r = Math.random() * maxRadius; var x = Math.random() * canvas.width; var y = Math.random() * 2 * canvas.height - canvas.height; var star = new Star(x, y, r); stars.push(star); star.paint() } } var Star = function(x, y, r) { this.x = x; this.y = y; this.r = r; } Star.prototype = { paint: function() { ctx.save(); ctx.beginPath(); ctx.arc(this.x, this.y, this.r, 0, 2 * Math.PI); ctx.fillStyle = "rgba(255,255,255," + this.r + ")"; ctx.fill(); ctx.restore(); } } var focallength = 250; var Frag = function(centerX, centerY, radius, color, tx, ty) { this.tx = tx; this.ty = ty; this.x = centerX; this.y = centerY; this.dead = false; this.centerX = centerX; this.centerY = centerY; this.radius = radius; this.color = color; } Frag.prototype = { paint: function() { // ctx.beginPath(); // ctx.arc(this.x , this.y , this.radius , 0 , 2*Math.PI); ctx.fillStyle = "rgba(" + this.color.a + "," + this.color.b + "," + this.color.c + ",1)"; ctx.fillRect(this.x - this.radius, this.y - this.radius, this.radius * 2, this.radius * 2) }, moveTo: function(index) { this.ty = this.ty + 0.3; var dx = this.tx - this.x, dy = this.ty - this.y; this.x = Math.abs(dx) < 0.1 ? this.tx : (this.x + dx * 0.1); this.y = Math.abs(dy) < 0.1 ? this.ty : (this.y + dy * 0.1); if (dx === 0 && Math.abs(dy) <= 80) { this.dead = true; } this.paint(); } } </script></body></html>AI悦创·推出辅导班啦,包含「Python 语言辅导班、C++辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 安排作业 + 我的项目实际等。QQ、微信在线,随时响应!V:Jiabcdefh,公众号:AI悦创 ...

December 31, 2021 · 7 min · jiezi

关于html:商城APP开发主要采用哪些方式

通常手机商城APP定制开发采纳的都是Android原生技术+H5混合技术开发的,为什么要采纳两种语言混合开发?其实就是思考到手机商城APP的一些性能特点,这样就能够充沛的提取两项开发技术中的长处了。商城APP定制开发是一大热门。咱们单干的泛滥我的项目中,商城类软件开发占比达50%以上。利用Android原生技术开发的定制化强的长处,不论是投资者想做一款什么样的商城APP,都能够通过源码开发制作,而且原生技术开发的形式可能保障商城APP的运行速度更快,性能更高一些,同时用户体验度也是十分不错的,然而毛病就是开发成本过高了,而且不同的平台还须要定制不同零碎的APP软件,从耗时以及老本损耗上来说,齐全的原生开发技术个别企业投资者很难承当的起。然而混合了H5技术开发的商城APP,能够解决跨零碎开发的难题,同时无效的升高了开发成本,而因为大多数性能都是原生定制开发的,所以根本的稳定性失去了无效的保障。然而H5开发技术同样存在一些毛病,比如说加载图片速度过慢,当应用商城APP的用户数量过多的话容易造成卡顿的状况等等。所以目前,商城APP定制开发大部分的性能还是采纳原生技术开发,只有局部是采纳H5技术制作的,这样两者联合才会相辅相成,让APP更加稳固无效的运行。

December 28, 2021 · 1 min · jiezi

关于html:css灵感渐变圆角边框

点这里查看原始污浊版内容 应用 clip-path 和 border-image 实现圆角突变边框。border-image 用来指定作为元素四周边框的图像: clip-path CSS 属性能够创立一个只有元素的局部区域能够显示的剪切区域。区域内的局部显示,区域外的暗藏。剪切区域是被援用内嵌的URL定义的门路或者内部 SVG 的门路。 因为应用了 clip-path 裁剪后的元素,只有元素的剪切区域能力被显示,所以咱们能够通过 clip-path: inset() 裁剪出带圆角的矩形元素。 <h1 class="border-image-clip-path"></h1><style>.border-image-clip-path { width: 200px; height: 100px; margin: auto; border: 10px solid; border-image: linear-gradient(45deg, gold, deeppink) 1; clip-path: inset(0px round 10px); animation: huerotate 6s infinite linear; filter: hue-rotate(360deg);}@keyframes huerotate { 0% { filter: hue-rotate(0deg); } 100% { filter: hue-rorate(360deg); }}</style>点这里查看原始污浊版内容

December 21, 2021 · 1 min · jiezi

关于html:DOMParser解析xml字符串

如题,实现如下: var parser = new DOMParser() var result = parser.parseFromString('<?xml version="1.0" encoding="UTF-8"?>' + '<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">' + '<plist version="1.0">' + ' <dict>' + ' <key>frames</key>' + ' <dict>' + ' <key>area_partner_1.png</key>' + ' <dict>' + ' <key>aliases</key>' + ' <array/>' + ' <key>anchor</key>' + ' <string>{0.5,0.5}</string>' + ' <key>spriteOffset</key>' + ' <string>{0,0}</string>' + ' <key>spriteSize</key>' + ' <string>{678,641}</string>' + ' <key>spriteSourceSize</key>' + ' <string>{678,641}</string>' + ' <key>textureRect</key>' + ' <string>{{1,1},{678,641}}</string>' + ' <key>textureRotated</key>' + ' <false/>' + ' </dict>' + ' </dict>' + ' <key>metadata</key>' + ' <dict>' + ' <key>format</key>' + ' <integer>3</integer>' + ' <key>pixelFormat</key>' + ' <string>RGBA8888</string>' + ' <key>premultiplyAlpha</key>' + ' <false/>' + ' <key>realTextureFileName</key>' + ' <string>wqer.png</string>' + ' <key>size</key>' + ' <string>{846,643}</string>' + ' <key>smartupdate</key>' + ' <string>$TexturePacker:SmartUpdate:0d31322d15aeee6aaabcfc82cc4676df:91776dda71b0a5779c04559a94ab5066:01c2a16656db932f59fe35247e90d956$</string>' + ' <key>textureFileName</key>' + ' <string>wqer.png</string>' + ' </dict>' + ' </dict>' + '</plist>', 'application/xml')console.log(result) const keys = result.getElementsByTagName('key') const strings = result.getElementsByTagName('string') ...

December 13, 2021 · 1 min · jiezi

关于html:小程序软件开发商城小程序开发

小程序以 便捷,高效,性价比更高,依靠用户群体,无需下载就能利用的特点占据了软件开发的重点项目,很是火爆。小程序开发简略,开发速度快,开发费用少,又能像APP一样去利用,又不必用户去下载占据手机空间,很不便,商城小程序,小游戏,o2o社区等等,像App一样功能齐全,这就让大部分创业者抉择了小程序开发。商城小程序开发目前有两个支流形式,1、模板开发所谓模板呢,就是小程序开发服务商oneTriste开发一个绝对残缺的零碎,按年卖给您应用,您用账户明码登录零碎当前就能够上传商品等,价格从1千到5千不等。2、定制开发所谓定制开发,就是依照您自身的需要,让oneTriste技术团队开发一个属于您本人的商城小程序零碎。这个模式是依据本人的要求来私人订制的,所以价格也相差很多,几千到几万十几万的都有。小程序相比传统的APP应用程序,真的存在很多劣势,就拿商城小程序应用与商城APP的应用体验比照来说,咱们线上购物在传统的APP上,咱们须要先花2-5分钟去下载商城APP程序,再去注册该商城APP的账号,这个后期过程还是绝对比较复杂。而小程序不同,利用小程序为载体,开发一个商城小程序,这比照APP商城会有很大的劣势,第一商城小程序不须要下载应用程序,间接在微信搜寻商城小程序的名字,就能够触达登录应用商家提供的服务性能,还有就是一个商城小程序的账号注册,能够齐全受权用微信账号登录,能够间接跳过账号注册步骤!小程序的劣势有很多,很多商家都有发现,目前小程序开发的需求量也越来越大,越来越多的人想要制作小程序,可是很多的人并非本人会小程序开发,所以就能够找靠谱的小程序软件开发公司来制作。

December 10, 2021 · 1 min · jiezi

关于html:JavaScript创建按钮实现数字自加1

你好,我是悦创。 最近跆拳道外部较量须要一个较量倒计时和加分扣分的性能。 所以,咱们应用 HTML 先实现。 大抵步骤: 1、写一个 p 标签,指定一个 id 选择器,输出数字! 2、写一个 input 标签,指定type属性的属性值为 button,创立一个按钮,退出 onclick 事件! 3、为 p 标签和 input 标签指定相干的 CSS 款式(能够省略) 4、用 js 创立一个自加的函数,在函数中用 document 对象的 getElementById() 办法,选中 p 标签。 5、通过 innerHTML 获取 p 标签的内容,实现自加!! 实现代码如下: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>自加</title> <style> body { text-align: center; } p,#ipt,#btn { font-size: 50px; } #ipt { width: 100px; margin-bottom: 10px; } #ipt,#btn { height: 100px; padding: 0px 20px; } </style> <script> function numPlus() { var p = document.getElementById('num'); p.innerHTML++; } </script></head><body> <p id="num">1</p> <input type="button" id="btn" value="click +1" onclick="numPlus()" /></body></html>AI悦创·推出辅导班啦,包含「Python 语言辅导班、C++辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 安排作业 + 我的项目实际等。QQ、微信在线,随时响应!V:Jiabcdefh ...

November 29, 2021 · 1 min · jiezi

关于html:关于uView第三方库dropdown遮罩挡住页面不能点击以及引发的页面滚动报warn问题修复

踩坑踩了几个小时,各种百度都没解决,最初无心中解决了。纯正分享一下踩坑经验,不便当前可能有遇到雷同问题的童鞋。。。。。框架是:uniapp+uView应用udropdown下拉菜单组件导致两个问题:第一:他的mask层会挡住页面其余元素,导致点击不了。第二:会导致页面滚动时候报如下谬误:Ignored attempt to cancel a touchmove event with cancelable=false, for example because scrolling is in progress and cannot be interrupted 解决方案:在uView包外面找到:components->u-dropdown->u-dropdown.vue。顺次减少:<view class="u-dropdown" :style="dropDownShow ? '' :'overflow:hidden'"></view>data(){ return{ dropDownShow:false}}open(){ this.dropDownShow = true}close(){ this.dropDownShow = false}

November 26, 2021 · 1 min · jiezi

关于html:HTML溢出文字用省略号代替

一、问题阐明文字太多,溢出局部用省略号示意。 二、解决方案1、单行文本设置上面 css 即可: white-space: nowrap;overflow: hidden;text-overflow: ellipsis;2、多行文本React我的项目中能够应用 react-lines-ellipsis 插件解决,十分不便。 // 1、装置npm install --save react-lines-ellipsis// 2、应用import LinesEllipsis from 'react-lines-ellipsis'<LinesEllipsis text='long long text' maxLine='3' ellipsis='...' trimRight basedOn='letters'/>三、参考文档溢出文字用省略号代替!

November 26, 2021 · 1 min · jiezi

关于html:HTML页面跳转的5中方式

法一:<a/>// target="_blank"示意保留以后页面,用新标签页关上<a href="https://smallpdf.cn" target="_blank" rel="noreferrer">收集优质网站资源</a>法二:window.location.hrefwindow.location.href="https://smallpdf.cn";法三:window.open()// "_blank" 示意保留以后页面,用新标签页关上window.open("https://smallpdf.cn", "_blank");<a>正告信息问题形容<a href="https://smallpdf.cn" target="_blank"/># 下面的写法,会呈现上面的正告信息:warning Using target="_blank" without rel="noreferrer" is a security risk: seehttps://html.spec.whatwg.org/multipage/links.html#link-type-noopener react/jsx-no-target-blank解决方案# 减少属性:rel="noreferrer"<a href="https://smallpdf.cn" target="_blank" rel="noreferrer"/>起因详解当应用target="_blank"关上新标签页时,新页面的window.opener是指向前一个页面,这样就能够管制前一个页面。譬如:当新旧页面在同一个域名下时,在新页面控制台输出 window.opener.alert(1) ,会发现旧页面弹出音讯1 。当新旧页面不在同一个域名时,通过window.opener.location.replace 能够扭转旧页面的url。所以还是加上rel="noreferrer",把opener对象设置为null,以防后患。 相干链接window 对象具体阐明window.opener 对象具体阐明页面跳转传递参数# 传参页面let a = { key:'value'}// 对参数进行序列化let astr = JSOS.stringfy(a);let url = 'https://learn-anything.cn/search?input='+astr;window.open(url);# 承受参数页面:https://learn-anything.cn/search// window.location,存储了本页面相干所有数据let query = window.location.query;# 参数解析形式:const urlTemp = require('url');let parsedUrl = urlTemp.parse(window.location.href, true);let para = parsedUrl.query.astr;# 反序列化失去参数,如果是非序列化参数,无需此步间接应用参数let a = JSON.parse(para);相干链接HTML页面跳转的5中形式!

November 26, 2021 · 1 min · jiezi

关于html:HTML居中代码怎么写

<div>居中 - 法1通过中心点,计算坐标来垂直居中。 <html><head> <style type="text/css"> .content { background-color: rgb(87, 87, 92); position: absolute; /* 程度居中 */ left: 50%; width: 30%; margin-left: -15%; /* 垂直居中 */ top: 50%; height: 30%; margin-top: -15%; } </style></head><body> <div class="content">Content goes here</div></body></html><div>居中 - 法2<html><head> <style type="text/css"> #content { position: absolute; /* 垂直居中 */ top: 0; bottom: 0; height: 50%; /* 程度居中 */ left: 0; right: 0; width: 70%; margin: auto; background-color: red; } </style></head><body> <div id="content"> Content here</div></body></html>垂直居中:vertical-align设置单行或表格单元格内元素,垂直方向上的地位,不能用块级元素。可用属性值:top middle bottom 等,具体阐明. ...

November 26, 2021 · 1 min · jiezi

关于html:html中a标签的安全问题

1、问题形容<a href="https://learn-anything.cn" target="_blank"/># 下面的写法,会呈现上面的正告信息:warning Using target="_blank" without rel="noreferrer" is a security risk: seehttps://html.spec.whatwg.org/multipage/links.html#link-type-noopener react/jsx-no-target-blank2、解决方案# 减少属性:rel="noreferrer"<a href="https://learn-anything.cn" target="_blank" rel="noreferrer"/>3、平安问题阐明应用 target="_blank" 关上新标签页时,新页面的 window.opener 对象指向前一个页面,也就能够管制前一个页面。 当新旧页面在同一个域名下时,在新页面控制台输出 window.opener.alert(1) ,会发现旧页面弹出音讯 1 。当新旧页面不在同一个域名时,通过 window.opener.location.replace 能够扭转旧页面的url。rel="noreferrer" 属性是把 window.opener 对象设置为 null,以防后患。4、相干链接html中标签的平安问题!

November 26, 2021 · 1 min · jiezi

关于html:httplxgongxuanwangcomsszt32htm

急须要一套软件来解决这个问题,而这个时候微服务的概念也缓缓的起来,疾速开发渺小独立的利用也变得很急切。而Spring恰好处在这样一个交叉点上,遴选真题所以趁势而为在2013年初的时候,开始投入Spring Boot我的项目的研发,直到2014年4月,Spring Boot1.0版本公布。从那以后,Spring Boot开启了一些列的迭代和降级的过程。 且也有集体和企业开始尝试应用Spring Boot。 其实直到2016年,Spring Boot才真正在国内被应用起来。遴选真题我之前在挖财的时候,2015年公司就开始采纳Spring Boot来构建基于Dubbo的微服务架构。到当初,Spring Boot简直是所有公司的第一抉择。 咱们来做两个小试验,一个是基于传统的Spring MVC框架构建一个我的项目、另一种是应用Spring Boot。http://lx.gongxuanwang.com/lx...

November 25, 2021 · 1 min · jiezi

关于html:不需要刷新的页面不要把渲染

Page办法从新,把onHide生命周期卸载web-view的代码提取进去,如果有很多的页面须要web-view刷新H5的话,这样会大大节俭咱们的工作量和代码量。 遴选公务员首先咱们须要先定义一下web-view的页面变量及其含意refreshSrc:如果页面的data里定义里这个变量,且用这个变量来渲染web-view,则每次关上页面都须要刷新页面;留神:不须要刷新的页面不要把渲染web-view的src属性定义成该变量名; 敌人间的调侃,本是玩笑,但认真思考,不无道理。正所谓温故而知新,也是咱们程序员的必须课程,不仅仅是学习利用新技术,对本人罕用的老技术也要时长翻看一下,增强记忆,加深了解。起初我还真好好的整顿总结了一下Geometry与BufferGeometry,查漏补缺,也算为时未晚也。 一句话,这两个对象的次要区别:遴选公务员次要在数据结构上,BufferGeometry十分高效,次要是因为数据间接放在一个间断的GPU内存空间中,无效缩小向 GPU 传输上述数据所需的开销,而three.js前期版本中的geometry最终都转化为bufferGeometry,但始终是比bufferGeomerty多了一步,而且还是从CPU的geometry对象传输到GPU的bufferGeometry对象的一个夸硬件传递过程,所以前期也不倡议用geometry了。http://lx.gongxuanwang.com/ss...

November 24, 2021 · 1 min · jiezi

关于html:前端面试题

1.<!DOCTYPE>申明位于文档的最后面,<html>标签之前,用于告知浏览器文旦应用那种HTML或XHTML标准(告知浏览器依照何种标准解析页面) 2.img的alt与title有何异同?strong与em 有何异同:alt:为不能显示图片、窗口、或者applets的用户代理,alt属性用来指定替换文字,替换文字的语言有lang属性指定。title:该属性为设置活该属性的元素提供建议性的信息。strong:粗体强调标签,强调,示意内容的重要性em:斜体强调标签,更强烈强调,示意内容的强调点 3.src与href的区别:src:替换以后元素,指向内部资源的地位,指向的内容将会嵌套到文档中以后标签所在位置,在申请src资源时会将其指向的资源下载并利用到文档内;当浏览器解析到该元素时,会暂停其余资源的下载和解决,直到将该资源加载、编译、执行结束href:用于字以后文档和援用资源之间确立分割,指向网络资源所在位置,建设和以后元素(锚点)或以后文档(链接)之间的链接,应用时,会并行下载资源并且不会进行对以后文档的解决 4.块级元素作用:搭建网页构造特点:独占一行空间,默认宽度100%,高度由子元素或内容决定,能够通过css指定其宽度 5.行内元素:作用:在构造中填充网页内容特点:与其余行内元素共享一行空间,宽高由本身决定,因为不用来搭建网页构造,所以也不须要通过css指定其宽高,行内元素中不能嵌套块级元素 6.http协定(1)http是一种获取网络资源的通信协定,是在web上进行数据交换的根底,申请通常由像浏览器类的接管方发动的;是一种可扩大协定,应用层协定,通过TCP或TLS加密的TCP连贯来发送;HTTP报文分为:申请报文和响应报文。申请报文:客户端想服务端发送申请的信号响应报文:服务端响应解决后回传给客户端的信号 (2)申请报文:由申请行,申请头,空行,申请体四局部组成,空行的作用时进行分隔,必不可少申请行:由申请办法,url和http协定版本3个字段组成,之间用空格分隔,最初以回车和换行符结尾进行内容分隔,示意接下来的内容不是申请行的内容申请办法:类型有:get,post,head,put,delete,options,trace,connect.其中get,post最为罕用。get:通常用于当客户端要从服务端中读取文档时;申请参数和对应的值时跟在url前面,通过问号("?")和add连接符("&")以及"="号连贯。要求服务器将url定位的资源放在响应报文的数据局部,回送给客户端。因为传递的参数和值存在url中,所以get办法申请的http报文时没有申请体的。不利于数据的窃密和平安。浏览器对地址的字符长度有限度,如果传输的叔比拟大,不宜应用get办法。post:补救了get的有余,将要传输的数据封装在报文的申请体中,并对传输的数据大小没有限度,比拟私密和平安head:偶然用到,服务端承受到head申请后只返回响应头,不会发送响应内容,进步了传输效率,当咱们只须要查看某个页面的状态时,应用head是十分无效的。(3)申请头由键/值对组成,每行一对,键和值用冒号":"分隔,申请头高柱服务器所有对于客户端申请的信息(4)申请体申请体蕴含申请数据 7.html5有那些新增个性:(1)语义化标签:article:定义页面独立的内容区域aside:定义页面的侧边栏内容bdi:容许设置一段文本,使其脱离父元素的文本方向设置command:定义命令按钮,比方单选按钮,复选框或按钮details:用于形容文档或文档某个局部的细节dialog:定义对话框,比方提示框summary:标签蕴含details元素的题目figure:规定独立的流内容(图像、图表、照片、代码等等)figcaption:定义figure元素的题目footer:定义section或document的页脚header:定义了文档的头部区域mark:定义带有记号的文本meter:定义度量衡,仅用于已知最大和最小值的度量nav:定义导航链接的局部ruby:定义ruby正文rt:定义字符的解释或者发音rp:在ruby正文中应用,定义不反对ruby元素的浏览器锁显示的内容section:定义文档中的节time:定义日期或工夫 (2)表单控件numberdatetimeemailurlsearch(3)音频和视频audiovideo(4)本地离线存储localStorage:永恒存储会话数据,除非removeItem,否则即便浏览器敞开会话数据也始终存在sessionStorage:长期保留,会话数据值保留到浏览器敞开cookies:可自定义会话数据 的生效工夫,个别默认浏览器敞开之后生效(5)画布canvas:定义图形,比方图表和其余图像,使图形容器,必须应用脚本绘制图形 8.SGML,HTML,XML,XHTML的区别SGML:规范通用标记语言,具备非常复杂的文档构造HTML:超文本标记语言,继承了SGML的很多长处,但HTML使一种界面技术,语法是不可扩大的XML是在html和sgml的根底上诞生的XML应用一个简略而又灵便的规范格局,为基于web的利用提供了一个形容数据和替换数据的无效伎俩。XML是一个SGML子集XHTML:是一种标记语言,体现形式与超文本标记语言相似,不过语法上更加严格,从继承关系上讲,HTML是一种基于规范通用标记语言的利用,是一种非常灵活的置标语言,而XHTML基于可扩大标记语言 9.link和@import的区别:(1)所属范畴:link是html标签,@import是css语法(2)加载程序:页面加载时,link标签引入的css款式同时被加载,@import引入的css款式等页面加载结束之后再加载(3)兼容性:link不存在兼容性问题,@import只反对IE5以上的版本 10.如何解决html5新标签的浏览器兼容问题?(1)应用动态资源的html5shiv包,用script标签引入,载入后初始化新标签的css(2)IE6/IE7/IE8反对通过document.createElement()创立新标签,利用者以个性能够让浏览器反对html5的新标签 11.对html语义化的了解(1)使页面内容结构化,便于浏览器、搜索引擎解析(2)即便没有css款式也能够一种文档格局显示,并容易浏览(3)搜索引擎的爬虫依赖于html标记来确定上下文和各个关键字的权重,有利于所搜引擎优化

November 19, 2021 · 1 min · jiezi

关于html:Week1Introduction-to-HTML5

根底的HTML常识1.首先以<!doctype html>申明结尾如若不以此申明结尾,那么浏览器会以quirky mode解决,对于<!doctype html>doctype与html无论大小写均可,在保障doctype与html之间留有一个空格的前提下,html前面能够打多个空格,演示以下状况:<!DOCTYPE html><!Doctype HTML><!DocType html            >均可 2.次要构造<!doctype html><html><head><meta charset="utf-8"><title> </title></head><body></body></html>上面顺次解释:对于tag,html由tag组成,所有tag均有开始标签,局部以</tag>完结,并非要求所有都有完结标签。首先一个html文档蕴含<head>与<body>,1.<title>与</title>之间能够填充任意字符,示意你网页的名字,即浏览器最上方的网页名字栏显示的内容2.<meta>的charset="utf-8"是指该网页编码为utf-8,对于标签的属性,其属性值是以单引号或者双引号蕴含的3.<body>局部则显示网页的主界面 3.flow 与 phrase次要讲HTML5讲以前的block元素与inline元素归类为flow与phrase,常见的两个代表:<div> 块级元素:每个<div>均会换行<span> 行内元素:元素全副显示在一行内,不换行 留神:在<span>外面蕴含<div>是谬误的,如<span><div></div></span> 4.simantic-elements为了便于人们的了解,许多标签具备simantic的含意,也就是依据标签名能大抵推断标签的作用,比方:<head><body><section><article><footer>等等 5.list想要在网页中显示相似于清单的成果,例如:能够应用<tag>: My typical dinner shopping list: <ul> <li>Milk</li> <li>Donuts</li> <li>Cookies <ul> <li>Chocolate</li> <li>Sugar</li> <li>Peanut Butter</li> </ul> </li> <li>Pepto Bismol</li> </ul>以<ul>开启一个清单,其中的子项是<li>形容,清单能够嵌套清单除了应用<ul>与<li>外,还能够应用<ol>与<li> <ol> <li>Open box</li> <li>Take out cookie</li> <li>Make a Double Oreo <ol> <li>Peel off the top part</li> <li>Place another cookie in the middle</li> <li>Put back the top part</li> </ol> </li> <li>Enjoy!</li> </ol><ol>,<li>则有主动排序编号的成果 ...

November 18, 2021 · 1 min · jiezi

关于html:取出cookie中的值得逗号等字符转换

设置cookie:获取cookie: setCookie(name, value) { console.log(name, value); const Days = 3000; const exp = new Date(); exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000); document.cookie = name + '=' + escape(value) + ';expires=' + exp.toUTCString(); } getCookie(name) { console.log(name); const strCookie = document.cookie; const arrCookie = strCookie.split(';'); // tslint:disable-next-line:prefer-for-of for (let i = 0; i < arrCookie.length; i++) { const arr = arrCookie[i].split('='); console.log(arr); if (arr[0].trim() === name) { console.log(arr[1]); return arr[1]; } } return ''; }cookie存储不反对逗号等获取cookie解决 const arr = str.split('%2C'); // %2C 对应的是 ASCII 字符“,”(英文逗号) ...

November 16, 2021 · 1 min · jiezi

关于html:使用flex布局解决经典布局中overflow必须设置高度才能滚动问题

本文旨在解决经典布局计划中,左侧菜单栏膨胀,主页面无奈追随变动,右侧内容界面须要设置高度能力滚动问题如下图: 若要实现下图所示,咱们都会应用 “定位” 形式实现。当顶部高度变动,就须要咱们调整内容高度。左侧栏变动就须要调整右侧宽度等。 现在: 咱们能够应用flex办法实现这种布局计划,且无需应用定位形式,所有布局都是一边调整,另一边跟着一起变动,无需通过任何js实现, 更不须要设置高度。话不多说间接上代码:以下代码间接新建一个html文件,粘贴进去就能够看到实际效果。 <!DOCTYPE html><html lang="zh"><head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1,user-scalable=no"> <meta charset="UTF-8"> <title>经典布局</title></head><!-- 本文重点: flex-shrink为0示意不会被压缩,配合上height为0,flex为1一起就示意永远会占满剩下的区域,不会超出也不会被压缩 --><style> body, html { margin: 0; box-sizing: border-box; } .container { height: 100vh; width: 100vw; display: flex; /* 垂直布局 */ flex-direction: column; } .header { height: 50px; width: 100%; background: #929292; } .context { flex: 1; /* 第一种: 设置flex-shrink为0,设置height为0 */ /* 第二种: 设置overflow: scroll */ flex-shrink: 0; height: 0; /*overflow: scroll;*/ width: 100%; display: flex; } .aside { height: 100%; width: 200px; overflow: auto; } .menu { height: 100px; background: #ccc; border: 5px solid #ddd; } .main { flex: 1; /* 形式一 设置flex-shrink为0,设置width为0 */ /* 形式二 设置overflow: scroll */ flex-shrink: 0; width: 0; /*overflow: scroll;*/ display: flex; flex-direction: column; } .breadcrumb { height: 50px; padding: 10px 50px; } .myapp { flex: 1; overflow: auto; } .page { width: 2000px; height: 2000px; padding: 10px; border: 5px dashed gray; }</style><body> <div class="container"> <div class="header">顶部菜单</div> <div class="context"> <div class="aside"> <div class="menu">菜单1</div> <div class="menu">菜单2</div> <div class="menu">菜单3</div> <div class="menu">菜单4</div> <div class="menu">菜单5</div> <div class="menu">菜单6</div> </div> <div class="main"> <div class="breadcrumb">面包屑/标题栏</div> <div class="myapp"> <div class="page">可随便拖动的内容区域</div> </div> </div> </div> </div></body></html>下面的布局计划次要是要了解flex-shrink为0示意不会被压缩,配合上height为0,flex为1一起就示意永远会占满剩下的区域,不会超出也不会被压缩。这样不必应用定位形式能够轻松实现这种布局,当然也能够用在挪动端,例如当初的饿了么,美团外卖等这种类型的布局,间接能够通过下面代码实现。 ...

November 11, 2021 · 1 min · jiezi

关于html:在js中修改htmlbody的样式

一、原始定义先在css中定义:body, html 宽高为300px body, html { width: 300px; height: 300px;} 二、js操作,以批改宽度为例// 获取body、html节点style(次要是这里html,一开始不分明获取形式)let bodyStyle = document.body.stylelet htmlStyle = document.getElementsByTagName('html')[0].style// 获取浏览器的宽度,width 也能够设置为任意值let width = document.documentElement.clientWidth || document.body.clientWidth// 重置body宽度bodyStyle.width = `${width}px`// 重置html宽度htmlStyle.width = `${width}px`// 或者其余款式的批改,如:htmlStyle['min-width'] = `${width}px`三、成果:宽度已被批改

November 9, 2021 · 1 min · jiezi

关于html:如何通过centos设置强口令避免弱口令

设置一个简单的口令,能够无效的晋升零碎的安全性。一篇短文通知你centos如何设置强口令,防止弱口令! 学等保测评入门必学centos操作系统的配置常用命令。 一、试验环境 centos7虚拟机 / rhel7 二、波及文件 /etc/pam.d/system-auth 三、示例文件内容 四、配置内容 在System-auth文件的password模块的第一句前减少此行 password requisite pam_cracklib.so minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 五、验证后果 间断尝试屡次,发现只有新口令中没有蕴含大小写字符、数字和特殊字符,口令均设置失败。 *本文章仅供技术交换分享,请勿做未受权守法攻打,雨笋教育不负任何责任。具体请参考《网络安全法》。 15号等保测评线下班行将开班,有趣味的能够学习

November 9, 2021 · 1 min · jiezi

关于html:网页游戏介绍

WebGame(网页游戏)[1]又称无端网游,中文也简称页游,是基于Web浏览器的网络在线多人互动游戏,无需下载客户端,关上网页只用浏览器就能玩的网络游戏。尤其适宜下班一族,只有几分钟的设定,游戏内的主动成长性能即可关掉电脑称心如意的去做工作;如果想随时理解游戏内的状况,还有短信揭示性能。 上世纪90年代,程序员们就曾饶有兴致地用HTML编写简略网页,但过后简略的界面和交互伎俩瘠薄,玩家与游戏的每次交互都会引起浏览器刷屏一次,技术局限令网页游戏变成了过眼云烟。但网页游戏并没有因而而被宣判死刑。 最早的MUD游戏,所展示给用户的是一个残缺的社会背景,玩家在外面所重要的是“表演”,你能够是名满江湖的剑客,也能够是个劫富济贫的女侠,或者是个疾恶如仇的捕快,甚至是个特立独行的桑皮飞贼。用户能够依照本人的志愿融入这个曾经成型的背景中去,这一点和欧美游戏始终强调的rp(role playing)一模一样,玩家在这种行为过程中,彼此之间所展示的更多是本人所表演角色的性情。web网游和当初市面上越来越精美的MMORPG能够说是走了

November 2, 2021 · 1 min · jiezi

关于html:用组策略禁止网页游戏

办法一:利用IE浏览器的 受限制区域实用:已做软件限度策略,只容许应用IE浏览器。 第一步:考察你要禁用的站点所应用的IP和域名。        这个简略,PING一下,如果PING不通的话,用NSLOOKUP        例如以HP91平台为例。 第二步:将站点退出“受限制的站点”        关上组策略编辑器(gpedit.msc)。开展如下:        用户配置——WINDOWS配置——Internet Explorer保护——平安        关上“平安区域和内容分级”,再抉择“导入以后平安区域和隐衷设置”,抉择修   设置——受限制站点,再抉择站点>>>输出你要禁用的站点的URL和IP,例如要禁用Qzone。能够输出以下:.qzone.qq.com(留神要在后面增加“”号,以代表全副),而后再增加121.14.91.148,增加结束后确定。 第三步,设置受限制的站点的安全级别        组策略开展如下:        用户配置——治理模板——WINDOWS组件——Internet Explorer——Internet控制面板——平安页。       关上“受限制的站点区域模板”策略。已启用,并将受限制的站点,设为“高”,利用,确定。 第四步:禁止应用IE平安页。避免客户通过将qzone的网站增加到“受信赖的区域”里。所以最好禁用掉IE平安页组策略地位: 为了避免有人通过更改代理,能够联合公司策略,禁止更改IE代理设置,并利用到特定的用户组里。能够非常灵活的实现禁止网页游戏的性能。禁止更改代理设置:组策略地位如下:用户配置——治理模板——Internet Explorer ——禁止更改代理设置 测试后果如下:关上百度: 关上Qzone,尽管能关上网站,但一片空白,我看你怎么玩。右下角还有个受限制的图标。 测试后果:胜利!

November 2, 2021 · 1 min · jiezi

关于html:从网页游戏分析技术市场

挪动技术--从网页游戏谈起近两年来,尤其是近一年来,国内外网页游戏凌空入世,岂但让传统的游戏厂商大跌眼镜,而且吸引了泛滥的玩家。那么,网页游戏的衰亡起因是什么?网页游戏对系统的要求是什么?它的桑皮市场何在?它的发展前景如何?让咱们一起来看看.*这里的网页游戏不蕴含在网页上运行的flash小游戏,能够算是指网页上的大游戏吧。8- )网页游戏的衰亡和现状:网页游戏的技术/市场剖析:说起当初的网页游戏,必须先说说RIA(Rich Internet Application)和Web 2.0, 正是这些技术的倒退才使浏览器这个广泛应用的平台具备了丰盛的显示内容,和交互成果。目前在网页游戏中应用的技术次要有:Java script, cgi, flash, ajax, 他们的共同之处是通过网页与服务器交互通信,部分更新网页内容。目前的次要限度有: 游戏的管制办法无限,次要是网页事实键盘,鼠标的响应游戏响应速度受网络状况制约。若须要与服务器交互,网络通信工夫是游戏设计时该当思考的因数游戏界面以2D为主,不足3D的技术支持其中ajax因为google等公司的大力推广,因该市目前最风行的web2.0技术。咱们就通过它来看看webgame的技术特点:AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),其技术长处是能在不更新整个页面的前提下更新保护数据。这是的网页所要传输的数据量大大减少。在网页客户 端采纳Java Script技术解决解决服务器端的响应,再通过soap德xml网页服务借口向服务器发送器申请,传递数据。其对浏览器的要求仅仅为java script和xml。在网络游戏凋谢中,面临的次要问题有:1。浏览器的兼容性;2。因为数据/逻辑散布在服务器,客户端两局部,数据逻辑解决方面容易造成凌乱。从市场角度来看:1。 网页游戏面对客户次要是下班白领(60.39%)和学生群体(32.63%),2。 网页游戏是一个低门槛的、能够迅速胜利的路线, 它的卖点是翻新,创意和对客户需要。网页游戏--“富人也能做得起的网络游戏"3.  对用户来说,webgame也有先天的劣势,“无需下载任何货色,无老本、无期待”的游戏,不须要买光盘,无需下载,不须要特定机器,只有能上网,游戏世界就在你的指尖 8- ) 4。 用户忠诚度高:这里拷贝一段文章:“媒体报道,据美国市场钻研机构Parks Associates近日颁布的一份报告称,只管网络视频和社交网站十分风行,但网络游戏依然是美国网 民最青睐的娱乐形式。据数据显示,34%的美国成年网民每周都会玩网络游戏,而观看 YouTube等视频网站的比例为29%,拜访MySpace和Facebook等社交网站的比例为19%。独一无二,在国内,同样是猫扑的产品,《猫游 记》的知名度和黏人水平超过了它的视频网站。能够说,许多所谓的Web2.0,在吸引和黏住网民方面远不如网页游戏。话也可反过来说,那就是,网页游戏是 web2.0的最佳实际(best practice)之一。中国的状况和欧美不一样,互联网被当作一个微小的娱乐平台,所以这更具备实际指导意义。那些 扭捏作态、从国外拷贝模式的所谓web2.0网站,还不如立即放弃,直奔网页游戏而去。从赢利形式来看,网页游戏也比web2.0可操作的空间大。进退都 不便。进,能够道具免费或者会员免费,间接有现金流入;退,能够在游戏里放广告,而且广告模式多样化,能在游戏中深度嵌入广告。能够说,就赢利能力而言, 好的网页游戏比个别Web2.0网站要强得多。还是那句老话:当初所缺的,就是好游戏。 "

November 2, 2021 · 1 min · jiezi

关于html:Apache网页优化压缩

Apache网页与平安优化Apache网页优化1.网页压缩2.网页缓存 Apache平安优化1.配置防盗链2.暗藏版本信息 Apache网页优化概述1.在企业中,部署Apache后只采纳默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置曾经不实用当今互联网时代2.为了适应企业需要,就须要思考如何晋升Apache的性能与稳定性,这就是Apache优化的内容3.优化内容配置网页压缩性能工作模式的抉择与参数优化配置防盗链配置暗藏版本号 gzip介绍配置Apache的网页压缩性能,是应用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器作用:1.升高了网络传输的字节数,放慢网页加载的速度2.节俭流量,改善用户的浏览体验3.gzip与搜寻弓|擎的抓取工具有着更好的关系 Apache的压缩模块Apache实现网页压缩的功能模块包含:1.mod_gzip模块2.mod_deflate 模块 Apache 1.x .1.没有内建网页压缩技术,但可应用第三方mod_ Apache 2.x1.在开发的时候,内建了mod_deflate 这个模块,取代mod_gzip mod_ gzip 模块与mod_deflate 模块:1.两者均应用gzip压缩算法,运作原理相似2.mod_deflate 压缩速度略快,而mod_gzip 的压缩比略高3.mod_gzip 对服务器CPU的占用要高一些4.高流量的服务器,应用mod_deflate 可能会比mod_gzip 加载速度更快 配置网页压缩性能首先查看是否装置了mod_ deflate模块:1.执行apachectl -t -D DUMP_ MODULES命令2.如果输入中没有deflate_ module (static),阐明编译时没有装置mod_ deflate模块 若没有装置则要从新编译装置皮贼:1…/configure --enable-deflate…2.make && make install 在配置httpd.conf中配置开启gzip性能:1.AddOutputFilterByType DEFL ATE text/html text/plain text/csstext/xml textjavascript2.DeflateCompressionL evel3.SetOutputFilter DEFL .ATE 第一行代表对什么样的内容启用gzip压缩第二行代表压缩级别第三行代表启用deflate模块对本站点的输入进行gzip压缩Demo:压缩[root@localhost ~]# mkdir /aaa[root@localhost ~]# mount.cifs //192.168.10.12/rpm /aaaPassword for root@//192.168.10.12/rpm: [root@localhost ~]# cd /aaa[root@localhost aaa]# lsLAMP[root@localhost aaa]# cd LAMP/[root@localhost LAMP]# lsapr-1.6.2.tar.gz error.pngapr-util-1.6.0.tar.gz ha.jpgawstats-7.6.tar.gz httpd-2.4.29.tar.bz2cronolog-1.6.2-14.el7.x86_64.rpm mysql-5.6.26.tar.gzDiscuz_X2.5_SC_UTF8.zip php-5.6.11.tar.bz2[root@localhost LAMP]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt[root@localhost LAMP]# tar zxvf apr-1.6.2.tar.gz -C /opt/[root@localhost LAMP]# tar zxvf apr-util-1.6.0.tar.gz -C /opt[root@localhost LAMP]# cd /opt/[root@localhost opt]# lsapr-1.6.2 apr-util-1.6.0 httpd-2.4.29 rh[root@localhost opt]# mv apr-1.6.2/ httpd-2.4.29/srclib/apr[root@localhost opt]# mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util[root@localhost opt]# yum install gcc gcc-c++ pcre pcre-devel zlib-devel expat-devel -y ...

November 2, 2021 · 2 min · jiezi

关于html:静态网页和动态网页

动态网页与动静网页的区别在于Web服务器对它解决形式不同。理解这种区别对于ASP概念的了解至关重要。 1、动态网页 动态网页是规范的HTML文件,其文件扩展名是.htm或.html。它能够蕴含HTML标记、文本、Jave小程序、客户端脚本以及客户端 ActiveX控件,但这种网页不蕴含任何服务器端脚本,该页中的每一行HTML代码都是在搁置到Web服务器前由网页设计人员编写的,在搁置到Web服 务器后便不再产生任何更改,所以称之为动态网页。 动态网页的解决流程如下图:   步骤1:Web浏览器申请动态网页。 步骤2:Web服务器查找动态网页。 步骤3:Web服务器将动态网页发送到请示浏览器。 当用户单击Web页上的某个链接、或在浏览器中抉择一个书签、或在浏览器的“地址”框中输出一个URL地址并单击“转到”时,浏览器向Web服务器发送一个页申请。 Web服务器收到该申请,通过文件扩展名(.htm或html)判断出是HTML文件申请,并从磁盘或存储器中获取适当的HTML文件。 Web服务器将HTML文件发送到浏览器,由浏览器对该HTML文件进行解释,并将结果显示在浏览器窗口中。 2、动静网页 动静网页与动态网页之间的区别在于:动静网页中的某些脚本只能在Web服务器上运行,而动态网页中的任何脚本都不能在Web服务上运行。当Web服 务器接管到对动态网页的申请时,服务器将该页发送到申请浏览器,而不进一步的解决。当Web服务器接管到对动静网页的申请时,它将做出不同的反映:它将该 页传递给一个称为应用程序服务器的非凡软件扩大,而后由这个软件负责实现页。应用服务软件与Web服务器软件一并装置、运行在同一台计算机上。  步骤1:Web浏览器申请动静网页。 步骤2:Web服务器查找该页并将其传递给应用程序服务器。 步骤3:应用程序服务器查找该页中的脚本命令并实现页。 步骤4:应用程序服务器将实现的页传递回Web服务器。 步骤5:Web服务器将实现的页发送到申请浏览器。 当用户单击Web页上的某个链接、在浏览器中抉择一个书签、或在浏览器的“地址”框中输出一个URL地址并单击“转到”时,浏览器向Web服务器发送一个页面申请。 Web服务器收到该申请,通过文件扩展名(.asp)判断出是动静网页文件申请,并凑百从磁盘或存储器中获取适当页而后将该页传递给相应的应用程序服务器。 应用程序服务器查找该页中的脚本命令,并通过在服务器上执行这些脚本命令最终实现页,而后将脚本程序代码从页上删除,由此失去的后果是一个动态网页。 应用程序服务器将所生成的页传递回Web服务器。 Web服务器将该页发送到浏览器,当该页达到客户端计算机时,所蕴含的全部内容都是纯HTML代码,由Web浏览器对这些HTML代码进行解释,并将结果显示在浏览器窗口中。

November 2, 2021 · 1 min · jiezi

关于html:如何高效高质画页面

前沿目前因各大UI框架的推出,前端画页面就如搭积木一样简略,然而一些我的项目比拟小或是其余起因,并不需要加载大体积的UI框架,所以还是有须要从0开始画页面的需要,接下来分享一下我是如何画页面的 理解设计咱们画页面其实是实现设计师想法的过程,设计师是对整个页面UI逻辑最分明的人,所以咱们须要有设计师的思维能力更好的实现页面。 什么是Atomic Design 原子设计原子设计是一种基于网络设计零碎思维形式的规范性准则。咱们就称它为设计零碎的根底领导实践。分为5个档次 原子是咱们设计中最为根底元素,能够是一种字体,一个色板,一组图标或者一个矩形。把几个原子组合形成一个分子,比方黑体字、矩形、16号字、蓝色、红色、形成一个按钮。几个分子形成一个组织,咱们也能够称为组件。组件形成页面框架,最初生成页面。 当扭转原子时,整个体系都会产生变动,同时咱们也能够逐级调整,总之你的每次扭转都会影响到这个零碎,然而它又是放弃一致性的。 设计师是如何遵循原子设计的 设计师首先会定义一个这个的原子面板,定义我的项目应用的色彩,字号,间距,暗影,圆角等而后再依据这个原子去定义组件,再用组件定义模块,模块再组成一个个的页面。 开发应如何遵循原子设计首先是开发为什么也要遵循原子设计呢?试想一下当某一天领导说感觉整个页面的间距太大了,那设计师能够通过批改原子里的间距,一键就把所有页面相应的间距给批改了。如果咱们没有遵循原子设计去写代码,那咱们得一个个找到相应的间距的中央去批改。那开发怎么遵循原子设计呢?话不多说,间接上代码 定义原子变量一一对应设计稿里的原子 // variable.css--brand-primary: #147BD1;--brand-danger: #D11429;--brand-success: #6DC41F;原子化css // common.css.text-primay {color: var(--brand-primary)}.text-danger {color: var(--brand-danger)}.text-success {color: var(--brand-success)}如果是用的scss或者less等动静css语言,还能够应用循环生存 // backgrounds@each $key, $value in $color-status { .bg-#{$key} { background-color: nth($value, 1); }}在其余css类里应用 .title { color: var(--brand-primary)}在页面上应用 <p class="text-primary">主色文字</p>剖析设计稿兼容的浏览器、适配要求不同的兼容要求,跟适配要求会对你抉择的相干技术有影响,比方 flex布局 如果在ie9下就不兼容 设计稿的一致性剖析设计稿是否遵循了原子设计及一致性 开发布局分为3种布局固定布局: 实用于网页内容不受屏幕大小影响 .container { width: 1200px;}流体布局:实用于网页内容需依据屏幕大小等比缩放 .container { width: 100%; // width: 100vw;}响应式布局: 实用于不同屏幕下,网页内容排版不一样 .container { width: 1200px;}@media screen and (min-width: 768px) { width: 100%}适配排版须要适配可采纳响应式布局内容须要等比缩放适配的采纳流体布局响应式布局 + 流体布局 = 栅格零碎html标签标签语义化 a. 在没有CSS的状况下,页面也能呈现出很好地内容构造 b. 有利于SEO c. 更具可读性html元素周期表 ...

November 1, 2021 · 1 min · jiezi

关于html:一种新的table表格线实现方式

<!DOCTYPE html><html><body> <table width="200" height="200" bgcolor="#888"> <tr bgcolor="#FFFFFF"> <td> </td> <td> </td> </tr> <tr bgcolor="#FFFFFF"> <td> </td> <td> </td> </tr> </table> 2222222 <table width="200" height="200" border="0" cellspacing="1" cellpadding="0" bgcolor="#888"> <tr bgcolor="#FFFFFF"> <td> </td> <td> </td> </tr> <tr bgcolor="#FFFFFF"> <td> </td> <td> </td> </tr> </table></html>

October 30, 2021 · 1 min · jiezi

关于html:对象脱敏小帮手

用于将对象进行数据脱敏的繁难小帮手 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script> <title>Document</title> <style> textarea { width: 100%; height: 300px; } </style></head><body> <div id="box"> <div> <span>须要替换的字段:</span> <button v-on:click="add">+</button> <button v-on:click="del">-</button> <span>eg:[a,3],{a:1}=>{a:3}</span> <div v-for="item in fieldNames" :key="item.id"> <input v-model="item.fieldName" /> : <input style="margin-top:5px" v-model="item.value" /> </div> </div> <div> <div> <span>脱敏前:</span> <textarea v-model="sourceData"></textarea> </div> <div> <span>脱敏后:</span> <textarea v-model="targetData"></textarea> </div> <div> <button v-on:click="handleData">脱敏</button> </div> </div> </div></body><script> function guid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); }; var vue = new Vue({ el: "#box", data: { fieldNames: [], sourceData: ``, targetData: `` }, methods: { add: function () { let obj = { id: guid(), fieldName: "", value: "", }; this.fieldNames.push(obj); }, del: function () { this.fieldNames.pop(); }, handleData: function () { let temp = this.sourceData; this.fieldNames.forEach(item => { const { fieldName, value } = item; if (fieldName != "" && fieldName != null) { let regx = eval('/(' + fieldName + ':[^,]*)(,|})/g'); temp = temp.replace(regx, `${fieldName}:${value}$2`) } }) this.targetData = temp; } } })</script></html>操作方法: ...

October 29, 2021 · 1 min · jiezi

关于html:JavaScript的诞生及涉及缺陷

1995年,布兰登艾克在网景公司为浏览器开发了JS性能(设计工夫为10天),是与Java搭配应用的辅助脚本语言并且语法上有些相似的,可能使得非专业的网页作者也能很快上手。JS最后的命名为:Mocha,于95年底改名为LiveScript,同年12月,Netscape Navigator 2.0 Beta 3中部署时被重命名JavaScript,过后网景公司与昇阳电脑公司组成的开发联盟为了让这门语言搭上Java这个编程语言“热词”,因而将其长期改名为JavaScript,日后这成为公众对这门语言有诸多误会的起因之一。 1996年11月,网景公司向ECMA提交了语言规范,因为版权问题,JS的语言规范叫做ECMAScript。俗称ES。他打击了1996年8月微软公布的IE3中的JScript。 一般来说,残缺的JavaScript包含以下几个局部: ECMAScript,形容了该语言的语法和根本对象ECMAScript于1997年6月诞生了第一版。1999年12月诞生了第三版(IE6最风行的版本)第四版流产2009年2月公布了第五版2015年6月公布了第六版尔后的每一年都公布一个新版本,并且以年份命名版本号文档对象模型(DOM),形容解决网页内容的办法和接口浏览器对象模型(BOM),形容与浏览器进行交互的办法和接口JavaScript的根本特点如下: 是一种解释性脚本语言(代码不进行预编译)。次要用来向HTML页面增加交互行为。能够间接嵌入HTML页面,但写成独自的js文件有利于构造和行为的拆散。JavaScript罕用来实现以下工作: 嵌入动静文本于HTML页面对浏览器事件作出响应读写HTML元素在数据被提交到服务器之前验证数据检测访客的浏览器信息管制cookies,包含创立和批改等。 JS的设计缺点缺点产生的起因: 设计阶段过于仓促JavaScript的设计只用了十天。 另一方面,这种语言的设计初衷,是为了解决一些简略的网页互动(比方,查看"用户名"是否填写),并没有思考简单利用的须要。 没有先例Javascript同时联合了函数式编程和面向对象编程的特点,这很可能是历史上的第一例。而且直到明天为止,Javascript依然是世界上惟一应用Prototype继承模型的次要语言。这使得它没有设计先例能够参考。 过早的标准化Javascript的倒退十分快,基本没有工夫调整设计。 1995年5月,设计方案定稿;10月,解释器开发胜利;12月,向市场推出,立即被宽泛承受,全世界的用户大量应用。Javascript不足一个从小到大、缓缓积攒用户的过程,而是间断的爆炸式扩散增长。大量的既成网页和业余网页设计者的参加,使得调整语言规格困难重重。更糟的是,Javascript的规格还没来及调整,就固化了。 1996年8月,微软公司强势染指,发表推出本人的脚本语言Jscript;11月,为了压抑微软,网景公司决定申请JavaScript的国际标准;1997年6月,第一个国际标准ECMA-262正式颁布。设计缺点还没有充沛裸露就成了规范。

October 27, 2021 · 1 min · jiezi

关于html:怎样下载网站上的视频

1、首先找到视频链接,谷歌浏览器右击鼠标,抉择“查看”选项(图一),此时电脑会弹出开发者工具(图二),点击红框中的图标,而后去找视频对应地位,找到后单击,会找到视频对应链接(图三)。 2、把链接放到a标签内的 href 属性里,标签内填写对应的视频题目 <a target="blank" href="https://xxx.com"> 中级实务--第一章 总论</a>3、在浏览器查看html文件,右击要下载的视频,抉择“链接存储为”选项,就能够下载了。

October 20, 2021 · 1 min · jiezi

关于html:css-实现头部底部中间三栏布局

实现 1. flex 布局flex 弹性布局,更灵便的去实现多种形式的布局,目前在挪动端、pc端都有较大的利用,有余ie反对10+1.1 html<div class="content"> <div class="header">Header</div> <div class="main"> <div class="left">Left</div> <div class="center">Center</div> <div class="right">Right</div> </div> <div class="footer">Footer</div></div>1.2 css.content div { display: flex;}.header,.footer { height: 60px; background: #b2bec3;}.main { /*Firefox*/ min-height: -moz-calc(100vh - 150px); /*chrome safari*/ min-height: -webkit-calc(100vh - 150px); /*Standard */ min-height: calc(100vh - 150px); align-items: flex-start;}.main .left,.main .right { width: 200px; background: #dfe6e9;}.main .center { background: #dfe6e9; margin: 0 20px; flex-grow: 1;}.footer { margin-top: 30px;}1.2.1 flex-grow 实现center自适应flex 布局实现两头局部的三栏布局grow属性定义我的项目的放大比例,默认为0,存在残余不放大(left、center),center为1,也就是main局部,除了left right后均为center局部1.2.2 calc 、vh 实现footer居底mian 局部应用calc动静计算最小高度,使得main最小高度为 视图高度 - (header+footer)vh 绝对于视口的高度。视口被均分为100单位的vh1.3 兼容性通过代码咱们能看到,这里次要用了flex布局及calc,vh,总的来说如果不要兼容ie9及以下,采纳flex是比拟适宜的布局,较少的代码就能够实现咱们想要的布局形式flex calcvh1.4 残缺代码https://codepen.io/xiaofute/p... ...

October 19, 2021 · 1 min · jiezi

关于html:前端-策略模式

策略模式策略模式就是将一系列算法封装起来,并使它们相互之间能够替换。被封装起来的算法具备独立性,内部不可扭转其个性。简略了解就是把 if 分支用函数封装成一个个代码块,对办法进行形象,便于后续代码的保护,体高代码复用率,较少代码冗余,毛病就是对于其余没有参加封装的其余开发者来说,他们并不知道有哪些办法能够应用,如果不去浏览这些算法,很容易走回以前的老套路或者反复封装,毛病就是不够直观易懂 对于前端来说策略模式实现的两个步骤实现形象的办法把 if else 不必分支解决的事件形象成一个个不同、独立办法 实现对外的接口提供给内部调用的一个接口,依据内部给的不同的条件,进行不同的逻辑解决,找到对应的形象的办法 表单验证例子开发一个用户注册页面,其中表单蕴含了用户名、明码、确认明码以及手机号码,要求所有数据都不为空,明码至多6位,确认明码必须与明码相等。 筹备工作,先把html和css写好 <style>.flex { display: flex; justify-content: space-between; width: 300px; margin: 10px;}</style><form action="" id="form"> <div class="flex">姓名:<input type="text" id="username" /></div> <div class="flex">明码:<input type="password" id="password1" /></div> <div class="flex">确认明码:<input type="password" id="password2" /></div> <div class="flex">手机号:<input type="text" id="phone" /></div> <div class="flex"><input type="submit" value="提交" /></div></form>间接做表单验证: var formData = document.getElementById('form')formData.onsubmit = function () { var name = this.username.value var pwd1 = this.password1.value var pwd2 = this.password2.value var tel = this.phone.value if (name.replace(/(^\s*)|(\s*$)/g, '') === '') { alert('用户名不能为空') return false } if (pwd1.replace(/(^\s*)|(\s*$)/g, '') === '') { alert('明码不能为空') return false } if (pwd2.replace(/(^\s*)|(\s*$)/g, '') === '') { alert('确认明码不能为空') return false } if (pwd2 !== pwd1) { alert('确认明码与原明码不雷同!') return false } if (tel.replace(/(^\s*)|(\s*$)/g, '') === '') { alert('手机号码不能为空') return false } if (!/^1[3,4,5,7,8,9][0-9]\d{8}$/.test(tel)) { alert('手机号码格局不正确') return false } alert('注册胜利')}间接做表单验证整个逻辑对于老手来说会很直观,没那么多弯弯绕绕的,然而毛病也显著,4个表单数据,就用了6个if去判断,如果这个页面不是用户注册,而是某个治理页面中的表单,蕴含了十多个表单数据呢,那只会更多。须要验证的越多,代码就会越来越臃肿,当须要进行很多验证的时候,能够思考策略模式 ...

October 8, 2021 · 2 min · jiezi

关于html:IoT-Studio可视化搭建平台编辑历史功能的思考与探索

简介: 在前端可视化搭建畛域中“重做”和“撤销”这两个性能曾经是标配中的标配,毕竟只有有用户行为的中央就可能会有出错,这两个性能无疑就是为用户提供了“后悔药”。目前有各种各样的可视化搭建平台,本文介绍IoT Studio可视化搭建平台在编辑历史性能上的设计与思考。 作者 | 远坂起源 | 阿里技术公众号 一 背景在前端可视化搭建畛域中“重做”和“撤销”这两个性能曾经是标配中的标配,毕竟只有有用户行为的中央就可能会有出错,这两个性能无疑就是为用户提供了“后悔药”。目前有各种各样的可视化搭建平台,本文介绍IoT Studio可视化搭建平台在编辑历史性能上的设计与思考。 二 实现思路1 页面DSL的保护在IoT Studio可视化搭建平台中,咱们通过页面的形象语法树来保护页面状态,页面信息和组件信息都记录在对应节点上: PageNode: { componentName: 'page1', id: 'page1', props: {}, children: [ ComponentNode: { componentName: 'component1', id: 'component1', props: { width: 800, height: 1000, color: '#ffffff' }, children: [] }, ComponentNode: { componentName: 'component2', id: 'component2', props: {}, children: [] }, ComponentNode: { componentName: 'component3', id: 'component3', props: {}, children: [] }, ]}在页面保留时,页面配置会作为JSON文件上传至OSS。 2 重做与撤销快照法 ...

October 8, 2021 · 2 min · jiezi

关于html:前端一些算法amp日常实践

前端拖拽<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> body{ margin:0; padding:0; } .box{ background-color: aquamarine; width: 100px; height: 100px; position: absolute; top:0; left:0; cursor: move; } </style></head><body> <div class="box" id='box'> </div></body><script> // 鼠标挪动过快,鼠标会脱离拖拽的盒子,在盒子里面鼠标挪动无奈触发盒子的mousemove,盒子不会挪动, let dom = document.getElementById('box') console.log('dom',dom); dom.addEventListener('mousedown', down) function down(e){ this.initialScreenX = e.screenX; this.initialScreenY = e.screenY; this.CLickX = e.clientX; this.ClickY = e.clientY; this.BoxX = this.offsetLeft; this.BoxY = this.offsetTop; this._MOVE = move.bind(this) this._UP = up.bind(this); document.addEventListener('mousemove', this._MOVE); document.addEventListener('mouseup', this._UP); // this.setCapture(); } function move (e){ let curBoxX = e.clientX - this.CLickX + this.BoxX; let curBoxY = e.clientY - this.ClickY + this.BoxY; if(curBoxX < 0){ curBoxX = 0 } if(curBoxY < 0){ curBoxY = 0 } dom.style.left = curBoxX + 'px'; dom.style.top = curBoxY + 'px'; } function up(e){ document.removeEventListener('mousemove', dom._MOVE) document.removeEventListener('mouseup', dom._UP) // this.releaseCapture(); }</script></html>大数相加function add(str1,str2){ let num1 = str1.split('').reverse(); let num2 = str2.split('').reverse(); console.log(num1, num2) let nextNum = 0; let total = []; for(let i = 0;i < num2.length;i++){ let curNum = 0; if(num1[i]){ curNum = Number(num1[i]) + Number(num2[i]) + Number(nextNum); if(curNum >= 10){ nextNum = String(curNum)[0]; total.push(String(curNum)[1]); } else { nextNum = 0; total.push(curNum) } } else { curNum = Number(num2[i]) + nextNum; if(curNum >= 10){ nextNum = String(curNum)[0]; total.push(String(curNum)[1]); } else { nextNum = 0 total.push(curNum) } } } return total.reverse().join('');}let d = add( "123456789123456789123456789123456789123456789123456734","1241519123456789123456789123456789123456789123456789123451234567891")数组去重去重let arr = [12, 23, 12, 15, 25, 23, 25, 14,16];let a = Array.form(new Set(arr))let b = [...new Set(arr)]let newArr = []; // 第一种计划// 拿出以后项和前面的进行比拟,只须要length -1 项和前面比拟for(let i = 0; i < arr.length - 1;i++){ let item = arr[i]; args = arr.slice(i+1); // 以后项后的所有数据 if(args.indexof(item) > -1){ // 如果以后我的项目蕴含能够删除,也能够放入新数组 // 第二种 // arr.splice(i,1); // splice 原来数组扭转,如果i++,则会数组塌陷 // 性能不好,以后项删除,前面索引都要扭转 // i--; //第三种 // arr[i] = null; // arr[i] = arr[arr.length -1]; // arr.length --; // i--; } else { // newArr.push(item) }}// arr.filter(item => item !== null);// 对象键值对, 那数组的每项向新容器中存,如果有把当项干掉// let obj = {}// for(let i = 0; i < arr.length; i++){// let item = arr[i];// if(typeof obj[item] !== 'undefined'){// arr[i] = arr[arr.length - 1];// arr.length--;// i--;// continue;// }// obj[item] = item;// }// console.log(arr);排序冒泡排序 ...

October 8, 2021 · 3 min · jiezi

关于html:操作DOM的方法

创立节点一、createElementlet elem = document.createElement("div"); elem.id = 'test'; elem.style = 'color: red'; elem.innerHTML = '我是新创建的节点'; document.body.appendChild(elem);二、createTextNode var node = document.createTextNode("我是文本节点"); document.body.appendChild(node);三、cloneNode var dupNode = node.cloneNode(deep); deep : true => 深克隆, false => 浅克隆实际:<body> <div id="parent"> 我是父元素的文本 <br/> <span> 我是子元素 </span> </div> <button id="btnCopy">复制</button></body><script> var parent = document.getElementById("parent"); document.getElementById("btnCopy").onclick = function(){ var parent2 = parent.cloneNode(true); parent2.id = "parent2"; document.body.appendChild(parent2); }</script> 四、createDocumentFragmentlet fragment = document.createDocumentFragment();实际:<body> <ul id="ul"></ul></body><script> (function() { var start = Date.now(); var str = '', li; var ul = document.getElementById('ul'); var fragment = document.createDocumentFragment(); for(var i=0; i<1000; i++) { li = document.createElement('li'); li.textContent = '第'+(i+1)+'个子节点'; fragment.appendChild(li); } ul.appendChild(fragment); })();</script>批改节点一、appendChildchild节点将会作为parent节点的最初一个子节点。appendChild这个办法很简略,然而还有有一点须要留神:如果被增加的节点是一个页面中存在的节点,则执行后这个节点将会增加到指定地位,其本来所在的地位将移除该节点,也就是说不会同时存在两个该节点在页面上,相当于把这个节点挪动到另一个中央。如果child绑定了事件,被挪动时,它仍然绑定着该事件 ...

October 7, 2021 · 3 min · jiezi

关于html:第-59-题请描述-HTTP-握手过程

当建设协定的时候,TCP 进行了 3 次握手客户端申请连贯服务器服务器响应胜利客户端回应服务器筹备开始连贯当终止协定的时候,tcp 进行了 4 次挥手客户端向服务器发送,断开申请服务器向客户端发送,还有数据没有传输结束,请稍等服务器向客户端发送,传输结束,能够随时断开申请了客户端向服务器发送,你断开申请吧,不必回复了而后各自断开申请 服务器断开申请客户端期待 2 秒后没有收到音讯,断开申请也能够这么了解 男:我要挂了哦女:等哈,我还要敷面膜女:我敷完了,当初能够挂了男:我舍不得挂,你挂吧而后各自挂电话 女:好吧,我挂了男:等了 2MSL 听见嘟嘟嘟的声音后挂断<img src="https://noxussj.top:3000/59/1.png"></img> 参考资料第 16 题:谈谈你对 TCP 三次握手和四次挥手的了解 附加此文章通过自媒体多平台公布,公布后不再进行保护,如对内容有任何异议能够到下方的 GitHub 中进行探讨【继续保护/更新 500+前端面试题/笔记】https://github.com/noxussj/In...【利用 THREE.JS 实现 3D 城市建模(珠海市)】https://3d.noxussj.top/

September 30, 2021 · 1 min · jiezi

关于html:第-57-题请描述-HTTPS-握手过程

HTTP 通信的毛病通信应用明文,内容可能被窃听(重要明码泄露)不验证通信方身份,有可能遭逢假装(跨站点申请伪造)无奈证实报文的完整性,有可能已遭篡改(运营商劫持)HTTPS 握手过程客户端发动 HTTPS 申请 用户在浏览器里输出一个 https 网址,与服务器建设 ssl 连贯服务端响应 服务器收到客户端申请后,确认加密通信协议版本是否统一,如果版本统一则返回服务器证书,否则敞开加密通信客户端解析证书 客户端收到网站证书后会查看证书的颁发机构以及过期工夫, 如果没有问题就随机产生一个秘钥客户端传输秘钥给服务端 客户端利用公钥将秘钥加密, 并传输给服务端服务端解密 服务端利用本人的私钥解密出秘钥实现加密过程 之后服务器与客户端应用秘钥加密传输原理图如下 <img src="https://noxussj.top:3000/57/1.png"></img> 参考资料我是这样了解 HTTP 和 HTTPS 区别的 文章的内容/灵感都从下方内容中借鉴【继续保护/更新 500+前端面试题/笔记】https://github.com/noxussj/In...【大数据可视化图表插件】https://www.npmjs.com/package...【利用 THREE.JS 实现 3D 城市建模(珠海市)】https://3d.noxussj.top/

September 28, 2021 · 1 min · jiezi

关于html:pointer-事件的坑

咱们在做页面元素拖动性能的时候会思考到pc端和挪动端的适配,那么pc端咱们用mousedown,mousemove,mouseup组合,挪动端会用到touchstart,touchmove,touchend组合也能动起来,如果两端兼容,那么咱们能够同时绑定这两种事件来适配。 存在的问题:1.会保护两套事件,且事件的event对象不一样。2.如果存在触摸屏存在多种事件的时候,事件可能反复触发 那么还有一个抉择: pointer事件pointer事件有pointerdown,pointermove,pointerup事件等等(还有别的);同样pointer事件的event对象pc端和挪动端也是不一样的,也是须要解决一下的。 pointer事件能兼容挪动端和pc端,这样就能只绑定一种事件了。 留神1.当咱们想挪动一个元素时,咱们要把该元素css款式设置为touch-action:none,不然,pointermove事件会触发3次左右就主动勾销了,前面不执行了,也不会报错。2.在元素从pointerdown事件到move,还得是原来的元素,你、不能被替换,当初的双向绑定框架会更新dom,挪动过程中该元素就不是原来的元素了。 代码测试代码 <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> <title>Document</title> <style> * { margin: 0; } html { height: 100%; } body { height: 100%; overflow: hidden; } div { border: 1px solid; padding: 20px; } #div1 { width: 350px; height: 70px; padding: 10px; border: 1px solid #aaaaaa; } #content { position: relative; height: 200px; width: 100%; background-color: bisque; } #pointer { position: absolute; height: 50px; width: 50px; left: 0; top: 0; background-color: blue; touch-action: none; } </style> </head> <body> <div id="content"> <div id="pointer"></div> </div> <script type="text/javascript"> let pointer = document.querySelector('#pointer') const content = document.querySelector('#content') let startLeft = 0 let startTop = 0 pointer.addEventListener('pointerdown', function (ev) { console.log('down', ev.x, ev.y, ev.isPrimary) startLeft = ev.x startTop = ev.y document.body.addEventListener('pointermove', mousemove) document.body.addEventListener('pointerup', mouseup) document.body.addEventListener('pointercancel', mousecancel) content.removeChild(pointer) pointer = document.createElement('div') pointer.id = "pointer" content.appendChild(pointer) }) function mouseup(ev) { // document.body.removeEventListener('touchmove', mousemove) document.body.removeEventListener('pointermove', mousemove) // pointer.style.left = '0px' // pointer.style.top = '0px' document.body.removeEventListener('pointerup', mouseup) document.body.removeEventListener('pointercancel', mousecancel) } function mousemove(ev) { ev.preventDefault(); console.log('move', ev, pointer) // pointer.style.left = ev.x - startLeft + 'px' // pointer.style.top = ev.y - startTop + 'px' } function mousecancel(ev) { console.log('mousecancel', ev) } </script> </body></html>

September 27, 2021 · 1 min · jiezi

关于html:第-56-题TypeScript-新特性有哪些

比拟罕用的有 变量定义指定类型函数承受参数指定类型类枚举命名空间继承以上是从文档中理解的,目前还没有在理论练习中应用过 文章的内容/灵感都从下方内容中借鉴【继续保护/更新 500+前端面试题/笔记】https://github.com/noxussj/In...【大数据可视化图表插件】https://www.npmjs.com/package...【利用 THREE.JS 实现 3D 城市建模(珠海市)】https://3d.noxussj.top/

September 27, 2021 · 1 min · jiezi

关于html:解决chrome浏览器-谷歌翻译导致页面错乱数据渲染不显示问题

在chrome浏览器中如果设置了谷歌翻译主动翻译,有的时候会很烦人,所以能够抉择禁用谷歌翻译,具体方法如下 1、在html 标签中退出属性 translate="no", 禁止全站翻译 <html translate="no">2、在html文件的head中退出 (亲测,如同不太好使) <meta name="google" content="notranslate">3、在不想被翻译的元素中退出class="notranslate", 能够是html、div 等各种元素(举荐,亲测可用) <div class="notranslate"></div>

September 26, 2021 · 1 min · jiezi

关于html:初始HTML-与-CSS

引言理解 HTML 与 CSS 基本概念理解编译器注释理解HTML 与 CSS 基本概念HTML(HyperText Markup Language)是超文本标记语言,蕴含了一系列标签,通过这些标签能够搭建网页的根本构造,这些标签可向网页插入非文字内容,如:图片、连贯、音频、视频等 CSS(Cascading Style Sheets)是层叠样式表,用于润饰 HTML 或 XML 文件的款式,CSS不仅能够润饰动态网页,也可配合脚本语言对网页进行款式批改,可对网页进行地位排版、字体设置等 理解编译器编译器是将一种语言(个别为高级语言)翻译成另一种语言(低级语言)的程序,一个古代编译器的次要工作流程是:源代码 —> 预处理器 —> 编译器 —> 指标代码 —> 链接器 —> 可执行程序 目前,市场上各种各样的编译器,每个编译实现的性能都不雷同,目前支流前端编译器有:Visual Studio Code、HBuilderX、sublime Text、WebStorm等我举荐应用 VSCode 与 sublime Text

September 24, 2021 · 1 min · jiezi

关于html:第-55-题SetMapWeakSet-和-WeakMap-有哪些区别

以上三者的区别var 和 let 用以申明变量,const 用于申明只读的常量var 申明的变量,不存在块级作用域,在全局范畴内都无效,let 和 const 申明的,只在它所在的代码块内无效let 不容许在雷同作用域内,反复申明同一个变量const 在申明时必须初始化赋值,一旦申明,其申明的值就不容许扭转,更不容许反复申明文章的内容/灵感都从下方内容中借鉴【继续保护/更新 500+前端面试题/笔记】https://github.com/noxussj/In...【大数据可视化图表插件】https://www.npmjs.com/package...【利用 THREE.JS 实现 3D 城市建模(珠海市)】https://3d.noxussj.top/

September 24, 2021 · 1 min · jiezi

关于html:第-54-题varletconst-有什么区别

以上三者的区别var 和 let 用以申明变量,const 用于申明只读的常量var 申明的变量,不存在块级作用域,在全局范畴内都无效,let 和 const 申明的,只在它所在的代码块内无效let 不容许在雷同作用域内,反复申明同一个变量const 在申明时必须初始化赋值,一旦申明,其申明的值就不容许扭转,更不容许反复申明文章的内容/灵感都从下方内容中借鉴【继续保护/更新 500+前端面试题/笔记】https://github.com/noxussj/In...【大数据可视化图表插件】https://www.npmjs.com/package...【利用 THREE.JS 实现 3D 城市建模(珠海市)】https://3d.noxussj.top/

September 23, 2021 · 1 min · jiezi

关于html:测试开发之前端篇CSS层叠式样式表

CSS是层叠样式表(Cascading Style Sheets)的缩写,用于形容如何在屏幕、纸张或其余媒体上显示HTML元素,包含了定义网页及其元素的布局、格调、大小、地位和色彩等属性。 CSS的语法示意为: 以下是一个简略的例子,设置了网页主体(body)的背景色、题目(h1)的色彩和对齐形式、段落(p)的字体和大小。 body { background-color: lightblue;}h1 { color: white; text-align: center;}p { font-family: verdana; font-size: 20px;}网页中有3种援用样式表的办法,别离为: 1. 在head中应用link元素,导入内部样式表文件。<head> <link rel="stylesheet" type="text/css" href="mystyle.css"></head>在网页head中应用style元素,定义样式表内容。2. 在网页head中应用style元素,定义样式表内容。<head><style> body { background-color: linen; } h1 { color: maroon; margin-left: 40px; } </style></head><body> <h1>This is a heading</h1> <p>This is a paragraph.</p></body>3. 应用style属性,间接将款式内容增加到元素中。<body> <h1 style="color:blue;text-align:center;">This is a heading</h1> <p style="color:red;">This is a paragraph.</p></body>咱们能够应用不同的CSS选择器,给元素设置款式,如下html中,能够应用#desc来选中id为desc的div元素,应用.btn抉择所有蕴含类btn的提交按钮。 <head><style> #desc { background-color: blue; } .btn { font-size: 20px; } </style></head><body> <div id="desc">This is a desc</div> <button class="btn">提交</button></body>在Selenium自动化测试脚本中,通常应用CSS选择器,来定位网页中的元素。如以下代码,查找class为btn的按钮,并进行点击。 ...

September 22, 2021 · 1 min · jiezi

关于html:第-52-题如何使用一个-promise以及-Promiseall

Promise 用法let request = new Promise((resolve, reject) => { // 表达式 if (true) { resolve({ age: 20 }); } else { reject('申请接口失败'); }});request .then(res => { console.log('res', res); // { age: 20 } }) .catch(res => { console.log('res2', res); // 申请接口失败 });Promise.all 用法let requestA = new Promise(resolve => { setTimeout(() => { resolve({ requestA: 20 }); }, 1000 * 2);});let requestB = new Promise(resolve => { resolve({ requestB: 50 });});let requestAll = Promise.all([requestA, requestB]).then(res => { console.log('res', res); // [{ requestA: 20 }, { requestB: 50 }]});文章的内容/灵感都从下方内容中借鉴【继续保护/更新 500+前端面试题/笔记】https://github.com/noxussj/In...【大数据可视化图表插件】https://www.npmjs.com/package...【利用 THREE.JS 实现 3D 城市建模(珠海市)】https://3d.noxussj.top/

September 18, 2021 · 1 min · jiezi

关于html:第-51-题ES6-新特性有哪些

比拟罕用的有 变量定义:let Const解构赋值扩大运算符Symbol 数据类型Set 和 Map 数据结构PromiseClass箭头函数Proxy 拦挡imoprt 模块导入新增了一些数组的办法新增了一些对象的办法文章的内容/灵感都从下方内容中借鉴【继续保护/更新 500+前端面试题/笔记】https://github.com/noxussj/In...【大数据可视化图表插件】https://www.npmjs.com/package...【利用 THREE.JS 实现 3D 城市建模(珠海市)】https://3d.noxussj.top/

September 17, 2021 · 1 min · jiezi

关于html:HtmlCss测试试题

一、选择题(每题2分)1、在HTML中,要定义一个空链接应用的标记是? A A、<a href='#'> B、<a href=';'> C、<a href='@'> D、<a href='!'>2、以下对html的形容不正确的是? A A、html是一种超文本标记语言,标签不能穿插嵌套应用;不能在html中插入非凡标签,比方:img B、html是一种超文本标记语言,标签能够穿插嵌套应用,能够在html中插入非凡标签,比方:img C、html是一种超文本标记语言,大小写不敏感,标签能够穿插嵌套应用 D、html是一种超文本标记语言,大小写敏感,标签能够穿插嵌套应用3、以下哪个标签能够实现强制换行? A A、br B、dr C、hr D、dl5、在HTML中,上面不属于HTML文档的根本组成部分的是? C A、<html> B、<body> C、<style> D、<head>6、下列CSS代码中有几处语法错误? C (包含& , 666666) &li {font-size:12px , color:666666; } A、1 B、2 C、3 D、47、下列在HTML文档中插入样式表的形式,优先级最高的是? B A、内部link引入 B、style属性(行内的优先级高于外联式) C、内部@import引入(写在外联css外面,相当于内部引入) D、style标签8、实现成果:链接字体色彩为红色,无下划线,当鼠标移过期显示下划线。以下选项正确的是? D A、a:link{color:red;} a:hover{text-decoration:underline;} B、a{color:red;text-decoration:none;} a:hover{text-decoration:overline;} C、a{text-decoration:underline;} a:hover{color:red;text-decoration:none;} D、a{color:red;text-decoration:none;} a:hover{text-decoration:underline;}9、下列对于CSS中盒子模型说法谬误的是? A A、padding代表盒子与其余盒子之间的间隔 (内容区与边框的间隔) B、border代表盒子的边框 C、能够通过box-sizing属性设置不同的盒子模型:W3C规范盒子、边框盒子 D、盒子模型是页面布局的根底,它包含外边距、边框、内边距以及元素的内容10、上面代码中,段落p标签内文本最终显示的色彩是? C <style type='text/css'> body { color:#333; } #text{ color:#666; } body p.content { color:#00f; } p.gray { color:#f00; } </style> <p id='text' class='content gray'>挪动互联方向</p> ------->>>>id选择器的优先级高于类选择器 A、#F00 B、#00F C、#666 D、#333补充一题: 在HTML中,若实现点击超链接,如何弹出一个新的网页窗口? B ...

September 16, 2021 · 3 min · jiezi

关于html:第-50-题为什么-for-循环嵌套顺序会影响性能

外围:循环次数少的放在外层,缩小内层变量的操作次数 // 嵌套形式一function first() { let startTime = new Date().getTime(); for (let i = 0; i < 100; i++) { for (let j = 0; j < 1000; j++) { for (let k = 0; k < 10000; k++) {} } } let endTime = new Date().getTime(); return endTime - startTime + 'ms';}// 嵌套形式二function second() { let startTime = new Date().getTime(); for (let i = 0; i < 10000; i++) { for (let j = 0; j < 1000; j++) { for (let k = 0; k < 100; k++) {} } } let endTime = new Date().getTime(); return endTime - startTime + 'ms';}console.log(first()); // 382msconsole.log(second()); // 501ms嵌套形式一i 执行 1 次 j 就会执行 1000 次 k 就会执行 1000 * 10000 次i 执行 100 次 j 就会执行 100 1000 次 k 就会执行 100 1000 * 10000 次总次数 = i(100) + j(100,000) + k(1,000,000,000) = 1,000,100,100 次循环体内执行次数为:1,000,100,100 次嵌套形式二i 执行 1 次 j 就会执行 1000 次 k 就会执行 1000 * 100 次i 执行 10000 次 j 就会执行 10000 1000 次 k 就会执行 10000 1000 * 100 次总次数= i(10,000) + j(10,000,000) + k(100,000,000) = 110,010,000 次循环体内执行次数为:110,010,000 次文章的内容/灵感都从下方内容中借鉴【继续保护/更新 500+前端面试题/笔记】https://github.com/noxussj/In...【大数据可视化图表插件】https://www.npmjs.com/package...【利用 THREE.JS 实现 3D 城市建模(珠海市)】https://3d.noxussj.top/

September 16, 2021 · 1 min · jiezi

关于html:Nocode-进阶-迎接-Amazon-Honeycode敲开-NoCode-开发大门上

「关注」并「星标」咱们,每天接管对于亚马逊云科技的最新资讯! 作为 IT 行业最近十分热门的一个畛域,低代码/无代码(简称低零代码)开发平台是一种可视化利用创立和开发环境,它使非专业开发人员也能够点击拖放的形式创立挪动或 Web 利用。 低零代码平台还能使业务分析师、IT 管理员、小型企业主和其余非软件开发人员可能疾速构建和测试利用,因为利用创建者不用理解传统的编程语言、机器代码等。使用者所看到的只是一个用户敌对的图形界面(GUI),在该界面中,只须要通过鼠标点击的形式即可疾速创立利用。 隆重举荐 Amazon HoneycodeAmazon Honeycode 是 Amazon 提供的全托管低零代码开发平台。作为一种合作式应用程序构建工具,该平台能够帮忙团队进步生产力并依照本人的形式工作。用户能够将Amazon Honeycode用于简直任何事件:团队工作治理、我的项目打算、事件治理以及定期更新或状态报告等。 扫描上方二维码查阅 Amazon Honeycode 更多资讯 Amazon Honeycode 不须要任何编程教训,咱们只须要晓得如何应用“电子表格”即可。借此,团队成员能够依据本人的需要设计和施行流程,从而简化工作、更新和沟通的解决。学习更无效地治理数据,并在旅途中继续工作。 无需任何编程技能,在学习 Amazon Honeycode 之后,每个人都能够疾速构建应用程序,例如: Amazon Honeycode 的典型用例咱们能够通过多种形式利用 Amazon Honeycode 的弱小性能。尤其是,当咱们没有工夫或资源来进行全面的利用程序开发时,Amazon Honeycode 能够作为一种抉择。 Amazon Honeycode 能够帮忙解决诸如团队工作治理、我的项目打算、状态报告、经营监控、客户和资源管理以及审批流程之类的用例。借此构建的应用程序具备肯定的扩展性,无论不到十人的小团队,或者整个组织中不同部门的数百人,均可一起应用。例如: Amazon Honeycode 的独特价值很多团队习惯于应用电子表格、电子邮件、文档和相似工具来治理和跟踪我的项目。这种办法起初可能成果很好。但随着时间推移,团队会想出更多无关如何应用其数据的想法。 为了适应这些一直变动的需要,他们必须适应其工作形式。许多团队意识到,他们明天应用的工具并没有跟上他们最终想法。团队常常会陷入复制和粘贴,来回写电子邮件,手动更新和保护版本控制的窘境。 领有专门为我的项目量身打造的专用应用程序会更好吗?可怜的是,构建一个这样的应用程序通常须要编程能力或 IT 资源。Amazon Honeycode 满足了这两方面的需要,团队能够应用 Amazon Honeycode 在短短几分钟内进行应用程序的设计和构建。 如果不相熟应用程序构建的概念,能够将应用程序视为容许用户查看和操纵数据的工具。传统的业务应用程序建设在数据库上。这些利用须要编程教训能力创立、更新和保护,并须要管理系统能力运行。 Amazon Honeycode 利用了数据库的性能以及电子表格的灵活性,并提供了从前端组件和应用程序客户端到后端数据存储的所有必需品。所有这些都包装在一个易于应用的可视化界面中。借助 Amazon Honeycode,咱们能够在数小时内构建可运行的应用程序,从而更好地满足本人和团队对管理工作的理论需要。并且这种形式齐全不须要用户具备编程技能! Amazon Honeycode 曾经到来。与传统的生产力工具相比,团队能够利用它来实现更多工作。 理解 Amazon Honeycode 工作簿和应用程序 在上图中,“My Drive”由两个局部组成:工作簿和应用程序。让咱们从应用程序开始在 Amazon Honeycode 中进一步摸索这两局部。 ...

September 15, 2021 · 1 min · jiezi

关于html:NoCode-实战-零代码开发轻松打造会议计划系统

「关注」并「星标」咱们,每天接管对于亚马逊云科技的最新资讯! 对于每天无比空虚的职场“白领骨干精英”来说,各种会议可能是最麻烦的事。接下来的几天本人须要加入哪些会议?每场会还有其余哪些参与者?打算探讨什么主题?是否有哪位必须参会的人还没确定?……各种琐事无比麻烦! 尽管市面上有很多能够提供相干性能的日程治理和合作软件,不过这哪有本人单独开发一套听下来更有格调呢?而且也就当作是学习新技术的练手了。 本文咱们就一起看看,如何用低代码技术,借助 Amazon HoneyCode 开发一个简略实用的会议治理和订阅利用。 哪怕你基本不会写代码,甚至不须要写什么代码,也能疾速轻松地搞定“开发”工作! 需要剖析对于这样的一个会议订阅公布零碎,咱们心愿实现如下需要: 而对于这个利用,咱们心愿通过如下步骤进行构建: ● 数据逻辑定义● 业务逻辑定义● 数据填充● 视觉布局调整 数据逻辑定义 首先须要思考与数据逻辑无关的定义。本利用领有三张数据表,别离为:Users表、Meetings 表以及 BookedMeetings 表。 其中 Users 表定义了应用 App 进行订阅和公布会议的用户名称及对应的角色,如下所示: 如上图所示,Name 列为该 App 的每个用户,其取值来自零碎变量$[SYS_USER],Role 列为每个用户对应的角色,在 App 设计中根据角色来确定其对应的用户是否领有会议公布权限。Users 表也是三张表中惟一须要手动填写的。 Meetings 表为所有会议的记录表,记录着每条会议记录的具体内容、创建者及创立工夫,如下所示: 其中 Name 列为会议名称,Agenda 列为会议主题,Location、Date And Time 及 Duration 列别离对应会议地点和会议工夫及会议时长。其余的 CreateBy 和 CreateOn 为会议发布者和公布日期。须要留神的是 Mdate 这一列,它的取值来自对 Date And Time 列中日期局部的截取,在 APP 中将用作会议是否过期的逻辑判断条件,其表达式为: =CONCATENATE(MONTH(Meetings[Date And Time]),"/",DAY(Meetings[Date And Time]),"/",YEAR(Meetings[Date And Time])) BookedMeetings 表为会议注册记录表,表中记录着用户要加入的会议记录,如下所示: ...

September 15, 2021 · 2 min · jiezi

关于html:第-49-题如何实现一个对象深拷贝

假如咱们要复制一个对象,如果不对其进行深拷贝,那么扭转其中一个对象后,另外一个对象也会跟着扭转 失常状况场景 let a = { age: 20};let b = a;b.age = 30;console.log(a.age); // 30这并不是咱们想要的成果,所以想要复制一个全新的对象时,就要进行深拷贝 利用 JSON 类就是将一个对象转为 JSON 字符串,在转回 JSON 对象 let a = { age: 20};let b = JSON.parse(JSON.stringify(a));b.age = 30;console.log(a.age); // 20长处:长处是方便快捷,性能绝对比拟好 毛病:然而简单的对象进行 JSON 转换有可能会失落属性,如下代码 let a = { age: 20, local: function() { return 5; }};let b = JSON.parse(JSON.stringify(a));console.log(b); // { age : 20 }console.log(b.local()); // b.loacl is not a function利用递归的形式dfs-deep-copy.js // 深度优先遍历let dfs = data => { let newData; if (type(data) === 'array') { newData = []; data.map((item, index) => { newData[index] = dfs(item); }); } else if (type(data) === 'object') { newData = {}; Object.keys(data).map(item => { newData[item] = dfs(data[item]); }); } else { newData = data; } return newData;};// 类型字典export let type = data => { let dist = { '[object Array]': 'array', '[object Object]': 'object', '[object Number]': 'number', '[object Function]': 'function', '[object String]': 'string', '[object Null]': 'null', '[object Undefined]': 'undefined' }; return dist[Object.prototype.toString.call(data)];};export default dfs;index.vue ...

September 15, 2021 · 1 min · jiezi

关于html:React笔记事件处理

产生问题起因:对js或者es语法不相熟 围绕上面两个问题:React的onClick办法与HTML的onclick区别2. addEventListener 和onClick的区别 this指向问题1.React的onClick办法与HTML的onclick区别React 事件的命名采纳小驼峰式(camelCase),而不是纯小写。应用 JSX 语法时你须要传入一个函数作为事件处理函数,而不是一个字符串。html中的onclick传入的是一个脚本 在 React 中另一个不同点是你不能通过返回 false 的形式阻止默认行为。你必须显式的应用 preventDefault。例如,传统的 HTML 中阻止表单的默认提交行为,你能够这样写: 2. html中addEventListener 和onclick的区别onclick事件在同一时间只能指向惟一对象,即后一次的点击会笼罩后面一次的addEventListener给一个事件注册多个listener,按先后顺序执行,不会笼罩。addEventListener对任何DOM都是无效的,而onclick仅限于HTMLaddEventListener能够管制listener的触发阶段,(捕捉/冒泡)。对于多个雷同的事件处理器,不会反复触发,不须要手动应用removeEventListener革除IE9应用attachEvent和detachEvent应用 React 时,你个别不须要应用 addEventListener 为已创立的 DOM 元素增加监听器。事实上,你只须要在该元素初始渲染的时候增加监听器即可。 3. this绑定问题发现onClick = {()=>this.handleClick(i)} 和 onClick = {this.handleClick} 这两种写法,在 JavaScript 中,class 的办法默认不会绑定 this。 箭头函数问题在于每次渲染 LoggingButton 时都会创立不同的回调函数。在大多数状况下,这没什么问题,但如果该回调函数作为 prop 传入子组件时,这些组件可能会进行额定的从新渲染。咱们通常倡议在结构器中绑定或应用 class fields 语法来防止这类性能问题。 bind绑定是在constructor中增加了this.handleClick = this.handleClick.bind(this) JavaScript 容许在函数体外部,援用以后环境的其余变量。this的设计目标就是在函数体外部,指代函数以后的运行环境。

September 15, 2021 · 1 min · jiezi

关于html:第-48-题什么是闭包

闭包就是指有权拜访另一个函数作用域中的变量的函数 观看了 JS 高级程序设计中的闭包后,发现能够形容的更具体,这个将在前期更新此篇文章 栗子function foo() { var local = 1; function bar() { local++; return local; } return bar;}var func = foo();console.log(func()); // 2长处能够读取函数外部的变量函数外部的变量保留在内存中,不被销毁毛病在闭包不应用的状况下要及时开释,否则将造成内存透露文章的内容/灵感都从下方内容中借鉴【继续保护/更新 500+前端面试题/笔记】https://github.com/noxussj/In...【大数据可视化图表插件】https://www.npmjs.com/package...【利用 THREE.JS 实现 3D 城市建模(珠海市)】https://3d.noxussj.top/

September 14, 2021 · 1 min · jiezi

关于html:第-47-题什么是防抖和节流

防抖触发高频事件后 n 秒内函数只会执行一次,如果 n 秒内高频事件再次被触发,则从新计算工夫 <script>export default { data() { return { timer: null }; }, methods: { click() { clearTimeout(this.timer); this.timer = setTimeout(() => { console.log('鼠标单击'); }, 200); } }};</script>节流在单位工夫内, 只会触发一次事件,如果事件触发后,又反复触发了同一事件,则疏忽前面触发的事件,直到第一次事件的计时完结 <script>export default { data() { return { isFinshed: true }; }, methods: { click() { if (this.isFinshed === true) { this.isFinshed = false; this.timer = setTimeout(() => { console.log('鼠标单击'); this.isFinshed = true; }, 200); } } }};文章的内容/灵感都从下方内容中借鉴【继续保护/更新 500+前端面试题/笔记】https://github.com/noxussj/In...【大数据可视化图表插件】https://www.npmjs.com/package...【利用 THREE.JS 实现 3D 城市建模(珠海市)】https://3d.noxussj.top/

September 14, 2021 · 1 min · jiezi

关于html:第-46-题如何判断一个字符串对象数组中是否包含某个值

字符串let str = 'abdefgh';console.log(str.indexOf('d') > -1); // trueconsole.log(str.search('d') > -1); // trueconsole.log(/d/.test(str)); // true对象let obj = { age: 20};console.log(obj.age) // 20console.log(obj.hasOwnProperty('age')); // true数组let arr = ['a', 'b', 'c', 'd'];console.log(arr.indexOf('d') > -1); // trueconsole.log(arr.includes('d')); // true文章的内容/灵感都从下方内容中借鉴【继续保护/更新 500+前端面试题/笔记】https://github.com/noxussj/In...【大数据可视化图表插件】https://www.npmjs.com/package...【利用 THREE.JS 实现 3D 城市建模(珠海市)】https://3d.noxussj.top/

September 13, 2021 · 1 min · jiezi

关于html:第-45-题数组有哪些常用的方法

次要罕用的办法有push :向数组的开端增加新元素pop():删除数组的最初一项shift():删除数组的第一项unshift():向数组首位增加新元素slice():依照条件查找出其中的局部元素splice():对数组进行增删改join():用指定的分隔符将数组每一项拼接为字符串concat():用于连贯两个或多个数组indexOf():检测以后值在数组中第一次呈现的地位索引lastIndexOf():检测以后值在数组中最初一次呈现的地位索引includes():判断一个数组是否蕴含一个指定的值sort():对数组的元素进行排序reverse():对数组进行倒序forEach():ES5 及以下循环遍历数组每一项map:ES6 循环遍历数组每一项文章的内容/灵感都从下方内容中借鉴【继续保护/更新 500+前端面试题/笔记】https://github.com/noxussj/In...【大数据可视化图表插件】https://www.npmjs.com/package...【利用 THREE.JS 实现 3D 城市建模(珠海市)】https://3d.noxussj.top/

September 9, 2021 · 1 min · jiezi