ios屏幕适配
这篇文章算是迟来的总结,最近做了一个 h5 项目内嵌到 app 页面内联,默认情况下 app 那边不会做任何处理,也就是顶部和底部需要额外处理一下
做法
默认情况下 ios 的顶部状态栏是20px,如果存在刘海则是44px,当然实际开发中也不需要使用 js 来进行判断,因为 ios11 之后...
漫谈系统权限设计
这里不会介绍具体实现的方式,要根据公司的业务来进行调整,下面就聊一聊基本设计的思路。
权限的设计对于一个后台来说至关重要,不过也要根据情况来选择,比如我们不会在一个博客或者个人网站的后台中写上权限控制,因为这是没有必要的,但是对于面向不同用户的产品来说就很有必要了,举个例子来说,滴滴打车的乘...
IntersectionObserver实现图片懒加载
传统的图片懒加载实现思路是判断图片的 top 区域是否小于父级区域,且自身高度加上 top 大于 0,
例如
// 元素是否可视
const viewVisible = el => {
const { top, width, height, left } = el.getBounding...
从form表单来看策略模式
前言
之前写程序的时候为了快速开发写了许多if、else if的语句,当时开发倒是挺爽的,事后维护的时候想骂人,为了不坑自己和其他小伙伴,下面从零开始用一个基础表单 + 策略模式清除if分支语句
<form class="cs-form">
<label>
<span>账号:</s...
优雅处理图片异常
前言
不同浏览器对加载失败图片的图标展示不统一,所以给定一个默认的失败图片就尤为重要。
正好前几天处理了一下公司首页图片 error 默认图片的问题,就趁着记忆没有消失分享一下这篇文章。
error
img 标签有一个 error 事件,通过它我们可以捕捉到异常,使用起来也很简单
<img s...
VuePress插件开发不完全指南
最近用 vuepress 把社区的 typeScript 翻译文章打包成了一个在线文档,不过有一些插件社区没有或者实现的不符合自己定制需求,所以决定自定义实现一个,这篇文化以掘金复制代码功能为例子。
先看一下开发完成的界面
先看一下官方给出的架构图
是不是感觉有点头疼,这里记不住没有关系,...
选择器那些事
失踪人口冒个泡
优先级
入门学习的时候一定就听说过这些概念,在菜鸟教程之类的网站上也肯定学习过,比如类的优先级为 10、标签的优先级为 1,这些都是辅助我们记忆的,下面就来说一说容易出错的点。
.top {
margin: 10px;
}
[class] {
margin: 20px...
jsonp实现原理
简单说一下存在的历史,浏览器存在同源政策,即域名+端口+协议必须一致,很多时候我们需要跨域访问,当然在现在我们可以借助 webpack 的反向代理配合服务器设置 cors 实现访问,但是在之前工程化还没出现的时候就需要有一种方法可以访问所以 jsonp 就出现了。
jsonp 的原理就是浏览器...
长列表优化
前言
在项目中如果能分页实现那最好不过了,不过很多时候长列表不可避免,这里又分两种情况
第一次不用全部加载完成,这种可以使用懒加载或者说无限滚动的方式来实现
另外一种则是一次要渲染全部数据出现
下面就来讨论这两种情况如何进行优化,可以对比列表优化具体实现的源码来看
(注:下面是用 Vue ...
通用迭代器实现
迭代器在很多语言都很常见,js 的 forEach 就是一个迭代器,下面就来介绍实现一个支持数组、对象、类数组的的 each 函数。
前言
写之前先整理一下思路
我们首先需要判断是不是类数组,如果是数组和类数组就使用 for 循环,如果是对象我们就用 for...in 循环。
回调函数的 ...