使用rem单位时css sprites的坑

在使用rem单位时,用雪碧图(我不喜欢这个名字!)做背景图片在移动端有时会有错位。pc模拟是没有问题的,而且错位的情况不同的手机还不太一样。这里说几个解决的办法。
出现这个问题的原因我找了很久都找不到,再接着找吧!

background-size和background-position都用rem

我实际使用中是用这个方法解决问题的。但是据说这样还是会有错位的时候。

转换为px

这个是一定有效的方法。background-size 和 position都用px写死。然后动态增加.zoom{transform:scale(xxx)}样式。把使用到雪碧图的元素用zoom缩放。

在尝试解决这个问题的时候,我发现background-position的定位方式非常奇怪,顺便也记录在这里。

px,em单位

图片的左上角开始计算与容器左上角的距离。

百分比定位

如果是m% n%,那么就把图片的(m%,n%)的坐标点,放置在容器的(m%,n%)的位置。

rem布局代码

 1 (function (doc, win) {
 2     var docEl = doc.documentElement,
 3         resizeEvt = ‘orientationchange‘ in window ? ‘orientationchange‘ : ‘resize‘,
 4         recalc = function () {
 5             var clientWidth = docEl.clientWidth;
 6             if (!clientWidth) return;
 7             if(clientWidth>=640){
 8                 docEl.style.fontSize = ‘100px‘;
 9             }else{
10                 docEl.style.fontSize = 100 * (clientWidth / 640) + ‘px‘;
11             }
12         };
13     if (!doc.addEventListener) return;
14     win.addEventListener(resizeEvt, recalc, false);
15     doc.addEventListener(‘DOMContentLoaded‘, recalc, false);
16 })(document, window

原文地址:https://www.cnblogs.com/lymvv/p/8400708.html

时间: 2024-10-23 17:58:08

使用rem单位时css sprites的坑的相关文章

关于使用rem单位、css函数calc()进行自适应布局

一.关于css中的单位 大家都知道在css中的单位,一般都包括有px,%,em等单位,另外css3新增加一个单位rem. 其中px,%等单位平时在传统布局当中使用的比较频繁,大家也比较熟悉,不过px单位在进行自适应布局的过程当中则会有些力不从心,大部分的解决方案是使用%为单位配合@media媒介查询来进行自适应布局. 不过还有另外一个css3新添加的单位也同样可以拿来进行自适应布局,在我看来这种方法也更加方便直观. 1.em和rem 首先先介绍一下em,这个单位是根据其父元素的字体大小来进行计算

用nodejs把目录下所有用px做单位的css文件转化为用rem做单位的css文件

20171105 1211/星期日 公司为了更好适配手机端,以前用px做单位的css文件,全部需要转化为用rem做单位,目前是1rem=37.5px;开发新项目时,还是用习惯的px写样式代码,完成UI稿的还原后,再统一转化为用rem做单位,贴上我写的nodejs 代码: var fs = require('fs');var path=require('path'); console.log((__dirname))var oldContent='./px/';var newContent='./

写一个Sublime Text 2插件(CSS文件里px单位替换成rem单位)

三年前我就知道了sublime text 不过那时候用DW还是很爽的样子,后来有天想为难自己了,于是用了两年的vim和五笔,最近又觉得这么好编辑器也可以试试,改变一下自己,用一下的,不过由于工作的原因,没有坚持下来,有时候顺手似乎比先进更重要一些. 最近工作都是做一些移动端的页面,而微信的长按出现二维码有个bug,在ios里缩放的页面长按是不会出现"识别二维码"的.所以需要转换一下,不要让页面缩放,要自适应,这个时候就用rem单位来做的会比较好一些,而我的同事之前开发了一个px to

利用css sprites减少图片请求

sprites是鬼怪,小妖精,调皮鬼的意思,初听这个高端洋气的名字我被震慑住了,一步步掀开其面纱后发觉很简单的东西,作用却很大 什么是CSS Sprites CSS Sprites是指把网页中很多小图片(很多图标文件)做成按规律排列的一张大图上,在显示的时候通过background-image.background-position显示图片特定部分达到和分散的一张张小图片一样的效果. JqueryUI的效果图如下 很多页面常用的小图标,但是我们看看每个小图标的源码的时候会发现,这些小图标的src

CSS Sprites (CSS图像拼合技术)教程工具

什么是CSS Sprites? “Sprite”(精灵)这个词在计算机图形学中有它独特的定义,由于游戏.视频等画质越来越高,必须有一种技术可以智能的处理材质和贴图,并且要 同时保持画面流畅.“Sprite”就是这样一种技术,它将许多图片组合到一个网格上,然后通过程序将每个网格的内容定位到画面上. Sprite被定位到一副静态图片上,并且通过简单的程序或硬件即可正确定位到画面上,一幅幅图片就像是被“变”出来的,他们并没有单独占用内存,所以被取名为“Sprite精灵”. 上图是口袋妖怪的组合图片,可

关于使用rem单位,calc()进行自适应布局

关于css中的单位 大家都知道在css中的单位,一般都包括有px,%,em等单位,另外css3新增加一个单位rem. 其中px,%等单位平时在传统布局当中使用的比较频繁,大家也比较熟悉,不过px单位在进行自适应布局的过程当中则会有些力不从心,大部分的解决方案是使用%为单位配合@media媒介查询来进行自适应布局.不过还有另外一个css3新添加的单位也同样可以拿来进行自适应布局,在我看来这种方法也更加方便直观. em和rem 首先先介绍一下em,这个单位是根据其父元素的字体大小来进行计算的,即1e

如何在手机项目中使用rem单位

rem这是个低调的css单位,近一两年开始崭露头角,有许多同学对rem的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我对rem综合评价是用来做web app它绝对是最合适的人选之一. rem是什么? rem(font size of the root element)是指相对于根元素的字体大小的单位.简单的说它就是一个相对单位.看到rem大家一定会想起em单位,em(font size of the element)是指相对于父元素的字体大小的单位.它们之间其实很相似,只不过一

gulp.spritesmith修改px为rem单位

移动端开发中,使用gulp.spritesmith进行小图sprite并生成样式,但由于spritesmith默认是以px为单位,所以就把插件的内容修改了下让生成rem单位并且能把background-size设置为雪碧图的宽高. 1.首先修改gulp.spritesmith\node_modules\spritesheet-templates\lib\spritesheet-templates.js ['x', 'y', 'offset_x', 'offset_y', 'height', 'w

Web优化 --利用css sprites降低图片请求

sprites是鬼怪,小妖精,调皮鬼的意思,初听这个高端洋气的名字我被震慑住了,一步步掀开其面纱后发觉非常easy的东西.作用却非常大 什么是CSS Sprites CSS Sprites是指把网页中非常多小图片(非常多图标文件)做成按规律排列的一张大图上,在显示的时候通过background-image.background-position显示图片特定部分达到和分散的一张张小图片一样的效果. JqueryUI的效果图例如以下 非常多页面经常使用的小图标.可是我们看看每一个小图标的源代码的时候