viewport

PDF.js实现个性化PDF渲染(文本复制)

此生再无相见时 提交于 2020-02-08 13:29:47
原文链接: https://segmentfault.com/a/1190000016963084 前不久,产品经理提出要在界面上优雅地展示PDF文档,当即就有了两种实现方式: 实现方式一 使用 embed 标记来使用浏览器自带的pdf工具。 这种实现方式优缺点都很明显: 优点:自带“打印”,“搜索”,“翻页”等功能,强大且实现方便。 缺点:不同浏览器的pdf工具样式不一,且无法满足个性化需求,比如:禁止打印,下载等。 我们的产品经理是挑剔的 😒,于是... 实现方式二 使用Mozilla的 PDF.js ,自定义展示PDF。 下面我们就细致讲述一下使用 PDF.js 过程中遇到的问题。主要包括: 基础功能集成 使用 Text-Layers 渲染 什么是PDF.JS PDF.js是基于HTML5技术构建的,用于展示可移植文档格式的文件(PDF),它可以在现代浏览器中使用且无需安装任何第三方插件。 基础功能集成 1️⃣引用 首先,引用 PDF.js 就遇到了问题, 官网 中提到通过CDN引用或者下载源码至本地。 而我们并不想污染我们的 index.html 并且希望可以对每一个引用的框架有统一的版本管理。于是,我们搜寻到一个包:pdfjs-dist。 通过 npm install pdfjs-dist ,我们引入了PDF.js。 基础功能有两个必须引用的文件: pdf.js pdf

微信小程序新单位rpx与自适应布局

好久不见. 提交于 2020-02-08 08:51:09
rpx是微信小程序新推出的一个单位,按官方的定义,rpx可以 根据屏幕宽度进行自适应 ,在rpx出现之前,web页面的自适应布局已经有了多种解决方案,为什么微信还捣鼓出新的rpx单位?在解释这个单位前,我们先简单了解一下目前的主流的自适应布局解决方案: 响应式( Responsive web design ) rem 流式布局 scale伸缩布局 响应式 响应式布局的问题在于需要维护多个样式文件,维护成本太大,一般的移动H5页面都不会优先考虑。 rem rem是近几年比较流行的方案,淘宝移动web端就是采用此方案,由于1rem=根元素font-size,所以rem布局的本质就是 通过rem把页面按比例分割 达到自适应的效果,因为rem是相对根路径font-size尺寸,不同的页面设置不同的font-size尺寸,即可达到自适应的效果。为了方便理解,我写了一个简单的 rem布局demo ,通过设置 document.documentElement.style.fontSize = window.innerWidth + 'px'; 然后设置 <div class="box"></div> 的宽高等于1rem,就可以使box的宽高自适应各种设备尺寸。因为box的单位1em是跟页面设备的宽对应的,所以能做到自适应各种尺寸。 流式布局 流式布局需要用到百分比或者flex

自适应布局 的 解决方案

喜你入骨 提交于 2020-02-08 03:44:52
曾几何时为了兼容IE低版本浏览器而头痛,以为到Mobile时代可以跟这些麻烦说拜拜。可没想到到了移动时代,为了处理各终端的适配而乱了手脚。对于混迹各社区的偶,时常发现大家拿手机淘宝的H5页面做讨论—— 手淘的H5页面是如何实现多终端的适配 ? 那么趁此 Amfe阿里无线前端团队双11技术连载 之际,用一个实战案例来告诉大家,手淘的H5页面是如何实现多终端适配的,希望这篇文章对大家在Mobile的世界中能过得更轻松。 目标 拿一个双11的Mobile页面来做案例,比如你实现一个类似下图的一个H5页面: 目标很清晰,就是做一个这样的H5页面。 DEMO 请用手机扫下面的二维码 痛点 虽然H5的页面与PC的Web页面相比简单了不少,但让我们头痛的事情是要想尽办法让页面能适配众多不同的终端设备。看看下图你就会知道,这是多么痛苦的一件事情: 点击 这里 查看更多终端设备的参数。 再来看看手淘H5要适配的终端设备数据: 看到这些数据,是否死的心都有了,或者说为此捏了一把汗出来。 手淘团队适配协作模式 早期移动端开发,对于终端设备适配问题只属于Android系列,只不过很多设计师常常忽略Android适配问题,只出一套iOS平台设计稿。但随着iPhone6,iPhone6+的出现,从此终端适配问题不再是Android系列了,也从这个时候让移动端适配全面进入到“杂屏”时代。 上图来自于

Bootstrap框架

我们两清 提交于 2020-02-07 04:13:39
Bootstrap介绍 Bootstrap是Twitter开源的基于HTML、CSS、JavaScript的前端框架。 它是为实现快速开发Web应用程序而设计的一套前端工具包。 它支持响应式布局,并且在V3版本之后坚持移动设备优先。 为什么要使用Bootstrap? 在Bootstrap出现之前: 命名:重复、复杂、无意义(想个名字费劲) 样式:重复、冗余、不规范、不和谐 页面:错乱、不规范、不和谐 在使用Bootstrap之后: 各种命名都统一并且规范化。 页面风格统一,画面和谐。 Bootstrap下载 官方地址:https://getbootstrap.com 中文地址:http://www.bootcss.com/ 我们使用V3版本的Bootstrap,我们下载的是用于生产环境的Bootstrap。 Bootstrap环境搭建 目录结构: bootstrap-3.3.7-dist/ ├── css // CSS文件 │ ├── bootstrap-theme.css // Bootstrap主题样式文件 │ ├── bootstrap-theme.css.map │ ├── bootstrap-theme.min.css // 主题相关样式压缩文件 │ ├── bootstrap-theme.min.css.map │ ├── bootstrap.css │ ├──

手淘适配-flexible

别来无恙 提交于 2020-02-04 14:04:48
目标 拿一个双11的Mobile页面来做案例,比如你实现一个类似下图的一个H5页面: 目标很清晰,就是做一个这样的H5页面。 痛点 虽然H5的页面与PC的Web页面相比简单了不少,但让我们头痛的事情是要想尽办法让页面能适配众多不同的终端设备。看看下图你就会知道,这是多么痛苦的一件事情: 再来看看手淘H5要适配的终端设备数据: 看到这些数据,是否死的心都有了,或者说为此捏了一把汗出来。 手淘团队适配协作模式 早期移动端开发,对于终端设备适配问题只属于Android系列,只不过很多设计师常常忽略Android适配问题,只出一套iOS平台设计稿。但随着iPhone6,iPhone6+的出现,从此终端适配问题不再是Android系列了,也从这个时候让移动端适配全面进入到“杂屏”时代。 上图来自于 paintcodeapp.com 为了应对这多么的终端设备,设计师和前端开发之间又应该采用什么协作模式?或许大家对此也非常感兴趣。 而整个手淘设计师和前端开发的适配协作基本思路是: 选择一种尺寸作为设计和开发基准 定义一套适配规则,自动适配剩下的两种尺寸(其实不仅这两种,你懂的) 特殊适配效果给出设计效果 还是上一张图吧,因为一图胜过千言万语: 在此也不做更多的阐述。在手淘的设计师和前端开发协作过程中:手淘设计师常选择iPhone6作为基准设计尺寸,交付给前端的设计尺寸是按 750px *

移动端自适应方式

蓝咒 提交于 2020-02-04 11:47:22
一、第一种方式是比较简单的,开发速度也比较快。主要利用-webkit-transform:scale()这个属性,比较设计稿和当前屏幕的宽度,或者高度,亦或者取两者的最小值,来进行自适应。 1. 如果宽度自适应,如果兼容iphoneX的话,此时的设计稿的背景图需要延长至1448,内容放在1206内,然后可以把背景图设在一个宽高100%的容器内,background-size:100% auto,需要进行宽度自适应的内容统一放在一个容器内,居中,然后用js统一缩放这个容器,已达到自适应的效果; 2. 如果高度自适应,兼容iphoneX的设计稿需要调整成1218*936,内容放在629中间,进行高度自适应缩放。 3.还有一种就是取两者的最小的那个来自适应。原理同上。 二、 比较简单的页面适配 比如顶部与底部的bar不管分辨率变化,高度和位置不变,中间的内容不管分辨率怎么变,都会位于左右两边等这种简单的布局的开发原则是: 1、文字流式(使用文字随着窗口变化自动换行) 2、控件弹性(flex布局) 3、图片等比缩放等。 三、 网易的做法 动态计算html根元素的font-size,进而通过rem进行适配。 如果设计稿横向分辨率是640px,为了计算方便,取100px的font-size为参照,那么body元素的宽度可以设置为6.4rem,于是html的font-size

移动前端自适应适配布局解决方案

独自空忆成欢 提交于 2020-02-04 11:46:48
方案: 固定一个某些宽度,使用一个模式,加上少许的媒体查询方案 使用flexbox解决方案 使用百分比加媒体查询 使用 rem 1. 简单问题简单解决 我觉得有些 web app并一定很复杂,比如拉勾网,你看看它的页面在iphone4,iphone6,ipad下的样子就知道了: 它的页面有一个特点,就是: 顶部与底部的bar不管分辨率怎么变,它的高度和位置都不变 中间每条招聘信息不管分辨率怎么变,招聘公司的图标等信息都位于条目的左边,薪资都位于右边 这种app是一种典型的弹性布局:关键元素高宽和位置都不变,只有容器元素在做伸缩变换。对于这类app,记住一个开发原则就好:文字流式,控件弹性,图片等比缩放。以图描述: 这个规则是一套基本的适配规则,对于这种简单app来说已经足够,同时它也是后面要说的rem布局的基础。另外对于拉勾这种app可能需要额外媒介查询对布局进行调整的就是小屏幕设备。举例来说,因为现在很多设计稿是根据iphone6的尺寸来的,而iphon6设备宽的逻辑的像素是375px,而iphone4的逻辑像素是320个像素,所以如果你根据设计稿做出来的东西,在iphone4里面可能显示不下,比如说拉钩网底部那个下载框,你对比看下就知道了,这是4: 这是6: · 6下面两边的间距比4多很多,说明拉勾对4肯定是做过适配的,从 代码 也可以证实这一点:

四、移动适配

旧街凉风 提交于 2020-02-03 13:49:38
四、移动适配 文章目录 四、移动适配 移动端适配 viewpoint视口 媒体查询 参考文章 移动端适配 移动端Web页面,即常说的H5页面、手机页面、webview页面; 手机设备屏幕尺寸不一,做移动端的Web页面,需要考虑安卓/IOS的各种尺寸设备上的兼容,针对移动端设备的页面,设计与前端实现怎样做能更好地适配不同屏幕宽度的移动设备; 移动端适配的目的:在不同尺寸的手机设备上,页面“相对性的达到合理的展示”或者“保持统一效果的等比缩放”; viewpoint视口 visual viewport:可见视口,即屏幕宽度; layout viewport:布局视口,即DOM宽度; idea viewport:理想适口,使布局视口就是可见视口; visual viewport = layout viewport * scale 获取屏幕宽度(visual viewport)的尺寸:window. innerWidth/Height 获取DOM宽度(layout viewport)的尺寸:document. documentElement. clientWidth/Height 移动设备默认的 viewport 是 layout viewport,而我们想要的是 idea viewpoint,我们通过使用 meta 标签来实现我们想要的效果。 meta viewport

关于H5移动端开发 iPhone X适配

你离开我真会死。 提交于 2020-02-03 05:14:46
一、 媒体查询、 @media screen and (device-width:375px) and (device-height:812px){ #header { height: 88px; padding-top: 44px !important; } .mui-content { padding-top: 88px !important; } } 二、iOS11 新增特性,苹果公司为了适配 iPhoneX 对现有 viewport meta 标签的一个扩展,用于设置网页在可视窗口的布局方式, <meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover"> 三、测试中发现如果页面内容不够多的时候。底部会有白色的间距,测试为44px,这需要设置页面的高度加44,应该是ios11的bug。 $(".mui-content").css("height",(window.innerHeight+44)+"px"); 来源: https://www.cnblogs.com/xianxianxxx/p/7851104.html

移动页面自适应手机屏幕宽度

微笑、不失礼 提交于 2020-02-01 20:36:15
1、 使用meta标签 ,这也是普遍使用的方法,理论上讲使用这个标签是可以适应所有尺寸的屏幕的,但是各设备对该标签的解释方式及支持程度不同造成了不能兼容所有浏览器或系统。 首先解释该标签的含义: <meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/> 如果你完全不了解这个标签的使用需要先百度一下。 解 释:content中的“width” 这个width指的是什么宽度,我看过的文章对这个都没有解释的很清楚,有几个备选:虚拟窗口的宽度、手机屏幕的宽度、还是页面的宽度等等?经试验这个指 的是虚拟窗口的宽度。了解宽度之后,对后续的各种scale,就应该知道是谁与谁的比例,是 虚拟窗口宽度 / 页面宽度,这样就会有问题出现安卓设备尺寸差异很大光主流的就有宽度为 320 480 720 1080 等各种尺寸而以上标签只能支持一种尺寸,当然有些浏览器会自动缩放使其适应屏幕,但这不是统一标准, 正确的做法是用js动态生成此标签 ,当然,应该先获取屏幕尺寸。 对于此标签还有以下需要分享: 1)、user-scalable=no就一定可以保证页面不可以缩放吗?NO,有些浏览器不吃这一套