`
smiky
  • 浏览: 254177 次
  • 性别: Icon_minigender_1
  • 来自: 天门
社区版块
存档分类
最新评论

网页打印时元素产生偏移

 
阅读更多

误人子弟了,偏移产生的根本原因应该在于打印页的body的宽高与要打印的纸的尺寸不一样(如A4)而造成的打印预览页面重新布局造成的,以A4为例,将body的宽设成8.3in或597.6pt那么无论是left或right的绝对定位都不会产生偏移。

先写到这,进行步测试后再上结论

 

从下面的两张图可以看出,打印页面上的元素与打印预览上的元素产生的偏移。

可以看出,产生偏移的元素都是绝对定位的,并且指定了left.

 

解决办法:

将left改成right就可以了。

改成right有后遗证,计算left相对而言比较简单,不需要依赖它的父元素,计算right要用父元素的宽度来减去子元素的left+width,在页面不存在resize的情况下一切OK,当存大resize时问题就来了.

页为例,它注册了window的resize事件,在resize时会对填充区域进行resize,而没有管填充区域的父元素,父元素是随着表格的大小自动调整宽高的,在这种情况下就会出现一个问题,父元素的宽高还没有调整好,子元素的right计算己经开始了,也就是说取了个错误的宽度,此时算出的right就会有问题。而left是始终相对于父元素最左端的,不管它宽度变不变都不会有影响.

页:


 

打印预览:


 

 

 引一段话(来自:http://bbs.51js.com/thread-90676-1-1.html):

经过长时间测试,以A4为例,得出打印的结论:
A、打印预览的结果就是打印在纸张上的结果; 【注:对于IE浏览器,打印预览其实是一个网页,是res协议的网页资源。改网页按照特殊的方法弹出,C++,delphi等语言调用webbrowser可以实现弹出这种类型网页,VB似乎不可以实现;该页面地址为 res://ieframe.dll/preview.dlg,里面有大量hmtl和js,本人差不多搞清楚里面的机制,是IE浏览器实现的分页。不过速度比较慢,50页以上就很慢了,大家可以试试;这是IE打印模板页,可以自己定制,很多打印控件就是用这个实现的分页;】
B、所有的html按照节点或者文字流顺序被切割成不同的页面进入打印预览。【至于打印预览的数据是如何生成的,那不得而知了】

C:对于一个html容器node,设置容器node的overflow:hidden,容器内某div的position属性为absolute,假定left属性值保证能在视图内,则打印预览的时候,top属性值是相对于切割之后的分页面的,而不是整个容器的;这样一来若top数值过大,则可能不在分页内部,该div被隐藏,无法被打印出来;

D:对于一个html容器node,设置容器node的overflow:auto,容器内某div的position属性为absolute,假定left属性值保证能在视图内,则打印预览的时候,该div能被打印出来,但位置有所偏移;

E: D部分所讲的div打印位置偏移数值与上下页边距有关,还与div所在页数有关系;至于上下页边距如何取,则看IE浏览器里的数值,一般存储在注册表里; div所在页数,一般根据top的数值来定。

F:打印位置是否准确,还与一个因素有关系,那就是页面的宽度值,页面不同宽度,也会导致div偏移不同;

G:综上所述浮动元素打印
                   偏移值d=function(上边距,下边距,top,width)

本人经过多次测试,发现有具体的规律,只是因为变量太多,太复杂,没有找出来。若有人得出这个具体的浮动元素打印偏移规律公式,那可真是太好了。

我们拭目以待!

 

  • 大小: 186.3 KB
  • 大小: 175.6 KB
分享到:
评论

相关推荐

    报表工具FineReport偏移打印方法

    所针对的情景:如,某服务器(在山东)有报表的项目,PC1机(在江苏)连接着它所在区域的某打印机1和PC2(在浙江)也连接着它所在区域的某个打印机2,当他们访问服务器上的同一张报表进行打印时,可能由于打印机的...

    javascript获取元素偏移量的方法有哪些

    通过四个属性可以获得元素的偏移量: 1、offsetHeight: 元素在垂直方向上占用的空间的大小,(像素)。包括元素的高度,(可见的)水平滚动条的高度,上边框高度和下边框高度。 2、offsetWidth:元素在水平方向上占用...

    web套打中纸张偏移的具体解析

    在web套打时 会出现连续打印输出时,纸张的内容会慢慢发生偏移,就这个现象进行分析,并解决。

    逆时偏移代码,逆时偏移原理,matlab

    包含叠前逆时偏移程序和几篇逆时偏移论文;地震子波的正演与反演

    地震波逆时偏移中的层位校正与去噪方法

    通过对比炮点与检波点波场在不同频率条件下的互相关成像特征,分析其子波频率与周期差异(或时移)条件下逆时偏移成像对层位解释精度与低频噪音产生的影响,提出了改进的时移逆时偏移成像层位校正方法和低频噪声压制策略...

    js获取元素的偏移量offset简单方法(必看)

    下面小编就为大家带来一篇js获取元素的偏移量offset简单方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    偏移转换器 偏移转换器

    偏移转换器 最新偏移转换器 无毒偏移转换器 无后门偏移转换器 偏移转换器 最新偏移转换器 无毒偏移转换器 无后门偏移转换器 我所有收集来的东东都卖4毛钱·· 因为我也有测试··有把木马脱离··

    多边形偏移

    多边形偏移

    pppp_lisp偏移_批量偏移cad_

    在cad中,批量偏移对象,有需要的可以下载,lisp源码 命令pppp

    Web前端开发技术-元素偏移量offset应用.pptx

    元素偏移量offset应用;offset概述;offset含义:offset的含义是偏移量,使用offset的相关属性可以动态地获取该元素的位置、大小等。;获取鼠标位置:鼠标指针在盒子内的坐标位置示意图分析。;案例演示:获取鼠标指针在...

    RTM_rtm偏移_RTM_逆时偏移_RTM逆时偏移_波场模拟_

    逆时偏移波场延拓 用于模拟波场反向传播情况

    关于深度偏移的几个相关概念

    摘 要:本文仅对深度偏移和时间偏移的关系,叠前深度偏移和叠后深度偏移的关系.法向射线与成像射线、射线偏移、相干反演等相关概念进行了分析。明确了所有的偏移公式都是在深度域定义的;只有当前层以上所有各层的...

    线圈偏移角度对无线电能传输特性的影响

    根据两线圈磁耦合谐振式无线电能传输模型,推导了磁...偏移角度大于75°时,随着偏移角度的增大,传输效率急剧下降;随着传输距离的增大,无线电能传输效率下降趋势越来越平缓。Matlab仿真和实验验证了理论分析的正确性。

    偏移计算工具

    偏移计算工具,第一个编辑框填写基质,其余全部填写对应偏移即可!

    js 获取元素在页面上的偏移量的方法汇总

    使用js制作效果时,我们常常要获取某个元素在页面上的偏移量(例如tip提示框功能)。而获取偏移量可以直接获取相对于document的偏移量,也可以获取相对与视口的偏移量(viewpoint)加上页面滚动量(scroll)获得。 1.获取...

    百度地图偏移,高德地图偏移的解决方法

    百度纠偏 高德纠偏 地图纠偏 地图偏移

    SVG对象绕着坐标中心实现旋转缩放平移

    解决svg对象,位置有偏移量时旋转缩放会产生偏移。绕着坐标(x,y)中心,原点 旋转缩放平移

    地震数据处理偏移成像

    地震勘探偏移成像 偏移就是将倾斜反射面移到地下原来的位置,消除绕射,从而详细描述地下特征,如断层面。从这一点看,偏移可以当作是提高空间分辨率的空间反褶积的一种方式。图4-1所示为偏移前后的叠加剖面。在这张...

Global site tag (gtag.js) - Google Analytics