首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

原生 JS 实现一个瀑布流插件

瀑布流布局中的图片有一个核心特点 —— 等宽不定等高,瀑布流布局在国内外网站都有一定规模的使用,比如pinterest、花瓣网等等。那么接下来就基于这个特点开始瀑布流探索之旅。...基础功能实现 首先我们定义好一个有 20 张图片的容器, #waterfall { position: relative; } .waterfall-box...这时候把第 6 张图片和在它上面的图片当作是一个整体后,思路和上述是一致的。代码实现如下: Waterfall.prototype.init = function () { ......这时候要考虑一个点,是滚动到什么位置时触发加载函数呢?...waterfall.on("load", function () { // 此处进行 ajax 同步/异步添加图片 }) 观察调用方式,不难联想到使用发布/订阅模式来实现它,关于发布/订阅模式,之前在 Node.js

2.3K40

原生 js 实现一个前端路由 router

需求 因为我司的 H 5 的项目是用原生 js 写的,要用到路由,但是现在好用的路由都是和某些框架绑定在一起的,比如 vue-router ,framework7 的路由;但是又没必要为了一个路由功能而加入一套框架...状态对象(state object) — 一个JavaScript对象,与用 pushState() 方法创建的新历史记录条目关联。...无论何时用户导航到新创建的状态,popstate 事件都会被触发,并且事件对象的state 属性都包含历史记录条目的状态对象的拷贝。 b....代码实现 3.1 简单版 - 单页面路由 先看个简单版的 原生 js 模拟 Vue 路由切换。 ?...3.2.1 route.js 3.2.1.1 跳转方法 linkTo 像 vue-router 那样,提供了一个 router-link 组件来导航,而我这个框架也提供了一个 linkTo 的方法。

2.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

原生js一个多动症的简历

原生js一个"多动症"的简历 预览地址 源码地址 最近在知乎上看到@方应杭用vue写了一个会动的简历,觉得挺好玩的,研究一下其实现思路,决定试试用原生js来实现。...会动的简历实现思路 这张会动的简历,就好像一个打字员在不断地录入文字,页面呈现动态效果。又好像一个早已经录制好影片,而我们只是坐在放映机前观看。...color: blue; background: red; } 项目搭建 在这个项目中我们 使用webpack2来完成项目的构建 使用yarn来处理依赖包的管理 使用es6的写法 使用部分原生...dom操作api standard.js(代码风格约束利器) 目录结构如下 最重要的几个模块分别是resumeEditor(简历编辑模块) 、 stylesEditor(简历样式编辑模块) 、 以及vQuery...(封装的dom操作模块) 最后app.js(入口模块)再将几个模块的功能结合起来完成整个项目。

6.8K70

原生js一个多动症的简历

原生js一个"多动症"的简历 预览地址 源码地址 最近在知乎上看到@方应杭用vue写了一个会动的简历,觉得挺好玩的,研究一下其实现思路,决定试试用原生js来实现。...会动的简历实现思路 这张会动的简历,就好像一个打字员在不断地录入文字,页面呈现动态效果。又好像一个早已经录制好影片,而我们只是坐在放映机前观看。...color: blue; background: red; } 项目搭建 在这个项目中我们 使用webpack2来完成项目的构建 使用yarn来处理依赖包的管理 使用es6的写法 使用部分原生...dom操作api standard.js(代码风格约束利器) 最重要的几个模块分别是resumeEditor(简历编辑模块) 、 stylesEditor(简历样式编辑模块) 、 以及vQuery(...封装的dom操作模块) 最后app.js(入口模块)再将几个模块的功能结合起来完成整个项目。

5.3K20

使用原生js + websocket 做一个聊天室

今天用它来实现一个聊天室demo,这里选择原生js来实现,因为用惯了vue和react的舒适框架,是时候复习一下原生的api了。...毕竟现在前端技术更新很快,掌握好底层的东西才能做到以不变应万变 demo在线预览: http://101.42.108.39:90/chat/ 思路 后台使用node搭建一个websocket服务器,客户端连接此服务器完成握手...this.sorket.send 【向服务器发送消息】 this.sorket.onmessage 【收到服务端推送消息触发】 后台 ws.createServer=(conn=>{}).listen(3000) 【创建.../chat.js"> 32 33 34 css样式 1* { 2 margin: 0; 3 padding: 0; 4} 5 6body, 7html...174 border: 1px solid #eee; 175 padding: 10px; 176 font-size: 18px; 177 cursor: pointer; 178} 179 js

2K10

实战 | 用原生js一个多动症的简历

又好像一个早已经录制好影片,而我们只是坐在放映机前观看。...这样就完成了原理的第二步,是不是好简单 , 接下来让我们一步步完成它 项目搭建 在这个项目中我们 1、使用webpack2来完成项目的构建 2、使用yarn来处理依赖包的管理 3、使用es6的写法 4、使用部分原生...dom操作api 5、standard.js(代码风格约束利器) 目录结构如下 最重要的几个模块分别是resumeEditor(简历编辑模块) 、 stylesEditor(简历样式编辑模块) 、 以及...vQuery(封装的dom操作模块) 最后app.js(入口模块)再将几个模块的功能结合起来完成整个项目。...可以看出它做的事就是封装一个构造函数Vquery,它的实例会有一些简单的dom操作方法,最后为了能够像jQuery那样使用$().funcName的形式去使用,我们导出了一个匿名函数,在匿名函数中去new

4K10

Js如何创建一个自定义对象

前言 JS中分两种数据类型,一种是基本数据类型,另外就是复杂数据类型,在描述一个事物对象,当比较复杂时,一般可以用数组和对象来存储 在Js中的对象,指的是一系列互相嵌套的键值对,在做web开发时,大多数控件都是以对象或数组的形式来提供给开发人员使用...那如何创建一个对象呢,如何给对象添加属性和方法?...在Js当中有一些方法,如下所示 01 方法1-使用文本字面量形式 这种方法创建对象是比较直接,常见的一种方式,就是使用大括号的方式,可以看做是js对象的本本标识,也就是说,可以通过输出字符串的形式来了解对象有哪些键值对...,它也是JSON形式,用于js的数据存储和传递,给对象添加属性和添加方法 如下代码所示 // 用大括号创建对象的方法,这种方法最常见,使用最频繁 var obj1 = {}; // 使用大括号创建一个内容为空的对象...; 当值为函数时,那么对象下面绑定的就是方法,使用函数的作用厉害之处,除了可以复用代码,另一个就是可以接收传递参数 02 方法2-使用构造器函数创建对象 创建构造器函数创建对象也是一种创建对象的方法

4.6K20

JAVASCRIPT创建一个基于数组的栈结构

栈拥有以下方法: push(element): 元素入栈, 添加一个或多个新元素到栈顶 pop(): 元素出栈,移除栈顶的元素,同时返回被移除的元素 peek(): 返回栈顶的元素,不对站内元素做任何修改...移除栈内的所有元素 size(): 返回栈里的元素个数,该方法和数组的length属性类似 说明: 数组的头部就是栈底,数组的尾部就是栈顶 因为是基于javascript的数组构建的栈,所以会用到各种数组方法,首先创建一个类表示类...s1.声明栈构造函数 1 //在栈的构造函数中声明一个空数组用来保存栈内的元素 2 class Stack { 3 constructor() { 4 this.items = []; 5 } 6...} s2.实现push()方法,元素入栈 使用数组的push方法,将元素放入数组的末尾,也就是栈结构中的栈顶。...此时栈空了 console.log(stack.isEmpty()); //输出true 后面会再写一篇基于JavaScript对象搭建的栈结构实现

97330

炸裂,用JS创建一个录屏功能

OBS studio很酷,但 JavaScript 更酷,现在,我们用 JavaScript 创建自己的录屏功能。 首先,创建一个HTML文件,包含记录按钮和一个播放标签,内容如下: 然后在创建 index.js,监听按钮的点击: let btn = document.querySelector(".record-btn...现在你可能认为选择一个屏幕,然后点击分享,就开始录制了。非也,这个比我们想象中的复杂点。我们要使用 MediaRecorder 来录制我们的视频。...}) // 必须手动启动 mediaRecorder.start() }) 当我们的屏幕被录制下来时,mediaRecorder 会给我们提供分块的数据,我们需要将这些数据存储在一个变量中...---- 代码部署后可能存在的BUG没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug。

1.1K20

一个前端框架 Solid ?性能直逼原生 JS

image.png 到底有多快,我们看看 Benchmark image.png 原生 JS 是 1, Solid 1.05, 比 Svelte 也快,React 跑到了 1.93 。为什么这么快?...increment}> {count()} ); } 这个代码,看起来,可以说跟 React Hook 一毛一样了,可以理解,也期望以后新创建的框架...而不是又创建一套新的语法。真的学不动啊,程序员不要内卷程序员。这点 Solid 框架作者就做得不错。...React 的原理,就会知道,只要是 props 或者 state 改变,React 组件就会重新渲染,而每一次判断是否会重新改变,值是否不一样,也是一整套算法…… Solid 不一样,他另辟蹊径,每一个组件都是一个独立的线程...选用一个框架,如果考量他的性能,也要考量可维护性,编码效率等… 前端的技术发展,从原生 DOM ,到虚拟 DOM,随着浏览器自身性能越来越好,以后会不会又回归到 原生 DOM

1.3K30

使用原生js一个简单的定时访问页面

2020年3月的某一个周末,我在无聊之下想通过js实现刷浏览量的功能,它的优点是不需要引入任何东西,只需要建一个html页面,将我们的js代码加进去就可以执行。...(记得允许你的浏览器打开其他页面) 开始思路,通过js的for循环一直访问文章地址,链接方式使用window.open("地址")的方式 $(function (){ for (var...location.close(); 这个是关闭标签页的功能,但是测试后我们是关闭了我们js的页面,我们实际要关闭的是open的页面,再修改一下,在我们使用open的时候用var定义接受一下对象以便于关闭打开的标签页..."https://www.baidu.com/"); ww.close(); window.open("https://www.baidu.com/"); } 但是实际情况肯定并不会只打开一个页面...null){ window.open(ad[i]); } } } 但是如果要每次要打开100个地址还是对浏览器有影响,所以我们多定义几个定时js

1.1K80
领券