【每日十分钟前端】基础篇14,300毫秒点击延迟问题、值和单位px、em、rem、vw/vh、JS如何实现继承

vhll-js:虚拟HyperLogLog是高度紧凑的虚拟最大似然草图,用于为Node.js计算大型网络数据 虚拟HyperLogLog 虚拟HyperLogLog是用于计算大型网络数据的高度紧凑的虚拟最大似然草图。 这是有史以来用JavaScript创建的第一个实现。 TL; DR:一个HyperLogLog中的多个HyperLogLog,彼此之间共享位(理论上每个寄存器低至0.1位) 加长版:数据结构取自于论文(参见下文),该论文提出了一种称为虚拟最大似然草图的新方法,以通过对大量流进行基数估计来减少内存消耗。 它体现了两个想法。 第一个想法称为虚拟草图,它在每个草图上平均使用不超过两位,同时保留了与FM草图等效的功能。 第二个想法称为虚拟草图矢量,它将所有流的草图合并到一个混合的公共池中。 这两个想法在一起可以大大减少总体内存开销。 基于虚拟草图和虚拟矢量,我们设计了具有在线运算模块和离线估计模块的基数估计解决方案。 有关算法和引用的详细信息,请暂时使用本文 ##注意此实现使用1 立即下载

1、[HTML]300 毫秒点击延迟问题?
2、[CSS]值和单位px、em、rem、vw/vh?
3、[JS]JS 如何实现继承?


1、300 毫秒点击延迟问题

产生原因:

在移动端,用这个300ms的时间,去判断用户的操作是要打开连接还是进行双击操作,比如双击缩放。

最早前的网页只给大屏幕设计,苹果在发布首款ihone的时候做做了一些约定,针对这些小屏幕浏览站点的问题,其他移动浏览器都相继复制了多数约定,就包括了双击缩放。

随着移动端的发展,用户对于体验的要求越来越高,这个300ms带来的卡顿就让人难以接受。

解决方案:

禁止缩放。
<meta>标签操作,必须完全禁止用缩放;

initial-scale=1.0, maximum-scale=1.0, user-scalable=0;
非适配移动端的界面,图片或者一段字体很小的文字也无法实现放大查看了。

width=device-width;
Chrome32开始,默认width=device-width的时候禁止缩放页面。
用了这个的页面一般是为移动端设计的页面,默认宽度从980变成了移动端刚刚好的宽度,比如iphone上的300+,消除了在该站点上可能潜在的双击缩放需求。

2、值和单位px、em、rem、vw/vh、vmax/vmin

px

绝对长度单位,像素pixel的缩写,图像显示的基本单元,页面的常用单位,是相对于浏览器屏幕分辨率而言的。

em

相对长度单位,是相对于当前对象内字体大小(父级font-size,未设置时参考浏览器默认字体大小)而言的的。

rem

相对长度单位,css3的新单位,是相对于html根元素字体大小(html的font-size,未设置参考浏览器默认字体大小)而言的。
ie8及之前的版本不可用。

vw/vh、vmax/vmin

基于视口(viewport)的单位;
vw相对于视口的宽度,1vw= 1*(视口宽度/100);
vh相对于视口的高度,1vh= 1*(视口高度/100);
vmin:1vw和1vh中较小的那个;
vmax:1vw和1vh中较大的那个。

3、JS 如何实现继承?

JavaScript主要通过原型链来实现继承,通常继承意味着复制,然而JavaScript默认不会复制对象属性,只是在两个对象之间创建一个关联(类似指针),从而达到可以访问另一个对象的属性和方法。

继承是面向对象技术中的一种概念,与多态、封装共为面向对象的三个基本特征。
继承可以使子类具有父类的属性和方法或者重新定义、追加属性和方法等。
继承是类与类之间的关系,不是对象与对象之间的关系。

构造函数、实例:

构造函数是用来创建对象的函数,也属于函数,区别在于调用方式不同。
通过new操作符来创建它的实例对象的就是构造函数,没有的就是普通函数。

function Funname(){}
var fun1 = new Funname()

fun1这里的Funname是构造函数,fun1叫做Funname的实例。

原型对象

函数有一个prototype属性,指向原型对象。
当new了一个新的对象的时候(上述fun1),不做别的操作,可以直接访问原型对象的(funname里面的)属性和方法。
原型对象也有它自己的__proto__。
构造函数被声明时,原型对象也一同完成创建,然后挂载到构造函数的prototype属性上。

构造函数,原型对象和实例的关系

函数的prototype->原型对象
原型对象的constructor->函数
实例对象的protoptype->原型对象(允许实例通过该prototype属性访问原型对象中的属性和方法)

sequenceDiagram
Funname(构造函数)->>Funname.prototype(实例原型): prototype
Funname.prototype(实例原型)->>Funname(构造函数): constructor

Funname(构造函数)->>fun1:   
fun1->>Funname.prototype(实例原型): __proto__

Funname.prototype(实例原型)->>Object.prototype: __proto__
Object.prototype->>null: __proto__

Object.prototype->>Object(): constructor
Object()->>Object.prototype: rototype
原型链

上一篇写的原型链,理解了这个就能更好的理解继承问题,也是继承的主要思路。

(1)、原型链继承

让对象实例通过原型链的方法串联起来,当访问目标对象的某一属性是,能顺着原型链进行查找,从而达到类似继承的效果。

将子类子类与父类的原型联系起来(原本父类原型的constructor指向父类的)

//父类
function Parent() {}
//子类
function Child() {}
//继承父类
Child.prototype = new Parent()
//改变constructor指向
Child.prototype.constructor = Child
sequenceDiagram
子类原型prototype->>父类实例new Parent(): prototype
父类实例new Parent()->>父类原型prototype: prototype
父类原型prototype->>子类原型prototype: constructor

优点:
父类方法可以复用。

缺点:
(1)、引用关系,父类的所有引用属性会被所有子类共享,多个子类的话,一个改了,别的都被改了,目标只有一个;
(2)、子类实例不能给父类传值。

(2)、构造继承

在子类构造函数中调用父类构造函数,可以在子类构造函数中使用call()和apply()方法。

function Parent(value){
    this.value = value;
}
function Child(value) {
    //继承自Parent,并可传参
    Parent.call(this,value)
}

通过使用call和apply方法,Parent构造函数在为Child的实例创建的新对象的上下文执行了,相当于新的Child实例对象上运行了Parent()函数中的所有初始化代码,导致每个实例都有自己的parentxxx属性。

优点:
(1)、子类构造函数可以向父级传参;
(2)、父级的引用类型不共享。

缺点:子类不能访问父类原型上(Parent.prototype)定义的方法,因此所有方法属性都写在构造函数中,每次创建实例都会被初始化。

(3)、组合继承

使用了call在子类构造函数中调用父类构造函数;
综合了原型链继承和构造函数继承的有点。

function Parent(value) {
    this.value = value;
}
Parent.prototype.getValue = function() {
    console.log(this.value);
}
function Child(value) {
    //继承父类属性
    Parent.call(this, value)
}
//继承父类方法
Child.prototype = new Parent();

优点:
(1)、父类方法可以复用;
(2)、可以在子构造函数中向父级构造函数中传参;
(3)、解决了原型链继承中的缺点,引用属性不会被共享。

缺点:父级调用了两次(创造子类原型和实例的时候都会被调用一次),初始化了两次,子类原型上会存在父类实例属性。

(4)、原型式继承

对参数对象的一种浅复制

let Parent = {};
function returnParent(obj) {
    function Fun() {}
    Fun.property = obj;
    return new Fun()
}
let child = returnParent(Parent)

优点:父类方法可复用。

缺点:
(1)、父类的引用会被所有子类所共享
(2)、子类实例不能向父类传值

(5)、寄生式继承

使用原型式继承对一个目标对象进行浅复制,增强这个复制的内容

let Parent = {};
function returnParent(obj) {
    function Fun() {
        Fun.property = obj;
    }
}
//再次复制
function returnParentAga(obj) {
    let clone = returnParent(obj);
    clone.getValue = function() {}
    return clone;
}
let child = returnParentAga(Parent)
(6)、寄生组合继承
let Parent = {}
function returnParent(obj) {
    function Fun() {};
    Fun.prototype = obj;
    return new Fun();
}
function createParentProto(child, parent) {
    // 复制prototype
    let proto = returnParent(parent.prototype)
    // 链接child
    proto.constructor = child
    //赋值
    child.prototype = protp
}
functoin Parent () {};
function Child() {
    Parent.call(this)
}
createParentProto(Child, Parent)
let child = new Child(){}

也可根据Object.create(Parent.prototype)创建一个新的原型对象

function Parent() {}
Parent.prototype.getValue = function() {}
function Child(value) {
    Parent.call(this)
}
Child.prototype = Object.create(Parent.prototype, {
    constructor: {
        value: Child,
        enumerable: false, // 不可枚举该属性
        writable: true, // 可改写该属性
        configurable: true // 可用 delete 删除该属性
    }
})

优点:
(1)、父级方法可以复用;
(2)、只调用一次父级构造函数;
(3)、子级可以向父级传参;
(4)、父级的引用属性不会被共享。

继承关系判断:
(1)、instanceof

xxx是不是xxx的实例。
通过原型链查找来判断继承关系,因此只能用来判断引用类型,对基本类型无效。

(2)、Object.prototype.isPrototypeOf(obj)

还可以利用Object.prototype.isPrototypeOf来间接判断继承关系,该方法用于判断一个对象是否存在于另一个对象的原型链上。

MAPLAB X IDE仿真调试 一、开发环境 操作系统:Windows 10 调试工具:Pickit3 单片机型号:PIC24FJ32GA002 二、操作步骤 1、连接Pickit3仿真器于单片机对应的烧写口如图示: 2、点击调试项目进入调试模式,这时底下输出框显示"运行"代表成功进入调试模式。 3、选择断点,该IDE只支持两个断点,使用超过两个时,超过的断点亮灰色代表无效。设置好断点后需暂停然后再重新点击运行才能生效。可以看到在断点处有绿色光标。 ... 阅读详情

相关推荐

麒麟V10服务器多硬盘安装与分区实战:告别自动分区,手动分配/boot、swap和/根目录

本文详细介绍了麒麟V10服务器在多硬盘环境下的手动分区策略,包括/boot、swap和/根目录的优化分配方案。通过SSD与HDD混合存储架构的合理规划,提升系统性能和运维效率,适用于企业级定制化系统部署需求。

weixin_26976635的博客 406

关于java继承你知道多少?

继承的概念 继承是面向对象软件技术当中的一个概念。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的属性和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。 子类的创建可以增加新数据、新功能,可以继承父类全部的功能,但是不能选择性的继承父类的部分功能。继承是类与类.

weixin_44728332的博客 189

基于分段线性近似的Softmax硬件加速器设计

本文深入探讨了基于分段线性近似的Softmax硬件加速器设计。针对深度学习模型中Softmax函数在硬件实现时指数运算成本高昂的问题,提出用分段线性拟合替代传统泰勒展开,通过一次乘加操作高效完成计算,并详细分析了输入范围压缩、精度与硬件资源权衡、以及包含地址生成、参数查找、乘加计算和归一化的完整硬件架构。该方法在保证精度的同时,显著提升了AI边缘芯片的推理速度和能效。

weixin_28278377的博客 312

使用JS控制伪元素的几种方法/视区相关单位vw, vh..简介以及可实际应用场景

使用JS控制伪元素的几种方法

wang880117的博客 1554

CANOE DIVA 工程怎样在具体服务前增加前置条件

然后会在CANoe的Test Module视窗中发现一个跟系统条件相关的Test Module模块,在该模块中有生成跟系统条件相关的CAPL 脚本。这里需要根据你的实际项目进行更改,diva工程加载到canoe的工程的时候,会同步加入你创建的cdd文件,这里示例的ABS_ESP 就是你的cdd的ECU命名,后面就是具体的前置条件服务。4、配置完成后,测试用例就会如下图Trace窗口所示,在每一次10 02请求之前都会调用CAPL Function的PreconditionCheck函数中定义的脚本。

weixin_45940007的博客 1963

手把手教你用芯驰X9HP驱动MAX96755/MAX96752点亮智能座舱仪表屏(附完整寄存器配置表)

本文详细介绍了如何使用芯驰X9HP驱动MAX96755/MAX96752实现智能座舱仪表屏的完整开发流程,包括硬件架构解析、关键寄存器配置、Linux BSP集成及调试技巧。通过实战指南和完整寄存器配置表,帮助开发者快速掌握驱动开发核心技术,提升智能座舱系统的显示性能与稳定性。

weixin_30879169的博客 526

300 毫秒点击延迟的来龙去脉

点击蓝字 「前端小苑」关注我本文导读 快速响应是所有 UI 实现的重中之重。研究表明,当延迟超过 100 毫秒,用户就能感受到界面的卡顿。然而,出于对手指触摸滑动的区分,移动端页...

yuqing1008的博客 1331

【推荐100个unity插件之24】实现2d交互式草树叶和随风飘动的效果——pixelgraphics插件

【推荐100个unity插件之23】实现2d交互式草树叶和随风飘动的效果——pixelgraphics插件

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1682

前端日常问题记录

HTTP明文传输HTTPS加密传输 HTTP+TLS/SSL。

qq_42573256的博客 1020

动手在 SAP BTP Cloud Foundry 开发和部署 SAP UI5 应用的前置条件 - 订阅 SAP Build Work Zone Standard Version

摘要:本文介绍了SAP BTP Cloud Foundry环境中HTML5应用的概念,区分了web应用、HTML5应用和SAP UI5应用的关系。重点说明了在Cloud Foundry环境部署HTML5应用的方法是通过订阅SAP Build Work Zone standard edition服务,并详细描述了订阅过程中可能遇到的"OIDC trust missing"错误。该错误是由于业务用户认证需要配置SAP Cloud Identity Services的OpenID Connec

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 312

倍福--手动加入第三方伺服的配置

客户在没有硬件情况下,希望手动配置硬件,添加第三方驱动器,本文介绍其操作流程 目 录 软硬件版本 3 1.1. 倍福Beckhoff 3 1.1.1. 控制器硬件 3 1.1.2. 控制软件 3 操作步骤 3 2.1. 添加电机XML文件 3 2.2. 创建EtherCAT 3 2.3. 添加新建项 3 2.4. 选择型号 4 2.5. 关联NC轴 5 软硬件版本 1.1. 倍福Beckhoff 1.1.1. 控制器硬件 TwinCAT控制制器,PC或者EPC,包括: 嵌入式控制器:CX5020-

weixin_41883890的博客 5325

【Web APIs】移动端网页 JavaScript 中 click 事件 300ms 延迟问题 ( 设置 viewport 元标签 全局禁用 双击缩放功能 )

一、移动端网页 JavaScript 中 click 事件 300ms 延迟问题 1、问题来源 2、浏览器适配问题 二、解决方案 1、设置 viewport 元标签 全局禁用 双击缩放功能 2、使用 CSS 的 touch-action 属性 局部 / 全局禁用 3、使用移动端原生触摸事件替代 click 事件

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 2299

【突变检验合集】含Pettitt突变检验等

突变检验方法合集

WW、forever的博客 3534

前端面试拼图-知识广度

​ 最近,看了下慕课2周刷完n道面试题,记录并添加部分可参考的文档,如下...

weixin_61933613的博客 1417

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

移动端之300ms延迟

原因 无键盘全触屏手机初期,页面全是为PC端设计的(没有设置<meta name="viewport">),iPhone作为全触屏手机始祖,为了便于用户浏览网页引入了双击缩放功能。手指在屏幕上快速点击两次,iOS 自带的 Safari 浏览器会将网页缩放至原始比例。如何判断用户是单击还是双击?当用户点击屏幕时,会等待300ms,如果300ms内再次点击,则判定为双击,如果300ms内没...

fengfangyuan的博客 270

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

移动端300ms点击延迟和点击穿透问题

一、移动端300ms点击延迟 一般情况下,如果没有经过特殊处理,移动端浏览器在派发点击事件的时候,通常会出现300ms左右的延迟。也就是说,当我们点击页面的时候移动端浏览器并不是立即作出反应,而是会等上一小会儿才会出现点击的效果。在移动WEB兴起的初期,用户对300ms的延迟感觉不明显。但是,随着用户对交互体验的要求越来越高,现今,移动端300ms的点击延迟逐渐变得明显而无法忍受。 那么,移动

wocaonima332的博客 1592

js 三种解决移动端点击事件默认300ms后才执行的延迟问题

js 解决移动端点击事件默认300ms后才执行的问题 原因:手机端访问电脑上的网站可能会需要两指一起放大,或是双击缩小原大小等操作,所以设计手机浏览器的程序员们为点击事件增加了300ms的延迟,即只有点击后无操作超过这300ms,才被人为是点击事件,为了解决这一问题,有以下两种解决方案: 法一. 禁止用户缩放屏幕,这样因为300ms延迟是缩放屏幕导致的,禁止缩放屏幕后就不会有延迟 只需在head标签里加入以下代码,就可以轻松解决300ms问题 <meta name="viewport" con

黄大仙 1926

前端面经 click在ios上有300ms延迟,原因及如何解决

前端面经 click在ios上有300ms延迟,原因及如何解决

qq_56303170的博客 1428

移动端点击事件延迟300毫秒

快速响应是所有UI都需要注意的一点,研究证明:当延迟超过100毫秒,用户就能感受到界面的卡顿。然而出于对手指触摸滑动的区分,移动端页面对于触摸事件会有300毫秒的延迟,导致多数用户感觉移动设备上基于html的web应用界面响应速度慢。 例1:在手机端运行该页面,点击按钮,会明显感觉比较慢 * { margin:

侞婼冇罪 5600

移动端解决300ms延时

在移动端的web上存在这样一个问题:你给某个元素绑定上click事件,当你点击这个元素的时候,事件将在300ms之后才得以执行。这就是所谓的300ms延时问题。在若干年前300ms可能用户不会怎么介意,但是在如今的形势下,300ms显然已经会让用户感觉到明显的迟钝了,所以这个问题必须得解决。解决方案之:Hammer.js上面的连接提供了若干种的解决方案。不过,目前我用的是:Hammer.jsHam...

前端技术分享 1593

300毫秒延迟解决方案(vue)

关于300毫秒的双击以及单击的话早些是iphone设计了双击放大显示的功能,如果用户一次点击后300ms内没有其他操作,则认为是个单击行为;否则为双击放大行为。vue特别简单,做个记录后面方便找资料,main文件进行引入 ...

Eno_Lin的博客 1137

如何解决移动端点击时300毫秒延迟的问题

##方法一,在标签内添加标签使页面禁止缩放(当然你强制缩放还是可以进行缩放操作的) <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> ##方法二,用zepto.js!也可以实现 ###官网是这个ze...

qq_45120404的博客 666

移动端 300毫秒延迟

移动端Click300毫秒点击延迟 来源: 07年,当时的网站都是为大屏幕设备所设计,为了实现对普通网页更好的体验,苹果的工程师对 iPhone 这种小屏幕浏览桌面端站点,定义了一个双击缩放(double tap to zoom) 的功能,​原理是,当你点击一次之后,在300ms内检测是否再有一次点击,如果有的话,就会缩放页面;否则的话就是一个单击行为。 解决方案: (1)设置不能...

小白向前冲! 1678

【CSS笔记】— 使用calc()计算宽高(vw/vh)

【CSS笔记】— 使用calc()计算宽高(vw/vh) calc()是什么? 简单来说就是CSS3中新增的一个函数,calculate(计算)的缩写。用于动态计算宽/高,你可以使用calc()给元素的各个属性设置值【margin、border、padding、font-size】等, calc()语法 calc的语法就是简单的四则运算, 使用“+”、“-”、“*” 和 “/”四则运算; 可以使...

weixin_34148508的博客 1415

解决element的Table表格组件的高度问题( height只能是数字或者字符串 ),实现height: calc(100vh - 260px) 的效果

一、定义获取浏览器窗口高度的js文件 相当于用js实现了 height: calc(100vh - 260px); 的效果 注意: 260 是顶部和底部导航以及部分自定义布局 ; autoTableHeight.js //获取浏览器窗口高度,处理Element的Table组件的高度问题(height只能是数字或者字符串) function autoTableHeight() { var winHeight = 0; if (window.innerHeight) { wi

ddx2019的博客 9434

Vue前端开发页面高/宽自适配 js中动态获取页面的高度和宽度

问题描述 前端页面往往由于屏幕分辨率大小不一,导致样式错乱,使得在不同分辨率的电脑上,数据也因此变成乱成一堆. 正常情况下显示条件 宽度不够导致异常显示情况下(按钮被挤到下一行了) 因此,计算table的高度时,就必须动态获取页面的高度和宽度 js动态获取页面的高度和宽度 <div id="css_page_adapter"> <div style="width: 100%; min-width: 1300px;"> <sp..

Seven71111的博客 3948

【项目推荐】基于 SpringBoot3 + Spring AI 的游泳馆管理系统:Agent + RAG + Function Calling 一次学全

它不是玩具 Demo,而是一个「业务 + AI」双主线交织的真实系统——预约业务在跑,AI 客服在旁边实时查库作答,两条线通过 Function Calling、RAG、站内消息串成一体。面试官问「你做过什么 AI 项目」时,你能从业务场景讲到架构取舍,从 RAG 切分参数讲到降级兜底——这和「我调了一下 ChatGPT 的 API」是完全不同的两个段位。项目已包含完整的建表 SQL、初始化数据、部署文档,克隆下来就能跑。获取方式:见文末说明 / 后台回复关键词获取。—— 完 ——

深耕开发,专注编程实战。分享源码解析、项目搭建、问题排查笔记,沉淀技术,持续更新。 345
上一篇: 【每日十分钟前端】基础篇13,input里的name、块级元素和行内元素和空(void)元素、JS原型与原型链
下一篇: 【每日十分钟前端】基础篇15,页面可见性、css优先级与权重、null与undefined的区别
黎明初时
博客等级 码龄13年 47粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值