ps保存像素图的2倍稿为什么比3倍稿像素低

PS常见问题
ps保存时提示内存不足(RAM)的处理
&&&第一先把其他文件关掉在试试;
  第二修改暂存盘(编辑---首选项---暂存盘)可以选两三个暂存盘(不要选C盘啊)不过这个一般要重启PS才有效的,所以文件保存不了只能从做了;
  第三保存JPG的时候选择第一个基线标准就行了,不要选第二个优化。
Photoshop中关于配置的15条技巧
1、在“编辑&首选项&文件处理[Ctrl+K,
Ctrl+2]”中,你可以对显示在“文件&最近打开文件”子菜单中最近打开的文件设置数目。Photoshop会秘密地对最近的30个文件保持追踪记录,但它不会理会你所指定的编号:它只会显示出你指定的几个条目。实际上,你可以增加里面所显示的最近文件数,这样就能够方便你迅速地查看。
  2、Photoshop要求一个暂存磁盘,它的大小至少要是你打算处理的最大图像大小的三到五倍——不管你的内存究竟有多大。
  例如,如果你打算对一个5MB大小的图像进行处理,你至少需要有15MB到25MB可用的硬盘空间和内存大小。
  3、如果你没有分派足够的暂存磁盘空间,Photoshop的性能则会受到影响。Photoshop所占用的聂存受到可用暂存磁盘空间的限制。因此,如果你有1GB大小的内存,并指示Photoshop能够使用其中的75%,但仅有200MB能够用作设计时的暂存磁盘,那么大多数情况下,Photoshop就会使用200MB。
  注意:要获得Photoshop的最佳性能,将你的物理内存占用的最大数量值设置在50%——75%之间。[Ctrl+K,
Ctrl+8](编辑&首选项&内存与图像高速缓存)。
  你不应将Photoshop的暂存磁盘[Ctrl+K,
Ctrl+7](编辑&首选项&增效工具与暂存盘)与你的操作系统设置在同一个分区,因为这样做会使Photoshop与你的操作系统在争夺可用的资源,这样就会导致整体性能的下降。
  4、在打开Photoshop时按下Ctrl和Alt键,这样你就能在Photoshop载入之前改变它的暂存磁盘。
  5、要将所有的首选项还原为默认值,就在打开Photoshop或ImageReady之后立即按下Ctrl+Alt+Shift。此时就会出现一个对话框,询问你是否确认需要重置。
  6、通常,到你选择一个历史记录接着对图像进行更改时,所有活动记录下的记录都会被删除,或者更准确地来说,是被当前的记录所替代。然而,如果你启用了“历史记录”浮动面板中的“允许非线形历史”选项,你就可以选择一个记录,对图像做出更改,接着所做的更改就会被附加到“历史纪录”浮动面板的底部,而不是将所有活动记录下的记录都进行替换。你甚至还可以在不失去任何在其下方的记录的情况下删除一个记录。
  注意:在历史纪录之间的水平线颜色指示了它们的线性关系。用白色进行分割表示线形历史纪录,而黑色则表示非线形历史记录。
  一个非线形历史不仅非常占用内存,它也十分地令人难以理解。
  7、可以使用“编辑&首选项&文件处理”中的“图像预览”选项[Ctrl+K,
Ctrl+2]来保存自定义的图标以,并预览Photoshop文档的图像:
  “总是储存”:将自定义图标或是图像预览(在Photoshop“图像”页卡中的图像“属性”对话框内)保存到你的图像中。
  注意:启用图像预览通常会将文件大小增加大约2KB。
  “储存时询问”:能够让你在“储存为”对话框中触发“缩略图”选项。
  注意:这个选项并不是真正地会在保存时询问;它仅仅是当你保存图像时让“缩略图”选项可用。
  “总不储存”:禁用图像预览及自定义图标。这个选项同时也会禁用“储存为”对话框中的“缩略图”选项。
  小贴士:你可以通过Photoshop中图像的“属性”对话框的“图像”标签页中,“生成缩略图”选项来触发生成图像预览。
  关于自定义方面
  8、有一个方法能够删除你不需要的增效工具(.8be)、滤镜(.8bf)、文件格式(.8bi)等等,那就是将它们的文件名(或包含它们的文件夹)之前使用一个颚化符号(~)。Photoshop就会自动忽略任何以“~”开头的文件或文件夹。
  例:要禁用“水印”增效工具,只需要将文件夹的名字改成“~Digimarc”。
  9、你可以通过对你喜欢的应用程序在“Helpers”文件夹中创建快捷键来自定义“文件&跳转到”以及“文件&在选定浏览器中预览”菜单。
  要将你喜欢的图像应用程序添加到Photoshop的“文件&跳转到”子菜单中,只需要在“Jump
To Graphics Editor”目录下创建一个快捷方式。
  要在ImageReady的“文件&跳转到”子菜单中创建你自己的HTML编辑器,你可以在“Jump
To HTML Editor”目录下创建一个指向你所需要的应用程序的快捷方式。
  要在你的“文件&在选定浏览器中预览”子菜单中添加你喜欢的浏览器,那么就在“Preview
In”目录中创建一个快捷方式。
  注意:要在相关的菜单中显示你所设置的应用程序,你需要重新启动Photoshop/ImageReady。
  关于“在选定浏览器中预览”的建议:要在“文件&在选定浏览器中预览”子菜单(或“在选定浏览器中预览”按钮)中选择浏览器,可以将这个浏览器设定为默认
[Ctrl+Alt+P]。这个浏览器很快就会设置生效,且在下一次你启动ImageReady时也会续留。
  注意:虽然在“文件&跳转到”子菜单中你可以添加其它的图像应用程序,但你无法改变它们所默认的图像应用程序。ImageReady的默认“跳转到”的图像应用程序是Photoshop,而Photoshop的默认“跳转到”的图像应用程序是ImageReady。
  10、要让Windows(特别是95/NT)使用定制的显示器匹配曲线,只需要如下操作:
  (1)在开始菜单的“启动”中删除“Adobe
Gamma Loader”。
  (2)确定ICM曲线的路径/名称(基本上是处在C:WinNTSystem32Color中)。
  (3)运行RegEdit,找到如下项目:
  HKEY_LOCAL_MACHINE&Software&Adobe&Color&Monitor&Monitor0
  (4)创建一个新的项,叫做“Monitor
  (5)在这个显示器曲线的项中输入步骤2中的路径/名称。
  注意:在设置了这个曲线后,由于Adobe
Gamma已经重新配置了Adobe Gamma Loader,因此不要再运行它。
  其他一些杂项
  11、要想释放你的内存,你可以选择“编辑&清理&历史纪录”,但这样做就清空所有打开文档的历史纪录。
  注意:如果仅需要清理活动文档的历史纪录,那么请按下Alt键并在历史纪录浮动面板菜单中选择“清除历史纪录”。这样就能够在不改变图像的情况下清除所有的历史纪录。
  警告!以上的命令是无法撤销的!
  12、要计算图像文件的大小,可以使用以下等式:
  文件大小=分辨率的平方x宽x高x色深/8192(bit/KB)
  如果是24位的图像,例如处在屏幕分辨率为72dpi时则使用:
  文件大小=宽x高x3/1024
  小贴士:用1024去除(KB/MB)就能够以MB来决定文件的大小。
  13、要确保直方图的级别对话框精确,则关闭“编辑&首选项&内存与图像高速缓存”[Ctrl+K,
Ctrl+8]中的“使用缓存统计”钩选框。
  14、要创建网络安全颜色,须确保色彩的R、G和B元素都是十六进制数的33或十进制的51的倍数,任何以下的值都是可接受的:00
(0)、33 (51)、66 (102)、 99 (153)、CC (204)、FF
  15、由于压缩算法是对JPEG和PNG的像素为8的正方形可用,因此如果图像文件能够按8进行切割,它的大小就能够有所缩减。
photoshop怎么批量修改图片大小
有时候拍照后留下的照片过于巨大,强烈压榨了电脑硬盘的空间,那么,我们就需要这样一种方法改变一下图片的大小。
  工具/原料
  Photoshop与超大图片
  步骤/方法
  1.打开Photoshop,按alt+F9,打开“动作”面板;
  2.然后点击上面图片下面一行中那个文件夹标志的“创建新组”按钮,名字自己起,我起的如图,在这个组下点击文件夹右边那个“创建新动作”按钮,在弹出的对话框中名字写“改变图片大小”到这里PS里的按钮千万不要乱点了,不然电脑会罢工。进行下一步骤。
  3.打开“文件”下拉菜单,打开一幅图片,在“图像”下拉菜单中选择“图像大小”,在对话框中输入你所需要的图片大小参数,按ctrl+alt+shift+s存储这个图片,存储位置随意,存储格式最好使用JPG的,然后关闭这个图片。这是在上图中的“改变图片大小”的小三角下最会出现下图中的几个步骤;
  4.然后神奇开始,依次点击“文件--自动--批处理”,这时就打开了批处理面板,在组合上选择“我的设置”,动作选择“改版图片大小”,源选择“文件夹”,通过选择按钮选中你所要改变图片大小的那个文件夹,勾选“覆盖动作中的“打开”命令”,然后点击“确定”,很多很多张图片就这样改变了大小,不会占用电脑那么多的空间了。
  注意事项
  PS扩展:解释一下这个过程的原理:其实这个过程就是一个录像的过程,在“改变图片大小”里存储了你所操作改变图片大小的动作过程,然后使用批处理应用到一个文件夹里的所有图片,省下了自己无休止的点击。还有这个批处理的原理可以应用于很多的批量设置,如多张图片的调色、对比度等等。
PS中怎样批处理
不知道大家有没有接触过PS里面的批处理呢,当我们要完成数百张照片缩放大小的时候,当你要完成数十张照片调换颜色的时候,这时候我们可以利用到PS里面的批处理了,当然前提是我们要进行统一的动作时才能应用批处理的哦。但首先要了解的就是怎么设置批处理里面的选项才能让批处理顺利完成。
  步骤方法
  1、我们先将将要进行批处理的文件保存在同一个文件夹内,然后拷贝(复制)一份(为了避免再次用到源文件。在PS中打开文件夹中的其中一个图片。
  2、在对图片进行调整之前,我们要先准备录制接下来的动作。在动作面板中添加一个新的动作。然后点击开始录制按钮。
  接下来就可以对图片进行编辑了。
  3、对单张的图片进行编辑完成以后,保存并关闭图片,然后单击动作面板上面的停止按钮
  4、文件——自动——批处理
  5、在目标的设置的时候一定要注意,为了操作部繁琐,使动作连续进行我们要选“存储并关闭”意思就是说当我们的图片每一张批处理完成以后就会自动的存储并关闭了。
photoshop常见问题集
1.什么是Action,如何使用?
  答:Action实际上就是Photoshop的宏文件,扩展名为*.atn。在Photoshop中选择Windows&Show
Actions,可打开Action面板,默认状态下,面板上会有一些Photoshop附赠的一些Action。单击面板右上角的小三角形,会弹出一个菜单。一般调用Action时,最好先用菜单中的Clear
Actions清空一下面板,再用Load
Actions调出Action文件,便可开始使用了。使用Action有两种界面,一种是在面板的底部有一排按钮,按一下"Play"键,Action便开始运行了;另一种,要在菜单中选取Button
Mode才会出来,这种界面是用按钮来表示Action,单击该按钮便会运行。
  2.什么是Channel?
  答:Channel在RGB模式中是指红,绿,蓝三色通道,它们一起决定图像的颜色和亮度,另外还有alpha通道的概念,alpha通道是用来保存选择(selection)信息的,对alpha通道的编辑和修改并不会影响到原图像的颜色和亮度,所作用的仅仅是选择。例如,建立一个选择后,可用Selection&Save
Seletion将其存在#4通道,即alpha通道,该通道可用Selection&Load
Selection调出。有些文件格式可以保存alpha通道的信息,如PSD,TIF等等。
  3.用Photoshop做的透明背景GIF图,常常边缘颜色去不干净,特别是动态GIF的边缘,有深色或者白色的小粒清不干净……有什么好方法清除?
  答:用魔棒时不要选消锯齿选项。
  4.为什么屏幕显示和打印出来的效果相差很大?
  答:在Photoshop中我们通常在RGB模式下编辑图像,但打印机使用的是CMYK颜色体系,而RGB所能表示的颜色数是多过CMYK的,所以有些颜色能在屏幕上看到,打印机却不能正确还原,它会自动选取最相近的颜来替换。另外,显示器的显示也会有一定的误差,这可以通过校正显示器来修正,具体步骤一般Photoshop书都有说明。
  5.有些Plugin显示在屏幕以外,怎么办?
  答:在Photoshop中一次装载了过多的Plugin之后,PS中的Filter那个菜单可能会超过窗口的高度,对此,有一个方法,虽然麻烦一点,却也行之有效。PS4有一个新特性,它可以搜索Plugins目录下的子目录甚至快捷方式并自动装载。利用这个特性,可将你的Plugin分成几组存于各个目录中,要调用某组Plugin,只需在Plugins目录中创建一个指向那组Plugin目录的快捷方式即可。
  6.在Photoshop中如何勾勒鸡蛋的外形?
  答:可以这样做:先用椭圆选取工具划出一个近似于鸡蛋外形的选择,然后Windows&Show
Paths打开Path面板,在菜单中选择Make Work
Path把选择变为Path,然后调整曲线的弧度即可。
  7.在Photoshop中如何绘制虚线?
  答:先打开Brushes面板,双击你用来画虚线的刷子,把spacing调到100%以上,便可画虚线了:用笔刷点一下起点,按住shift,再点一下末点,两点之间就画上虚线了。
  8.如何绘制圆角矩形?
  答:同画鸡蛋一样,先创建矩形选择,再转为path,在四个角的两边分别加上两个节点,再删去四个角,调一下弧度就行了。
  9.Action和滤镜有什么区别?
  答:Action只是Photoshop的宏文件,它是由一步步的Photoshop操作组成的,虽然它也能实现一些滤镜的功能,但它并不是滤镜。而滤镜本质上是一个复杂的数学运算法则,也就是说,原图中每个像素和滤镜处理后的对应像素之间有一个运算法则。
  10.Copy,Paste之后如何使影像自然溶合?
  答:可以用Layer&Matting&...进行褪边,但如果在copy之前选择时Feather
1-2个pixels效果可能更好。也可以在粘贴之后,进入Layer
Mask方式对边缘进行细节修理。
  11.有一幅图,边缘想晕开过渡到透明,怎么做 ?
用背景透明+Gaussian Blur晕开的边缘太硬了,不能完全过渡到透明……怎么做?
  答:选后做一次FEATHER,再反选切除。
  12.安装了一些Photoshop的插件,但在启动Photoshop之后却发现找不到这些插件。但在别人的机器上可以正常使用,说明插件本身并没有问题。应该怎么做才能使用这些插件呢?
  答:有些插件对Photoshop版本是有规定的,如果你的Photoshop版本比较低,那么将不能使用一部分插件。另外还有一种可能是插件的路径安装不对,只有安装在Photoshop安装目录中的Plug-Ins目录才可以,否则很有可能无法正常使用这些插件。
  13.机器配置不好,在运行Photoshop的时候速度不够快。尤其进行一些滤镜处理的时候速度更加慢,用什么“软”方法提高Photoshop的运行速度?
  答:确实Photoshop是吃内存的“大户”,在物理内存紧张的情况下运行Photoshop会影响速度。你可以在运行Photoshop之前关闭其他的应用程序,释放出一部分内存。在Photoshop的设置中你还可以设置内存的占用情况,这样可以将更多的内存给Photoshop使用。要注意一点,将过多的内存分配给Photoshop使用时,一定不要再运行其他程序,这样很容易就会导致系统崩溃。
  14。给图像添加汉字时总会出现半个汉字的情况,请问这种情况应该如何解决?
  答:这是字库的原因,在使用文鼎字库的时候如果间距没有设置好,就会出现半个汉字的情况。建议你使用其他中文字体,如方正字库等,这样问题就可以解决。
  15.在使用Photoshop
7.0中的吸管工具时,当鼠标停留在图像的某一点的时候,右边面板上的颜色数据信息后面多了一个“!”,这是怎么回事?对取色有什么影响?
  答:这是Photoshop
7.0的新特征之一,在信息后面出现“!”说明图像所采用的色彩深度超出了打印机所能打印的颜色范围。在计算机上面是看不出来的,但打印处理的效果会与在屏幕上看差很多。如果不进行手动调整的话,打印的图像会很不理想。如果只在电脑上处理,而不打印的话,则不用去理会这个提示。
  16.怎样在圆角的图形中设置图形的阴影?
  答:PS里有一个图层效果,不管你的图形是什么形状的,只要单独做在一个层里,就可以实行这个效果,里面有所需要的图形阴影设置。
  17.用钢笔工具钩的路径再用放射工具总是渐变放射,由粗到细,怎样成一条直线?
  答:1.笔工具钩的路径,再选取图章及喷枪,然后在路径面版中直接拖动工作路径到描边按钮上,就能出现一条直线效果。2.笔工具的动力设置关闭(在钢笔工具状态行最后一项)或reset
用钢笔工具钩下一图像后,怎样抠到新建的文件中去?
  答:用钢笔工具钩出图像以后,把路径变成选区,然后新建一个文件,使用复制、粘贴或者直接拖动选区到新键文件上都可。
用直线工具画一个直线后,怎样设置直线由淡到浓的渐变?
  答:用直线工具画出直线后,1.把它变成选区,填充渐变色,选前景色到渐变透明。2.在直线上添加蒙版,用羽化喷枪把尾部喷淡,也可达到由淡到浓的渐变。
  20.做一个等腰梯形怎样精确控制它的大小?
  答:1.由变换里的透视功能就能精确的控制它,快捷键CTRL+T。2.TRL+T,再按住CTRL+SHFIT+ALT
,用鼠标控制顶点,就会以等腰梯形控制。
怎样把做好的方框拉成别的形状?
  答:把做好的方型变成选区,并把选区变成工作路径,然后添加节点,就能变成其他形状。
怎样使一个图片和另一个图片很好地融合在一起[包括看不出图像的边缘]?
  答:1.选中图片,实行羽化,然后反选,再按DELETE,这样就可以把图片边缘羽化为了达到好的融合效果,你可以把羽化的像素设定的大点,同时还可以多按几次DELETE,那样融合的效果更好。2.在图片上添加蒙版,然后选羽化的喷枪对图片进行羽化,同样能达到融合的效果。最后别忘了把层的透明度降低,效果会更好。
在PS中写入文字,怎样选取文字的一部分?
  答:把文字层转换成图层,然后在层面版上按住CTRL,用鼠标点击转换成图层的文字层就能选中全部文字,然后按住ALT键,就会出现+_的符号,然后选中不需要的文字,那么留下的就是需要的文字。
  24.怎样使文字边缘填充颜色或渐变色?
  答:文字边缘填充颜色,可描边功能。如要给文字边缘使用渐变色,先新建一个透明层,然后选中文字,然后在图层中选中透明层,实行描边功能,然后把描边的层变成选区,填上渐变色即可。
  25.写入一段文字,可否在同一图层选取其中的一个文字填充渐变色?
  答:把文字层转换成图层,然后在层面版上按住CTRL,用鼠标点击转换成图层的文字层就能选中全部文字,然后按住ALT键,就会出现+_的符号,然后选中不需要的文字,那么留下的就是需要的文字,在用渐变色填充就可以了。
  26.问:我是新手,觉得钢笔工具很不好控制,有什么好的方法或者技巧呢?
  答:钢笔工具的关键是在节点,你的节点选择好的位置,那么你所画出的弧度就会很漂亮,记得要多用,多练。
  27.用PHOTOSHOP输出AI格式,在MAX里输不进?
  答:PHOTOSHOP输出为AI格式的只能输出路径,你可以进入MAX里面在添颜色。
  28.学了大半年的ps,至今对通道还是不能灵活的应用,请问通道是ps最难的吗?
  答:通道应该分几部分来说:
1.通道是保存信息的地方,通道是按照8位来存储信息的,而PS的图层是24的,这样按照存储格式PSD是很占硬盘空间的,而用通道保存信息的话,那就可以少占用硬盘空间。同时许多标准图像式如:TIF、TGA等均可以包含有通道信息,这样就更大方便了不同应用程序来进行信息共享了。
2.通道层实际是图像层选择区域的映射,完全为黑色的区域表明完全没有选择,完全为白色的区域表明完全选择,灰度的区域由灰度的深浅来决定选择程度。现在网上流行的透明GIF图像,实际上就是包含了一个通道,用来告诉应用程序(如IE浏览器)那些部分需要透明,那些部分不需要透明。3.通道还可以进行图像层的计算合成,从而产生很多特效。另外真正的图像处理专家通过通道来精确的对图像进行调整。通道不管是在R、G、B、还是在C、M、Y、K图像中所显示的都是黑、白、灰三种。所以可以单独把通道分离出来对每张图像进行精确的色彩调整。
  29.用photoshop设计出一个效果图打印到A4纸上,但是我不知道在photoshop新建这个文件的尺寸(也就是定义该文档的长宽各是多少比较合适),打印时分辨率又该设为多少?
  答:A4幅面是210mm*297mm,打印时我想要适当缩小一些,留出边距.PS中分辨率一般为72ppi。
  30.怎么做一个很自然的阳光的效果?
  答:PS滤镜里有一个光照效果,再加上光晕效果就能实现。
  31.下载了一个photoshop的
action,不知道怎么用?
  答:把下载下来的action存放在PhotoshopRequired的目录下,重新启动photoshop,打开action按右边小三角把目录下的action调入就可使用。
  32.我在做特效字的时候,做完后总是有白色的背景,请问如何去掉背景色,使得只能看到字,而看不到任何背景。
  答:新建一个透明层,在透明层上在建立文字成,并完成效果,输出为GIF格式的图片,就能实现背景透明的效果。
  33.请问怎么样在PS中描绘出一个人物的轮廓?
  答:用PHOTOSHOP路径勾人物的轮廓。
  34.装了一个KPT
,在photoshop上却连KPT的影子都看不到?
  答:把它装在PHOTOSHOP的PLUG-INS的例径下才可以用。
  35.建立调整层有是很方便,但怎么能只让调整层作用于同一图层呢?
  答:分别在做几个层的效果,然后在把层合并就可以了。
  36.如何在potoshop将图片淡化?
  答:1.
改变图层的透明度,100%为不透明。2. 减少对比度,增加亮度。3. 用层蒙板。4.
如果要将图片的一部分淡化可用羽化效果。
  37.我在photosho里的新建了一个通道,为什么我按CTRL+点击所建的通道不好使那?出现任何象素都不大于50%,选区边将不可见。
  答:按CTRL+点通道的时候,通道上必须有物体,空的通道是不行的。
  38.PHOTOSHOP中如何将一幅图分割为若干块?用什么工具?步骤如何?
  答:1.任何一个PS版本里面都有裁切这个功能,你使用它就可以完成图片的分割。
2.PS6.0里面有一个专用的裁切工具,你可以使用它来完成分割,并输出为HTML或JPG或GIF等格式。
  39.PHOTOSHOP下什么方法可以很快画出虚线?(包括曲线)
  答:在笔刷的属性里,把笔刷的圆形压扁,然后将笔刷的间隔距离拉大,这样就可以画出虚线。可以先做一个你要用的形状的路径,然后调整笔刷的spacing的值,描边路径就可以产生曲线。
  40.请问如何使用adobe
  答:GAMMA值是针对印刷来说的一种值。如果你的图像与印刷有关的话,那么就需要调整GAMMA值了。如果你的图像只是用来打印或在网上发布,使用默认值就可以了。
  41.ps中,可不可以象pagemake里一样,使文字在一个不规则的框里,并根据框的改动自动改动
  答:不可以,但是PS有一个外挂滤镜,可以使文字绕着路径走,你改变路径,文字也会跟着改变.
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
标签:至少1个,最多5个
本文作者: 本文地址: 本文由
创作,转载请保留此声明。 所有权保留,请勿用于商业目的。
【资源一】基础知识恕不回顾
基础知识参考以下两篇博客:
【资源二】淘宝m站首页的动态实现
学习 首页的实现。
最近读到的新文章《》,和本部分有点关系。暂且加上来以供参考。(updated )
源码进行美化、解读之后,基本布局部分的代码已经被我还原出来了:(补充:后来才发现,早就开源在上了)
!function(win, lib) {
var timer,
= win.document,
docElem = doc.documentElement,
= doc.querySelector('meta[name="viewport"]'),
flexMeta = doc.querySelector('meta[name="flexible"]'),
scale = 0,
flexible = lib.flexible || (lib.flexible = {});
// 设置了 viewport meta
if (vpMeta) {
console.warn("将根据已有的meta标签来设置缩放比例");
var initial = vpMeta.getAttribute("content").match(/initial\-scale=([\d\.]+)/);
if (initial) {
scale = parseFloat(initial[1]); // 已设置的 initialScale
dpr = parseInt(1 / scale);
// 设备像素比 devicePixelRatio
// 设置了 flexible Meta
else if (flexMeta) {
var flexMetaContent = flexMeta.getAttribute("content");
if (flexMetaContent) {
var initial = flexMetaContent.match(/initial\-dpr=([\d\.]+)/),
maximum = flexMetaContent.match(/maximum\-dpr=([\d\.]+)/);
if (initial) {
dpr = parseFloat(initial[1]);
scale = parseFloat((1 / dpr).toFixed(2));
if (maximum) {
dpr = parseFloat(maximum[1]);
scale = parseFloat((1 / dpr).toFixed(2));
// viewport 或 flexible
// meta 均未设置
if (!dpr && !scale) {
// 这里的 第一句有什么用 ?
// 和 Android 有毛关系 ?
var u = (win.navigator.appVersion.match(/android/gi), win.navigator.appVersion.match(/iphone/gi)),
_dpr = win.devicePixelR
// 所以这里似乎是将所有 Android 设备都设置为 1 了
dpr = u ? ( (_dpr &= 3 && (!dpr || dpr &= 3))
: (_dpr &= 2 && (!dpr || dpr &= 2))
scale = 1 /
docElem.setAttribute("data-dpr", dpr);
// 插入 viewport meta
if (!vpMeta) {
vpMeta = doc.createElement("meta");
vpMeta.setAttribute("name", "viewport");
vpMeta.setAttribute("content",
"initial-scale=" + scale + ", maximum-scale=" + scale + ", minimum-scale=" + scale + ", user-scalable=no");
if (docElem.firstElementChild) {
docElem.firstElementChild.appendChild(vpMeta)
var div = doc.createElement("div");
div.appendChild(vpMeta);
doc.write(div.innerHTML);
function setFontSize() {
var winWidth = docElem.getBoundingClientRect().
if (winWidth / dpr & 540) {
(winWidth = 540 * dpr);
// 根节点 fontSize 根据宽度决定
var baseSize = winWidth / 10;
docElem.style.fontSize = baseSize + "px";
flexible.rem = win.rem = baseS
// 调整窗口时重置
win.addEventListener("resize", function() {
clearTimeout(timer);
timer = setTimeout(setFontSize, 300);
}, false);
// 这一段是我自己加的
// orientationchange 时也需要重算下吧
win.addEventListener("orientationchange", function() {
clearTimeout(timer);
timer = setTimeout(setFontSize, 300);
}, false);
// pageshow
// keyword: 倒退 缓存相关
win.addEventListener("pageshow", function(e) {
if (e.persisted) {
clearTimeout(timer);
timer = setTimeout(setFontSize, 300);
}, false);
// 设置基准字体
if ("complete" === doc.readyState) {
doc.body.style.fontSize = 12 * dpr + "px";
doc.addEventListener("DOMContentLoaded", function() {
doc.body.style.fontSize = 12 * dpr + "px";
}, false);
setFontSize();
flexible.dpr = win.dpr =
flexible.refreshRem = setFontS
flexible.rem2px = function(d) {
var c = parseFloat(d) * this.
if ("string" == typeof d && d.match(/rem$/)) {
c += "px";
flexible.px2rem = function(d) {
var c = parseFloat(d) / this.
if ("string" == typeof d && d.match(/px$/)) {
c += "rem";
}(window, window.lib || (window.lib = {}));
注意:淘宝首页在iPhone4上设置的initial-scale是0.5(其他尺寸类似)。
因此,这句在iPhone4上得出的结果是640:
var winWidth = docElem.getBoundingClientRect().
正是因为淘宝这种独特的设置,使得 ios 上 1px边框的问题完美解决(1px变2px, 又被 initial-scale=0.5 缩小了一半)。
【资源三】常规情况下js根据屏幕宽度动态计算
使用js动态计算:
!(function(doc, win) {
var docEle = doc.documentElement,
evt = "onorientationchange" in window ? "orientationchange" : "resize",
fn = function() {
var width = docEle.clientW
width && (docEle.style.fontSize = 20 * (width / 320) + "px");
win.addEventListener(evt, fn, false);
doc.addEventListener("DOMContentLoaded", fn, false);
}(document, window));
【资源四】媒体查询较密集的断点
使用css3 media query 实现
@media screen and (min-width: 320px) {
html {font-size: 14}
@media screen and (min-width: 360px) {
html {font-size: 16}
@media screen and (min-width: 400px) {
html {font-size: 18}
@media screen and (min-width: 440px) {
html {font-size: 20}
@media screen and (min-width: 480px) {
html {font-size: 22}
@media screen and (min-width: 640px) {
html {font-size: 28}
【资源五】强大的单位——vw
使用单位 vw 实现动态计算。
font-size: 31.25 /* 表达式:100*100vw/320 */
不过考虑到国内兼容性的问题,还是结合媒体查询来使用比较好。(媒体查询的断点暂时是借用上面的例子)
@media screen and (min-width: 320px) {
font-size: 100
@media screen and (min-width: 360px) {
font-size: 112.5
@media screen and (min-width: 400px) {
font-size: 125
@media screen and (min-width: 440px) {
font-size: 137.5
@media screen and (min-width: 480px) {
font-size: 150
@media screen and (min-width: 640px) {
font-size: 200
font-size: 31.25
对以上种种方法的综合:
1、meta:viewport,
还是initial-scale为 1;
2、320px屏幕下,把页面根元素html的字体大小设置为50px;
3、鉴于我们拿到的设计图目前是640px宽的基准,这样我们就不用每次自己除以2了,直接在PS中量就好;
4、宽度什么的最好还是用百分比处理;涉及到高度、字体大小之类的则用rem。
eg:设计稿上,div高度为40px;那么css就是 div {height: 0.4}
结果就只剩下一步转换:设计稿上量的长度转化为小数。 50% =& 0.5
这种计算,不要太简单。。。
【方法一】纯粹css,支持calc函数的动态计算;不支持的用css媒体查询断点,优雅降级。
@media screen and (min-width: 320px) {
font-size: 50
@media screen and (min-width: 360px) {
font-size: 56
@media screen and (min-width: 400px) {
font-size: 63
@media screen and (min-width: 440px) {
font-size: 69
@media screen and (min-width: 480px) {
font-size: 75
* 做适当限制
* 大于640的屏幕 固定为100px
* 同时需要对body或者最外层wrapper做max-width: 640px的限制
@media screen and (min-width: 640px) {
font-size: 100
font-size: 15.625
font-size: 15.625
@media screen and (min-width: 640px) {
font-size: 100
【方法二】脚本动态计算
1、initial-scale 为 1;
2、在项目css中(注意不要被公共的base、common之类的影响了,资源加载顺序也是蛮重要的),先把html的fontSize设置为 50px(或者加上媒体查询代码), 避免加载未完成时候样式错乱;
html {font-size: 50}
/* javascript */
!(function(win, doc){
function setFontSize() {
// 获取window 宽度
// zepto实现 $(window).width()就是这么干的
var winWidth =
window.innerW
// doc.documentElement.style.fontSize = (winWidth / 640) * 100 + 'px' ;
// 640宽度以上进行限制 需要css进行配合
var size = (winWidth / 640) * 100;
doc.documentElement.style.fontSize = (size & 100 ? size : 100) + 'px' ;
var evt = 'onorientationchange' in win ? 'orientationchange' : 'resize';
var timer =
win.addEventListener(evt, function () {
clearTimeout(timer);
timer = setTimeout(setFontSize, 300);
}, false);
win.addEventListener("pageshow", function(e) {
if (e.persisted) {
clearTimeout(timer);
timer = setTimeout(setFontSize, 300);
}, false);
setFontSize();
}(window, document));
就这么愉快地结束了。。。
不知道解读了某宝首页的一点点代码,然后发在这里,会不会有什么后果。。。
==================================================
写过这篇博客之后,又陆续读过几篇关于布局的文章。
具体已经忘了,大约是大漠的文章,还有一篇应该是搜车前端的博文,另外应该还有关于手淘首页的分析的文章。
另外,自己也用rem布局实践过几个项目。
不得不说,个人觉得rem布局现在已经可以放弃了。flex布局已经很好用了,早已有之的百分比布局等稍用点心思也并不难。
这篇博客一直想改。但懒惰总是占据着我的身体。
最后再说下,字体大小自适应是错误的,字体大小自适应是错误的,字体大小自适应是错误的。
rem 布局,可以告别了。
迎接 flex 布局吧。
=========================================
这篇博客写于半年前,那时候还是个刚毕业的菜鸟。
偶尔有点想法,看了一些大牛的文章,有了这篇博客。
这也是半年来唯一一篇产出。
5k的浏览量,95收藏,13推荐,已经让我很惊讶了。
谢谢各路大神们的关注。
半年来感受到的前端大环境变化还是很大。虽然在公司没有太多变化,但眼睛总得看着世界吧。
接下来,还得继续学习。
由于手上没什么项目,一直想探索出一套自己的自动化流程,但到现在也只是积累了许多版的草稿。
nodejs方面也得有所探索,nodejs 再加上 shelljs 和 yargs 用起来是真的很爽。(鸣谢阮大神的文章)
算是年终总结了。在前端的路上继续走吧。
=========================================
一点想法:评论区的回复
媒体查询和js动态计算是两种方式。
首先,支持 CSS3 calc方法 和 rem、vw单位的浏览器下,只需要html {font-size: 15.625}这样一句就好,另外加个媒体查询限制下。
之前的一大堆密集的断点只是为了hack不支持calc或者calc的情况。其次,js动态设置html的font-size,只要浏览器支持rem单位即可。
为什么会考虑到密集的mq断点呢,因为当时还在考虑文字大小的自适应问题。
实践证明,字体大小自适应是一种错误的想法。
移动开发在必要情况的下,可以适当使用mq来调整字体大小,但做成完全自适应则是一种存在问题的做法。
因此,这里提到的 calc和vh rem配合的做法,最好只用来做布局的工作。js动态计算也是类似,更适合做布局。
Articles on responsive font:
33 收藏&&|&&350
你可能感兴趣的文章
4 收藏,424
40 收藏,6.9k
46 收藏,2k
本作品 保留所有权利 。未获得许可人许可前,不允许他人复制、发行、展览和表演作品。不允许他人基于该作品创作演绎作品
您好,我想请教一下。目前的设计稿大多都是750的宽度,用媒体查询的话html的font-size应该设置为多少呢?1rem又等于多少px?
您好,我想请教一下。目前的设计稿大多都是750的宽度,用媒体查询的话html的font-size应该设置为多少呢?1rem又等于多少px?
嗯,这就是内联的行内样式(style属性)和css文件中声明的属性的优先级的问题了。另外借着评论说一下最近的想法。这篇博客实际上已经过时了。一直想改,但还没想好。媒体查询和js动态计算是两种方式。首先,支持 CSS3 calc方法 和 rem、vw单位的浏览器下,只需要html {font-size: 15.625}这样一句就好,另外加个媒体查询限制下。之前的一大堆密集的断点只是为了hack不支持calc或者calc的情况。其次,js动态设置html的font-size,只要浏览器支持rem单位即可。为什么会考虑到密集的mq断点呢,因为当时还在考虑文字大小的自适应问题。实践证明,字体大小自适应是一种错误的想法。移动开发在必要情况的下,可以适当使用mq来调整字体大小,但做成完全自适应则是一种存在问题的做法。因此,这里提到的 calc和vh`rem配合的做法,最好只用来做布局的工作。js动态计算也是类似,更适合做布局。但考虑到布局现在已经有flex布局可以使用,百分比布局等稍用点心思也并不难。因此,实际上可以说,rem布局(注意我说的是布局)差不多已经可以放弃了。
嗯,这就是内联的行内样式(style属性)和css文件中声明的属性的优先级的问题了。
另外借着评论说一下最近的想法。这篇博客实际上已经过时了。一直想改,但还没想好。
媒体查询和js动态计算是两种方式。
首先,支持 ```CSS3``` ```calc```方法 和 ```rem```、```vw```单位的浏览器下,只需要```html {font-size: 15.625}```这样一句就好,另外加个媒体查询限制下。之前的一大堆密集的断点只是为了hack不支持```calc```或者```calc```的情况。
其次,js动态设置html的```font-size```,只要浏览器支持```rem```单位即可。
为什么会考虑到密集的```mq```断点呢,因为当时还在考虑文字大小的自适应问题。实践证明,字体大小自适应是一种错误的想法。移动开发在必要情况的下,可以适当使用```mq```来调整字体大小,但做成完全自适应则是一种存在问题的做法。因此,这里提到的 ```calc```和``vh``````rem```配合的做法,最好只用来做布局的工作。```js```动态计算也是类似,更适合做布局。
但考虑到布局现在已经有```flex```布局可以使用,百分比布局等稍用点心思也并不难。因此,实际上可以说,rem**布局**(注意我说的是布局)差不多已经可以放弃了。
我想问问,这个rem究竟该用在什么地方合适呢?我观察到网易手机版首页,全部用的rem,导致页面变宽的话,所有的元素都变大了。看上去非常奇怪。而rem又和%很像,所以既然rem不该用在字体上的话,rem可以用在哪些地方呢?困惑了好久。求解答~
我想问问,这个rem究竟该用在什么地方合适呢?我观察到网易手机版首页,全部用的rem,导致页面变宽的话,所有的元素都变大了。看上去非常奇怪。
而rem又和%很像,所以既然rem不该用在字体上的话,rem可以用在哪些地方呢?困惑了好久。求解答~
想不通淘宝这种自动计算rem的有什么用?之前使用百分比不也挺好的,也是弹性的吗,你能用一句话说出淘宝这个库的作用吗,以及是解决什么问题的。
想不通淘宝这种自动计算rem的有什么用?之前使用百分比不也挺好的,也是弹性的吗,你能用一句话说出淘宝这个库的作用吗,以及是解决什么问题的。
关于总结的第四条——“宽度什么的最好还是用百分比处理;涉及到高度、字体大小之类的则用rem。” 想追问下,为什么宽度不能直接使用rem来定义呢?
关于总结的第四条——“宽度什么的最好还是用百分比处理;涉及到高度、字体大小之类的则用rem。” 想追问下,为什么宽度不能直接使用rem来定义呢?
这个纯属个人观点,和我工作的实际情况有关系。使用宽度使用rem度量当然是可以的,不过有时候百分比还是更好计算,也更明了直观。。假设标准的320p宽度的页面下,html{font-size:50px}的时候,元素width是25%直观还是4rem直观呢?同样,在html{font-size:50px}的情况下,是25%直观还是1.6rem比较直观呢?
这个纯属个人观点,和我工作的实际情况有关系。使用宽度使用rem度量当然是可以的,不过有时候百分比还是更好计算,也更明了直观。。假设标准的320p宽度的页面下,html{font-size:50px}的时候,元素width是25%直观还是4rem直观呢?同样,在html{font-size:50px}的情况下,是25%直观还是1.6rem比较直观呢?
哦,原来是这样,明白你的想法。这里再探讨一个问题,就是你假设的320p宽度标准的页面,因为我实际开发当中用的是640p的宽度标准,定义html{font-size:100px},换算过来1rem就相当于100px,相对也很好理解。你这边开发假定的宽度是320p,是出于某些方面的考虑,还是习惯问题呀!(如果问题脑残,还望见谅)
哦,原来是这样,明白你的想法。
这里再探讨一个问题,就是你假设的320p宽度标准的页面,因为我实际开发当中用的是640p的宽度标准,定义html{font-size:100px},换算过来1rem就相当于100px,相对也很好理解。
你这边开发假定的宽度是320p,是出于某些方面的考虑,还是习惯问题呀!(如果问题脑残,还望见谅)
嗯,我现在在开发过程中,拿到的设计稿一般都是640宽的,psd转换为 html+css 的时候我们是按照320来做的(用css像素来度量的话,iPhone4、iPhone4都是这个尺寸)。在没有使用rem而是直接把字体、高度之类的写死的时候,在ps中量出来宽高、字体什么的每次都得手动除以2再写到css中。。现在我设定的基准是320下面html{font-size:50px},主要是方便每次在ps中测量完了之后不用除以2,纯粹是为了偷懒(懒到就算用了scss之类的我也不愿写 a {font-size: 28px/2;} 这样的表达式)。。就是酱紫。。见笑。。
嗯,我现在在开发过程中,拿到的设计稿一般都是640宽的,psd转换为 html+css 的时候我们是按照320来做的(用css像素来度量的话,iPhone4、iPhone4都是这个尺寸)。在没有使用rem而是直接把字体、高度之类的写死的时候,在ps中量出来宽高、字体什么的每次都得手动除以2再写到css中。。现在我设定的基准是320下面html{font-size:50px},主要是方便每次在ps中测量完了之后不用除以2,纯粹是为了偷懒(懒到就算用了scss之类的我也不愿写 a {font-size: 28px/2;} 这样的表达式)。。就是酱紫。。见笑。。
如何像某宝那样,设置一个最大宽度,当屏幕超过这个宽度,则按照这个最大宽度来计算rem大小呢?
如何像某宝那样,设置一个最大宽度,当屏幕超过这个宽度,则按照这个最大宽度来计算rem大小呢?
css方面,mq按下不表。js方面,在setFontSize函数中,对屏幕宽度winWidth进行判断即可。
var winWidth =
window.innerW
var size = (winWidth / 640) * 100;
// 以 640 为例
doc.documentElement.style.fontSize = (size & 100 ? size : 100) + 'px' ;
不知是这个意思否?
css方面,```mq```按下不表。
js方面,在```setFontSize```函数中,对屏幕宽度```winWidth```进行判断即可。
```javascript
var winWidth =
window.innerW
var size = (winWidth / 640) * 100;
// 以 640 为例
doc.documentElement.style.fontSize = (size & 100 ? size : 100) + 'px' ;
不知是这个意思否?
对!是的,还想请问下脚本动态计算的js,html似乎会自动生成一个 font-size ,我插入媒体查询,但是好像无效,这是为啥?原谅我这低级的问题 - -
对!是的,还想请问下脚本动态计算的js,html似乎会自动生成一个 font-size ,我插入媒体查询,但是好像无效,这是为啥?原谅我这低级的问题 - -
那我这样理解对不对..如果做移动端适应的话,还是rem,布局的话用flex。
那我这样理解对不对..
如果做移动端适应的话,还是rem,布局的话用flex。
嗯,flex布局还是比较有前景的,方便很多。字体如果你需要自适应,还是可以用rem的,不过一般情况下几个媒体查询也就够用了。
嗯,flex布局还是比较有前景的,方便很多。字体如果你需要自适应,还是可以用rem的,不过一般情况下几个媒体查询也就够用了。
用总结里的 方法二 以750px 为列子 应该怎样设置了html的font-size下面一窜判断是否需要变更var size = (winWidth / 640) * 100;
doc.documentElement.style.fontSize = (size & 100 ? size : 100) + 'px' ;
改成html{font-size:100}var size = (winWidth / 750) * 100;在微信上是OK
但是在浏览器上一刷新就 乱了
用总结里的 方法二 以750px 为列子 应该怎样设置了html的font-size
下面一窜判断是否需要变更
var size = (winWidth / 640) * 100;
doc.documentElement.style.fontSize = (size & 100 ? size : 100) + 'px' ;
html{font-size:100}
var size = (winWidth / 750) * 100;
在微信上是OK
但是在浏览器上一刷新就 乱了
按道理来说,确实是应该改的。。至于您说的样式错乱的问题,我暂时没有注意到,能否提供下demo代码?对了,刚写了个, 您可以看一下。。
按道理来说,确实是应该改的。。至于您说的样式错乱的问题,我暂时没有注意到,能否提供下demo代码?对了,刚写了个[demo](http://sandbox.runjs.cn/show/jrunbz67), 您可以看一下。。
看了下你的demo微信打开是也OK的
但是用Safari打开已然错乱 ps我的是ip6 plus 还有一台三星机都一个样
看了下你的demo微信打开是也OK的
但是用Safari打开已然错乱 ps我的是ip6 plus 还有一台三星机都一个样
文蔺,你好!我们是苏州一个创业团队,在找Angular开发人员,能加下我的微信认识一下吗?我的微信号是woodtown,谢谢!
文蔺,你好!我们是苏州一个创业团队,在找Angular开发人员,能加下我的微信认识一下吗?我的微信号是woodtown,谢谢!
诚然flex有很多优点,但是不可避免的兼容,rem还是有他的优点和使用范围的,而不是一味的所有东西全部使用ren。还是需要根据业务需求,场景,考虑使用哪种方案
诚然flex有很多优点,但是不可避免的兼容,rem还是有他的优点和使用范围的,而不是一味的所有东西全部使用ren。还是需要根据业务需求,场景,考虑使用哪种方案
最终还是要根据项目的需求来决定方案
最终还是要根据项目的需求来决定方案
分享到微博?
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。

我要回帖

更多关于 ps保存像素 的文章

 

随机推荐