广告推广媒体,外贸网站优化排名,专业格泰建站,企业网站源码程序多少钱?1. 1pxborder的问题 原因: 设备像素比不同 从移动端的角度说个具体的场景#xff0c;以iphone6为例。 iphone6的屏幕宽度为375px#xff0c;设计师做的视觉稿一般是750px#xff0c;也就是2x#xff0c;这个时候设计师在视觉稿上画了1px的边框#xff0c;于是你就写了“bo…1. 1pxborder的问题 原因: 设备像素比不同 从移动端的角度说个具体的场景以iphone6为例。 iphone6的屏幕宽度为375px设计师做的视觉稿一般是750px也就是2x这个时候设计师在视觉稿上画了1px的边框于是你就写了“border-width:1px”so...1px边框问题产生了。 对设计师来说它的1px是相对于750px的物理像素对你来说你的1px是相对于375px的css像素“实际上你应该是border-width:0.5px”。 解决方案: 1) 媒体查询小数点写法 .border { border: 1px solid #999 }
media screen and (-webkit-min-device-pixel-ratio: 2) {.border { border: 0.5px solid #999 }
}
media screen and (-webkit-min-device-pixel-ratio: 3) {.border { border: 0.333333px solid #999 }
} 2) transform伪类 利用伪类标签根据父级定位大小根据媒体查询缩放实现效果注意别忘记了“transform-origin: left top;” span classborder-1px1像素边框问题/span// less
.border-1px{position: relative;::before{content: ;position: absolute;left: 0;top: 0;width: 200%;border:1px solid red;color: red;height: 200%;-webkit-transform-origin: left top;transform-origin: left top;-webkit-transform: scale(0.5);transform: scale(0.5);pointer-events: none; /* 防止点击触发 */box-sizing: border-box;media screen and (min-device-pixel-ratio:3),(-webkit-min-device-pixel-ratio:3){width: 300%;height: 300%;-webkit-transform: scale(0.33);transform: scale(0.33);}}
} 3) window.devicePixelRatio全局状态管理器修改class类名称 写好不同类对应的css样式,使用JavaScript的window.devicePixelRatio全局状态管理器修改class类名称 注意: 一键换肤的功能也可以参考全局状态管理器修改class类名称达到目的 2. 2x,3x图的适配 原因:设备像素比 方案一: 媒体查询,根据不同的设备像素比填充相应的背景图片: 移动端开发过程中因为手机的dpr(设备像素比不同)我们需要根据dpr来修改图标的大小: 1) 通过mixin,动态修改图标的背景图片。通过media (媒体查询)判断设备的dpr。 bg-image($url) {background-image: url($url 2x.png);media (-webkit-min-device-pixel-ratio: 3),(min-device-pixel-ratio: 3) {background-image: url($url 3x.png);}
}2) css样式中调用 bg-image 方法 div{width:30px;height:20px;background-size:30px 20px;background-repeat:no-repeat;bg-image(special_1);
} 方案二: 写好不同类对应的css样式,使用JavaScript的window.devicePixelRatio全局状态管理器修改class类名称 注意: 一键换肤的功能也可以参考全局状态管理器修改class类名称达到目的 3. 图片在安卓上,有些设备模糊的问题 原因: 今天迁移代码的时候发现有些图片是.9.png格式但是代码上又没这个9我一开始以为这个9是这个图片名字里面的不知道有.9.png格式的图片后面百度了下才发现有这种类型的图片格式然后在图片的名字后面加上9就行了。 png格式图片和9.png格式图片区别: 9.png格式其实相当于把一张png图分成了9个部分九宫格分别为4个角4条边以及一个中间区域4个角是不做拉升的所以还能一直保持圆角的清晰状态而2条水平边和垂直边分别只做水平和垂直拉伸所以不会出现边会被拉粗的情况只有中间用黑线指定的区域做拉伸。结果是图片不会走样 4. 固定定位布局,键盘挡住输入框内容 在移动端开发的时候用到了position:fixed的遮罩蒙层在蒙层里又放置里输入框。当用户sh输入时软键盘会弹起来会遮罩住输入框。 通过resize() 方法触发 resize 事件或规定当发生 resize 事件时运行的函数。 var windheight $(window).height(); /*未唤起键盘时当前窗口高度*/$(window).resize(function(){var docheight $(window).height(); /*唤起键盘时当前窗口高度*/ if(docheight windheight){ /*当唤起键盘高度小于未唤起键盘高度时执行*/$(.submit).css(position,static);}else{$(.submit).css(position,fixed);} });更合理的做法应该是规避这个问题的发生。 在有position:fixed的弹层里不应设置输入框。 5. click的300ms延迟问题和点击穿透问题 原因: 重点由于移动端会有双击缩放的这个操作因此浏览器在click之后要等待300ms看用户有没有下一次点击也就是这次操作是不是双击。 方案一:禁用缩放 meta nameviewport contentuser-scalableno
meta nameviewport contentinitial-scale1,maximum-scale1
复制代码 缺点: 通过完全禁用缩放来达到去掉点击延迟的目的。但是通常情况下我们还是希望页面能通过双指缩放来进行缩放操作比如放大一张图片放大一段很小的文字。 方案二:更改默认的视口宽度 meta nameviewport contentwidthdevice-width随着响应式设计的普及很多站点都已经对移动端坐过适配和优化了这个时候就不需要双击缩放了如果能够识别出一个网站是响应式的网站那么移动端浏览器就可以自动禁掉默认的双击缩放行为并且去掉300ms的点击延迟。如果设置了上述meta标签那浏览器就可以认为该网站已经对移动端做过了适配和优化就无需双击缩放操作了。这个方案相比方案一的好处在于它没有完全禁用缩放而只是禁用了浏览器默认的双击缩放行为但用户仍然可以通过双指缩放操作来缩放页面。 方案三: CSS touch-action touch-action这个CSS属性。这个属性指定了相应元素上能够触发的用户代理也就是浏览器的默认行为。如果将该属性值设置为touch-action: none那么表示在该元素上的操作不会触发用户代理的任何默认行为就无需进行300ms的延迟判断。 方案四: FastClick FastClick 是 FT Labs 专门为解决移动端浏览器 300 毫秒点击延迟问题所开发的一个轻量级的库。FastClick的实现原理是在检测到touchend事件的时候会通过DOM自定义事件立即出发模拟一个click事件并把浏览器在300ms之后的click事件阻止掉。 点击穿透问题: 原因: 使用touchstart去代替click事件,但是在移动端浏览器事件执行的顺序是touchstart touchend click. 使用touchstart去代替click事件有两个缺点: 第一touchstart是手指触摸屏幕就触发有时候用户只是想滑动屏幕却触发了touchstart事件这不是我们想要的结果 第二使用touchstart事件在某些场景下可能会出现点击穿透的现象。 解决方案: 1) 只用touch 把页面内所有click全部换成touch事件touchstart、’touchend’、’tap’ 2) 只使用click(下下策) 3) tap后延迟350ms再处理事件 4) pointer-events 比较麻烦且有缺陷不建议使用mask隐藏后给按钮下面元素添上pointer-events: none;样式让click穿过去350ms后去掉这个样式恢复响应缺陷是mask消失后的的350ms内用户可以看到按钮下面的元素点着没反应如果用户手速很快的话一定会发现 5) fastclick 好用的解决方案不介意多加载几KB的话 不建议使用: 因为有人遇到了bug首先引入fastclick库再把页面内所有touch事件都换成click其实稍微有点麻烦建议引入这几KB就为了解决点透问题不值得 6. iphone和ipad下输入框默认内阴影 解决方案 方法一 !--如果 ui 样式里有边框可以用外层盒子设置边框--
input{border:none;
} 方法二 //在IOS下input 和textarea表单默认会有个内阴影一定程度上影响视觉一致可通过设置下面代码去掉input{-webkit-appearance: none;
}7. 防止升级中页面放大和缩小
meta nameviewport contentwidth device-width,inital-scale1.0,maximun 1.0,user-scalable no8. flex布局 Flex 布局是什么 Flex 是 Flexible Box 的缩写意为弹性布局用来为盒状模型提供最大的灵活性。 任何一个容器都可以指定为 Flex 布局。 .box{display: flex;
}行内元素也可以使用 Flex 布局。 .box{display: inline-flex;
}Webkit 内核的浏览器必须加上-webkit前缀。 .box{display: -webkit-flex; /* Safari */display: flex;
}注意设为 Flex 布局以后子元素的float、clear和vertical-align属性将失效。 容器的属性: flex-directionflex-wrapflex-flowjustify-contentalign-itemsalign-content flex-direction属性 flex-direction属性决定主轴的方向即项目的排列方向。 .box {flex-direction: row | row-reverse | column | column-reverse;
}它可能有4个值。 row默认值主轴为水平方向起点在左端。row-reverse主轴为水平方向起点在右端。column主轴为垂直方向起点在上沿。column-reverse主轴为垂直方向起点在下沿。 flex-wrap属性 默认情况下项目都排在一条线又称轴线上。flex-wrap属性定义如果一条轴线排不下如何换行。 .box{flex-wrap: nowrap | wrap | wrap-reverse;
} 1nowrap默认不换行。 2wrap换行第一行在上方。 3wrap-reverse换行第一行在下方。 flex-flow属性 flex-flow属性是flex-direction属性和flex-wrap属性的简写形式默认值为row nowrap。 .box {flex-flow: flex-direction || flex-wrap;
}justify-content属性 justify-content属性定义了项目在主轴上的对齐方式。 .box {justify-content: flex-start | flex-end | center | space-between | space-around;
} 它可能取5个值具体对齐方式与轴的方向有关。下面假设主轴为从左到右。 flex-start默认值左对齐flex-end右对齐center 居中space-between两端对齐项目之间的间隔都相等。space-around每个项目两侧的间隔相等。所以项目之间的间隔比项目与边框的间隔大一倍。 align-items属性 align-items属性定义项目在交叉轴上如何对齐。 .box {align-items: flex-start | flex-end | center | baseline | stretch;
} 它可能取5个值。具体的对齐方式与交叉轴的方向有关下面假设交叉轴从上到下。 flex-start交叉轴的起点对齐。flex-end交叉轴的终点对齐。center交叉轴的中点对齐。baseline: 项目的第一行文字的基线对齐。stretch默认值如果项目未设置高度或设为auto将占满整个容器的高度。 align-content属性 align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线该属性不起作用。 .box {align-content: flex-start | flex-end | center | space-between | space-around | stretch;
} 该属性可能取6个值。 flex-start与交叉轴的起点对齐。flex-end与交叉轴的终点对齐。center与交叉轴的中点对齐。space-between与交叉轴两端对齐轴线之间的间隔平均分布。space-around每根轴线两侧的间隔都相等。所以轴线之间的间隔比轴线与边框的间隔大一倍。stretch默认值轴线占满整个交叉轴。 项目的属性: 以下6个属性设置在项目上。 orderflex-growflex-shrinkflex-basisflexalign-self order属性 order属性定义项目的排列顺序,数值越小,排列越靠前,默认为0 .item {order: integer;
} flex-grow属性 flex-grow属性定义项目的放大比例默认为0即如果存在剩余空间也不放大。 .item {flex-grow: number; /* default 0 */
}flex-shrink属性 flex-shrink属性定义了项目的缩小比例默认为1即如果空间不足该项目将缩小。
.item {flex-shrink: number; /* default 1 */
}如果所有项目的flex-shrink属性都为1当空间不足时都将等比例缩小。如果一个项目的flex-shrink属性为0其他项目都为1则空间不足时前者不缩小。 负值对该属性无效。 flex-basis属性 flex-basis属性定义了在分配多余空间之前项目占据的主轴空间main size。浏览器根据这个属性计算主轴是否有多余空间。它的默认值为auto即项目的本来大小。 .item {flex-basis: length | auto; /* default auto */
}它可以设为跟width或height属性一样的值比如350px则项目将占据固定空间。 flex属性 flex属性是flex-grow,flex-shrink和flex-basis的简写默认值为0 1 auto。后两个属性可选。 .item {flex: none | [ flex-grow flex-shrink? || flex-basis ]
}该属性有两个快捷值auto(1 1 auto) 和 none (0 0 auto)。 建议优先使用这个属性而不是单独写三个分离的属性因为浏览器会推算相关值。 align-self属性 align-self属性允许单个项目有与其他项目不一样的对齐方式可覆盖align-items属性。默认值为auto表示继承父元素的align-items属性如果没有父元素则等同于stretch。 .item {align-self: auto | flex-start | flex-end | center | baseline | stretch;
}该属性可能取6个值除了auto其他都与align-items属性完全一致。 9.px,em,rem,%,vw,vh,vw这些单位的区别? 1) px px就是pixel的缩写意为像素。px就是一张图片最小的一个点一张位图就是千千万万的这样的点构成的比如常常听到的电脑像素是1024x768的表示的是水平方向是1024个像素点垂直方向是768个像素点。 2) em 参考物是父元素的font-size,具有继承的特点.如果自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个固定的值 3) rem css3新单位,相对于根元素html(网页)的font-size,不会像em那样,依赖于父元素的字体大小,而造成混乱 4) % 一般说是相对于父元素,但不是很准备 对于普通定位来说是就是我们理解的父元素对于position:absolute的元素是相对于已经定位的父元素对于position:fixed的元素 是相对于ViewPort(可视窗口) 5) vw css3新特性,viewpoint width的缩写,视窗宽度,1vw等于视窗宽度的1% 举个例子浏览器宽度375px, 1 vw 375px/100 3.75px。 6) vh css3新单位.viewpoint height的缩写,视窗高度,1vh等于视窗高度的1% 7) vm css3新单位,相对于视口的宽度或高度中较小的那个,其中最小的那个被均分为100单位的vm eg: 浏览器高度900px,宽度1200px,取最小的浏览器高度,1vm900px/1009px 10. 移动端适配-dpr 定义: 像素,又称为画素,是图像显示的基本单位,英文pixel像素是网页布局的基础.一个像素就是计算机能够显示一种特定颜色的最小区域.当设备尺寸相同但像素变得更密集时,屏幕能够显示的画面的过渡更细致,网站看起来更明快 ppi: 屏幕上每英寸可以显示的像素点的数量,即屏幕像素密度 分类: 像素分为2种: 设备像素和css像素 设备像素: 设备屏幕的物理像素,任何设备的物理像素都是固定的 css像素: 又称为逻辑像素,是为web开发者创造的,在css和JavaScript中使用的一个抽象的层 每一个css声明和几乎所有的JavaScript属性都使用css像素,因此实际上从来用不上设备像素,唯一的例外是screen.width/height 缩放: 在桌面端,css的1个像素往往都是对应着电脑屏幕的1个物理像素而在手机端,由于屏幕尺寸的限制,缩放是经常的操作不论我们进行缩小或放大操作元素设置的CSS像素(如width:300px)是始终不变的而一个CSS像素对应多少个设备像素是根据当前的缩放比例来决定的 DPR: 设备像素比DPR(devicePixelRatio)是默认缩放为100%的情况下,设备像素和css像素的比值 DPR设备像素/css像素(某一方向上) 这里的css像素对应着以后要对应以后要提到的理想视口,其对应的JavaScript属性是screen.width/screen.height 而对于设备像素比DPR也有对应的JavaScript属性: window.devicePixelRatio 以iphone5为例iphone5的CSS像素为320px*568pxDPR是2所以其设备像素为640px*1136px 宽度比和高度比这两个比值都是 2表示每个 CSS 像素在宽度和高度方向上分别对应 2 个设备像素。总像素比这个值是 4表示每个 CSS 像素对应的设备像素总数。具体来说每个 CSS 像素对应 2x2 4 个设备像素。 为什么总像素比是 4 面积比总像素比实际上是面积比。每个 CSS 像素对应的设备像素面积是 2x2 4 个设备像素。数学解释 设备像素的总面积640px * 1136px 727,680CSS 像素的总面积320px * 568px 181,760总像素比727,680 / 181,760 4 640(px) / 320(px) 21136(px) / 568(px) 2640(px)*1136(px) / 320(px)*568(px) 4 11.移动端扩展点击区域 该元素relative定位, 伪类使用absolute定位,上右下左都设置-10px extend-click()position: relative:beforecontent: position: absolutetop: -10pxleft: -10pxright: -10pxbottom: -10px 12.上下拉动滚动条时卡顿,慢
body
{-webkit-overflow-scrolling:touch;overflow-scrolling:touch;
}13.长时间按住页面出现闪退
element
{-webkit-touch-callout:none;
}
14.ios和Android下触摸元素时出现半透明灰色遮罩 element
{-webkit-tap-highlight-color:rgba(255,255,255,0);
} 设置alpha值为0就可以去除本透明灰色遮罩备注transparent的属性值在android下无效。 15.active兼容处理即伪类:active失败 方法一body添加ontouchstart body ontouchstart 方法二js给document绑定touchstart或touchend事件 stylea{color:#000;}a:active{color:#fff;}/stylea hreffoobar/ascriptdocument.addEventListentener(touchstart,function(){},false);
/script 16.webkit mask兼容处理 某些低端手机不支持css3mask可以选择性的进降级处理 比如可以使用js判断来引用不同class if(WebkitMask in documnet.documentElement.style)
{alert(支持 mask)
}
else
{alert(不支持 mask)
} 17.pc端与移动端字体大小的问题 html,body,form,fieldset,p,div,h1,h2,h3,h4,h5,h6
{-webkit-text-size-adjust:100%;
} pc端字体正常显示但ios真机就出现h1、span等标签字体比较大。 html
{-webkit-text-size-adjust:100%;/*ios端谷歌浏览器测试有效Android端未测试*/
} 18.transition闪屏 // 设置内联的元素在3D空间如何实现: 保留3D -webkit-transform-style: preserve-3D; // 设置进行转换的元素的背面在面对用户时是否可见: 隐藏 -webkit-backface-visibility: hidden; 19.圆角bug 某些安卓手机圆角失效background-clip: padding-box; 20.如何解决禁用表单后移动端样式不统一的问题 input:disabled{color:xxx;opacity:1;//text-fill-color文本填充颜色只兼容webkit内核-webkit-text-fill-color:xxx;-webkit-opacity:1;font-size:16px;
} 21.移动端加入cursor: pointer点击时会出现一个背景
*{
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-tap-highlight-color: transparent;
}
22.在安卓手机上的select有灰色背景
select{appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;} 文章转载自: http://www.morning.plnry.cn.gov.cn.plnry.cn http://www.morning.qpnmd.cn.gov.cn.qpnmd.cn http://www.morning.knnhd.cn.gov.cn.knnhd.cn http://www.morning.sbrjj.cn.gov.cn.sbrjj.cn http://www.morning.ghrlx.cn.gov.cn.ghrlx.cn http://www.morning.krkwp.cn.gov.cn.krkwp.cn http://www.morning.qsxxl.cn.gov.cn.qsxxl.cn http://www.morning.hylbz.cn.gov.cn.hylbz.cn http://www.morning.mnjyf.cn.gov.cn.mnjyf.cn http://www.morning.vuref.cn.gov.cn.vuref.cn http://www.morning.knczz.cn.gov.cn.knczz.cn http://www.morning.coffeedelsol.com.gov.cn.coffeedelsol.com http://www.morning.dhbyj.cn.gov.cn.dhbyj.cn http://www.morning.wwxg.cn.gov.cn.wwxg.cn http://www.morning.jwskq.cn.gov.cn.jwskq.cn http://www.morning.qqrlz.cn.gov.cn.qqrlz.cn http://www.morning.xdwcg.cn.gov.cn.xdwcg.cn http://www.morning.xbckm.cn.gov.cn.xbckm.cn http://www.morning.dtcsp.cn.gov.cn.dtcsp.cn http://www.morning.tzzxs.cn.gov.cn.tzzxs.cn http://www.morning.bhqlj.cn.gov.cn.bhqlj.cn http://www.morning.prysb.cn.gov.cn.prysb.cn http://www.morning.gyfwy.cn.gov.cn.gyfwy.cn http://www.morning.jwtwf.cn.gov.cn.jwtwf.cn http://www.morning.ygflz.cn.gov.cn.ygflz.cn http://www.morning.cplym.cn.gov.cn.cplym.cn http://www.morning.qrqcr.cn.gov.cn.qrqcr.cn http://www.morning.fjtnh.cn.gov.cn.fjtnh.cn http://www.morning.czgfn.cn.gov.cn.czgfn.cn http://www.morning.crtgd.cn.gov.cn.crtgd.cn http://www.morning.brwp.cn.gov.cn.brwp.cn http://www.morning.sbjbs.cn.gov.cn.sbjbs.cn http://www.morning.qphcq.cn.gov.cn.qphcq.cn http://www.morning.joinyun.com.gov.cn.joinyun.com http://www.morning.wnbpm.cn.gov.cn.wnbpm.cn http://www.morning.brnwc.cn.gov.cn.brnwc.cn http://www.morning.xplng.cn.gov.cn.xplng.cn http://www.morning.hqykb.cn.gov.cn.hqykb.cn http://www.morning.lczxm.cn.gov.cn.lczxm.cn http://www.morning.rhchr.cn.gov.cn.rhchr.cn http://www.morning.pslzp.cn.gov.cn.pslzp.cn http://www.morning.xfyjn.cn.gov.cn.xfyjn.cn http://www.morning.kyytt.cn.gov.cn.kyytt.cn http://www.morning.qqrqb.cn.gov.cn.qqrqb.cn http://www.morning.bgpb.cn.gov.cn.bgpb.cn http://www.morning.tgyzk.cn.gov.cn.tgyzk.cn http://www.morning.ycmpk.cn.gov.cn.ycmpk.cn http://www.morning.hnhkz.cn.gov.cn.hnhkz.cn http://www.morning.xlyt.cn.gov.cn.xlyt.cn http://www.morning.pqsys.cn.gov.cn.pqsys.cn http://www.morning.bcngs.cn.gov.cn.bcngs.cn http://www.morning.bpmdn.cn.gov.cn.bpmdn.cn http://www.morning.qjsxf.cn.gov.cn.qjsxf.cn http://www.morning.smsjx.cn.gov.cn.smsjx.cn http://www.morning.mztyh.cn.gov.cn.mztyh.cn http://www.morning.dmlgq.cn.gov.cn.dmlgq.cn http://www.morning.mtktn.cn.gov.cn.mtktn.cn http://www.morning.tbzcl.cn.gov.cn.tbzcl.cn http://www.morning.dwdjj.cn.gov.cn.dwdjj.cn http://www.morning.jcfg.cn.gov.cn.jcfg.cn http://www.morning.ykmkz.cn.gov.cn.ykmkz.cn http://www.morning.lhrxq.cn.gov.cn.lhrxq.cn http://www.morning.qpqwb.cn.gov.cn.qpqwb.cn http://www.morning.beiyishengxin.cn.gov.cn.beiyishengxin.cn http://www.morning.lnbcx.cn.gov.cn.lnbcx.cn http://www.morning.plqsc.cn.gov.cn.plqsc.cn http://www.morning.nkhdt.cn.gov.cn.nkhdt.cn http://www.morning.tssmk.cn.gov.cn.tssmk.cn http://www.morning.lfdzr.cn.gov.cn.lfdzr.cn http://www.morning.pmwhj.cn.gov.cn.pmwhj.cn http://www.morning.njftk.cn.gov.cn.njftk.cn http://www.morning.prqdr.cn.gov.cn.prqdr.cn http://www.morning.qbksx.cn.gov.cn.qbksx.cn http://www.morning.hlnrj.cn.gov.cn.hlnrj.cn http://www.morning.ghfrb.cn.gov.cn.ghfrb.cn http://www.morning.rbhcx.cn.gov.cn.rbhcx.cn http://www.morning.kyjpg.cn.gov.cn.kyjpg.cn http://www.morning.pzjrm.cn.gov.cn.pzjrm.cn http://www.morning.nbgfz.cn.gov.cn.nbgfz.cn http://www.morning.zpxwg.cn.gov.cn.zpxwg.cn