网站无备案,html5 开发网站,哪里设计公司vi,老域名网站不收录1、viewport 简单粗暴的方式#xff1a; meta nameviewport contentwidth320,maximum-scale1.3,user-scalableno 直接设置viewport为320px的1.3倍#xff0c;将页面放大1.3倍。 为什么是1.3#xff1f; 目前大部分页面都是以320px为基准的布…1、viewport 简单粗暴的方式 meta nameviewport contentwidth320,maximum-scale1.3,user-scalableno 直接设置viewport为320px的1.3倍将页面放大1.3倍。 为什么是1.3 目前大部分页面都是以320px为基准的布局而iphone6的宽度比是375/320 1.171875iphone6则是 414/320 1.29375那么以1.29倍也就约等于1.3了。2、ip6 的CSS media query media (min-device-width : 375px) and (max-device-width : 667px) and (-webkit-min-device-pixel-ratio : 2){/*iphone 6*/
}media (min-device-width : 414px) and (max-device-width : 736px) and (-webkit-min-device-pixel-ratio : 3){/*iphone 6 plus*/
} PS: 也可以直接使用实际的device-width如 device-width : 375px 在原有页面的基础上再针对相应的屏幕大小单独写样式做适配。3、REM布局 REM是CSS3新增的一种单位并且移动端的支持度很高android2.xios5 都支持。REM是相对于dom结构的根元素来设置大小也就是html这个元素。相较于em单位rem使用上更容易理解及运用。 REM与PX的换算可以查看网址 https://offroadcode.com/prototypes/rem-calculator/ 假设html我们设置font-size:12px; 也就是说12px相对于1rem那么18px也就是 18/12 1.5rem。 那么我们以320px的设计布局为基准将html设置为font-size:100px即100px 1rem。(设置100px是为了方便计算)那么可以将大部分px单位除以100就可以直接改成rem单位了。 REM如何做响应式布局 1、如果仅仅是适配ip6设备那么使用media query就行。 伪代码如下 /*320px布局*/
html{font-size: 100px;}
body{font-size: 0.14rem /*实际相当于14px*/}/* iphone 6 */
media (min-device-width : 375px) and (max-device-width : 667px) and (-webkit-min-device-pixel-ratio : 2){html{font-size: 117.1875px;}
}
/* iphone6 plus */
media (min-device-width : 414px) and (max-device-width : 736px) and (-webkit-min-device-pixel-ratio : 3){html{font-size: 129.375px;}
} 这样在ip6下也就将页面内的元素放大了1.17倍ip6下也就是放大了1.29倍。 2、如果是完全自适应那么可以通过JS来控制。 (function (doc, win) {var docEl doc.documentElement,resizeEvt orientationchange in window ? orientationchange : resize,recalc function () {var clientWidth docEl.clientWidth;if (!clientWidth) return;docEl.style.fontSize 100 * (clientWidth / 320) px;};// Abort if browser does not support addEventListenerif (!doc.addEventListener) return;win.addEventListener(resizeEvt, recalc, false);doc.addEventListener(DOMContentLoaded, recalc, false);
})(document, window); 页面初始化的时候计算font-size然后再绑定resize事件。这种效果就和百分比布局一样了。 那么用REM做单位与百分比做单位有什么优势 主要优势在于能更好的控制元素大小。一般百分比应用在布局层一般常见设置为50%33.3%25%之类的整数居多难以运用在复杂的页面小部件内。但是相比百分比布局需要借助JS或media query实现略有一点瑕疵。 4、图片自适应 刚说完REM布局那么用百分比布局也能实现一样的效果但是用百分比布局必须要面临一个问题图片宽度100%页面加载时会存在高度塌陷的问题。. 如图页面加载时图片高度默认不存在。 那么可以用padding-top设置百分比值来实现自适应。 公式如下 padding-top (Image Height / Image Width) * 100% 原理padding-top值为百分比时取值是是相对于宽度的。 相关代码实现 div classcoverimg srchttp://g.ald.alicdn.com/bao/uploaded/i1/TB1d6QqGpXXXXbKXXXXXXXXXXXX_!!0-item_pic.jpg_160x160q90.jpg alt/
/div .cover{position: relative; padding-top: 100%; height: 0; overflow: hidden;}
.cover img{position: absolute; top: 0; width: 100%;} 5、图片高清化 大家都知道iphone6 plus 是3倍高清图了它的devicePixelRatio 3。 关于DPR的介绍可以查看这篇文章《 设备像素比devicePixelRatio简单介绍 》 在ios8下已经开始支持img的 srcset 属性了目前移动端也就ios8开始支持也就是说可以对一张图片设置2个URL浏览器自动加载对应的图片。 黄色表示仅支持旧的srcset规范绿色表示支持全新的srcset规范包括sizes属性w描述符。 这里不展开详细了解可自行google。 如下DEMO请切换devicePixelRatio值进行查看 不过目前前端这边图片的实现基本都用lazyload的方式实现。srcset的图片加载方式在实际项目中运用还比较少。 6、背景图高清化 media query 实现高清化 img标签的高清化可以通过JS判断devicePixelRatio的值来加载不同尺寸的图片但是对于背景图写在CSS中的用JS来判断就略麻烦了还好CSS通过media query也能判断dpr。 目前兼容性最好的背景图高清化实现方式使用media query的 -webkit-min-device-pixel-ratio 做判断 /* 普通显示屏(设备像素比例小于等于1)使用1倍的图 */.css{background-image: url(img_1x.png);}/* 高清显示屏(设备像素比例大于等于2)使用2倍图 */media only screen and (-webkit-min-device-pixel-ratio:2){.css{background-image: url(img_2x.png);}}/* 高清显示屏(设备像素比例大于等于3)使用3倍图 */media only screen and (-webkit-min-device-pixel-ratio:3){.css{background-image: url(img_3x.png);}} 进一步可以通过工具生成相应的3x2x1x的图片及css在使用时直接引用即可。谁搞一个 关于移动设备的 -webkit-min-device-pixel-ratio 值可以查看该网页的整理 http://bjango.com/articles/min-device-pixel-ratio/ image-set 实现高清化 image-set它是Webkit的私有属性也是Css4的一个属性它是为了解决Retina屏幕下的图像显示而生。 使用方式也很简单。伪代码如下 .css {background-image: url(1x.png); /*不支持image-set的情况下显示*/background: -webkit-image-set(url(1x.png) 1x,/* 支持image-set的浏览器的[普通屏幕]下 */url(2x.png) 2x,/* 支持image-set的浏览器的[2倍Retina屏幕] */url(3x.png) 3x/* 支持image-set的浏览器的[3倍Retina屏幕] */);} 目前移动端的支持程度来看ios7android 4.4 下已经支持了。如果仅仅是做ip6的高清适配方案。 image-set 也是一种实现方案。 使用image-set 与 media query 实现有什么区别及好处 这篇文章里面做了很详细的阐述大家可以看看http://blog.cloudfour.com/safari-6-and-chrome-21-add-image-set-to-support-retina-images/ 大体的意思是image-set不需要告诉浏览器使用什么图像而是直接提供了图像让浏览器选择。这就意味着如果在低网速下浏览器可以选择加载低分辨率的图片。PS好智能的样子 但是相比如media query的实现image-set仅支持单个图片的高清化不适合在css sprite下使用。 并且兼容性也是一大硬伤。 一般来说用在LOGO区域单个图片图标的区域下也是个不错的选择。 关于图片列表适配也就是要让布局更灵活在电商网站里面商品列表是一个非常常见的结构。一种比较智能的列表方式是两端对齐间距自适应。 那么可以使用FLEXBOX布局来实现两端对齐的效果也可以使用 text-align:justify 的方式实现。 具体实现办法http://www.ghugo.com/inline-block-justify/转载于:https://www.cnblogs.com/wcn123456/p/7838175.html