今天是520,单身狗在这里祝各位520快乐!

DOM节点统计

DOM 的体积过大会影响页面性能,假如你想在用户关闭页面时统计(计算并反馈给服务器)当前页面中元素节点的数量总和、元素节点的最大嵌套深度以及最大子元素个数,请用 JS 配合原生 DOM API 实现该需求(不用考虑陈旧浏览器以及在现代浏览器中的兼容性,可以使用任意浏览器的最新特性;不用考虑 shadow DOM)。比如在如下页面中运行后

<html>
<head></head>
<body>
<div>
<span>f</span>
<span>o</span>
<span>o</span>
</div>
</body>
</html>

会得出这样一个对象:

{
totalElementsCount: 7,
maxDOMTreeDepth: 4,
maxChildrenCount: 3
}

我的答案

const obj={}
class Ele{
constructor(ele){
this.ele=ele;
this.funum=1;
}
//取当前节点的元素深度
getEleDepth(){
let fuele=this.ele.parentNode;
if(fuele!==document){
this.funum++;
this.ele=fuele;
return this.getEleDepth();
}else{
return this.funum;
}
}
//去当前节点的子元素个数
getEleSubNum(){
let zieles=this.ele.childNodes,zinum=0;
for(let i=0;i<zieles.length;i++){
if(zieles[i].nodeName!=='#text'){
zinum++;
}
}
return zinum;
}
}
const totalElements=document.getElementsByTagName("*")
obj.totalElementsCount=totalElements.length;//dom中的所有节点数量 let eleDepthArr=[];
let eleSubArr=[];
for(let i=0;i<totalElements.length;i++){
eleDepthArr.push(new Ele(totalElements[i]).getEleDepth())
eleSubArr.push(new Ele(totalElements[i]).getEleSubNum())
}
eleDepthArr=eleDepthArr.sort((a,b)=>(b-a))
eleSubArr=eleSubArr.sort((a,b)=>(b-a))
obj.maxDOMTreeDepth=eleDepthArr[0]//元素节点的最大嵌套深度
obj.maxChildrenCount=eleSubArr[0]//最大子元素个数 console.log(obj)

按图完成布局和拖动效果

在已提供的HTML片段的基础上继续编写 CSS 和 JS,已完成如下效果图所演示的效果,且要求左侧left部分最小宽度100px,最大宽度300px。提示:可以使用 mousedown, mouseup, mousemove 几个事件来组合处理拖动效果,也欢迎使用其他方案。
已知HTML片段:

效果图:

给点html:

<html>
<head>
<title>按图完成布局和拖动效果</title>
</head>
<body>
<div class="container">
<div class="left">left<div class="drag"></div></div>
<div class="right">right</div>
</div>
</body>
</html>

给定部分css:

.container {
width: 100%;
height: 500px;
min-width: 500px;
overflow: scroll;
}
.left,
.right {
border: 1px solid #ccc;
font-size: 22px;
color: #333;
font-weight: bold;
text-align: center;
line-height: 500px;
}
.right {
border-left: 0 none;
}

我的改动:

有些未完成。。。暂时想到是这个思路

.container {
width: 100%;
height: 500px;
min-width: 500px;
overflow: scroll;
/*--*/
display: flex;
justify-content: flex-start; }
.left,.right {
border: 1px solid #ccc;
font-size: 22px;
color: #333;
font-weight: bold;
text-align: center;
line-height: 500px;
}
.right {
border-left: 0 none; width: 100%;
}
/*--*/
.left{
max-width: 300px;
min-width: 100px;
position: relative;
}
.drag{
height: 100%;
width: 10px;
float: right;
margin-right: -5px;
}
<div class="container">
<div id="left" class="left">
left
<div id="drag" class="drag"></div>
</div>
<div class="right">right</div>
</div>
const drag=document.getElementById("drag");
const left=document.getElementById("left");
drag.onmousedown=function(e){
// console.log(e.clientX)
let mx=e.clientX
this.onmousemove=function(){
let cw=left.clientWidth;
console.log(e.clientX)
}
this.onmouseup=function(){
console.log(3)
this.onmousemove=null;
this.onmouseup=null;
}
}

【web前端】面题整理(2)的更多相关文章

  1. Web前端错题模糊题记录

    title: Web前端错题模糊题记录 toc: true date: 2018-09-20 10:04:36 categories: Web tags: HTML CSS JavaScript HT ...

  2. web前端面试知识点整理

    一.HTML5新特性 本地存储 webStorage websocket webworkers新增地理位置等API对css3的支持canvas多媒体标签新增表单元素类型结构标签:header nav ...

  3. web前端常用meta整理

    标签提供关于HTML文档的元数据.元数据不会显示在页面上,但是对于机器是可读的.它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务. 页面关键词 <meta ...

  4. web前端开发资源整理

    webpack中文文档 http://webpackdoc.com/index.html 饿了么UI http://mint-ui.github.io/#!/zh-cn http://element. ...

  5. WEB 前端开发插件整理

    下拉框插件 1.select http://select2.github.io/ 2.双 select http://loudev.com 3.selectbox http://aui.github. ...

  6. web前端的问题整理

    css实现三列布局?如果中间又是自适应布局怎么做?

  7. Web 前端开发学习之路(入门篇)

    字数1374 阅读4622 评论0 喜欢49 以前学习过一段时间的web前端开发,整理了一些我看过的/我认为比较好的学习资料(网站.书籍).不要问我为啥没有进阶版,我只是一条产品汪而已,求轻喷.== ...

  8. 【编码题篇】收集整理来自网络上的一些常见的 经典前端、H5面试题 Web前端开发面试题

    编写一个方法 求一个字符串的字节长度假设:一个英文字符占用一个字节,一个中文字符占用两个字节 function GetBytes(str){ var len = str.length; var byt ...

  9. BAT 前端开发面经 —— 吐血总结 前端相关片段整理——持续更新 前端基础精简总结 Web Storage You don't know js

    BAT 前端开发面经 —— 吐血总结   目录 1. Tencent 2. 阿里 3. 百度 更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了阿里的内推及腾讯和百度的实习生招聘, ...

  10. 1+X Web前端开发(初级)理论考试样题(附答案)

    传送门 教育部:职业教育将启动"1+X"证书制度改革 职业教育改革1+X证书制度试点启动 1+X成绩/证书查询入口 一.单选题(每题 2 分,共 60 分) 1.在 HTML 中, ...

随机推荐

  1. js实现倒计时(分:秒)

    上代码: //倒计时start 需要传入的参数为秒数,此方法倒计时结束后会自动刷新页面 function resetTime(timetamp){ var timer=null; var t=time ...

  2. tomcat+redis接上篇

    数据库允许远程连接 把数据库中的mysql数据库中的user表里的host项为localhost的改为 % update user set host = '%' where user = 'root' ...

  3. Codeforces Round #575 (Div. 3) (A. Three Piles of Candies)(数学)

    A. Three Piles of Candies time limit per test1 second memory limit per test256 megabytes inputstanda ...

  4. ubuntu 配置smb后无法访问

    配置如下 [/gscloud] path = /gscloud browseable = yes writable = yes guest ok = yes read only = no create ...

  5. LVM逻辑卷理论及配置

    LVM的概念 LVM 是 Logical Volume Manager 的简称,译为中文就是逻辑卷管理.它是 Linux 系统对磁盘分区的一种管理机制. LVM 是在硬盘分区之上建立一个逻辑层,这个逻 ...

  6. 随笔记录①—利用poi读取Word中的标题和内容

    使用时间:4小时 使用poi方法将word中的内容提取出来,并输出到控制台或者存储到数据库poi.jar下载地址:https://www.apache.org/dyn/closer.lua/poi/r ...

  7. ESP8266 SPI通信

    设备与设备之间的通信往往都伴随着总线的使用,而用得比较多的就当属于SPI总线和I2C总线,而恰巧NodeMcu也支持这两种总线通信 1. SPI总线——SPI类库的使用 SPI是串行外设接口(Seri ...

  8. Struts 2 配置Action详解_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 实现了Action处理类之后,就可以在struts.xml中配置该Action,从而让Struts 2框架知道哪个Act ...

  9. spark的accumulator值保存在哪里?

    答案:保存在driver端.因此需要对收集的信息的规模要加以控制,不宜过大.避免 driver端的outofmemory问题!!!

  10. 对promise.all底层的实现的研究

    1.Promise.all(iterable)返回一个新的Promise实例,此实例在iterable参数内素有的Promise都fulfilled或者参数中不包含Promise时,状态变成fulfi ...