swiper跟rem出线的一个稀奇古怪的问题
我的网页代码如下,无论是给swiper-wrapper加宽高,加overfllow:hidden都不行。研究了一晚上-。-好菜啊我
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title></title>
<script src="js/rem.js"></script>
<script src="js/zepto.js"></script>
<style>
*{
margin: 0;
padding: 0;
}
html,body{
height: 100%;
}
body{
font-size: 0.12rem;
}
.swiper-container{
width:6.4rem ;
height: 8.5rem;
margin: 0 auto;
}
#sco1{
width:6.4rem ;
height: 8.5rem;
background-color: darksalmon;
}
#sco2{
width:6.4rem ;
height: 8.5rem ;
background-color: bisque;
}
#sco3{
width:6.4rem ;
height: 8.5rem;
background-color: #0CC440;
}
</style>
<link rel="stylesheet" type="text/css" href="js/swiper-3.3.1.min.css"/>
</head>
<body>
<div class="swiper-container">
<div class="swiper-wrapper">
<div id="sco1" class="swiper-slide" >
</div>
<div id="sco2" class="swiper-slide" >
</div>
<div id="sco3" class="swiper-slide">
</div>
</div>
</div>
<script src="js/swiper-3.3.1.jquery.min.js"></script>
<script>
var fileSwiper = new Swiper('.swiper-container',{
});
</script>
</body>
</html>
rem这个插件的代码如下:
(function (doc, win) {
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function () {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
if (clientWidth >= 640) {
docEl.style.fontSize = '100px';
} else {
docEl.style.fontSize = 100 * (clientWidth / 640) + 'px';
}
};
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);
理论上每个div的宽度为640px,但是却变得非常的小,如下图所示,大约每个100多px,这是为何。
把rem.js去掉看看是不是元素宽度一样?说明页面进来后rem没有起作用,看下rem什么时候执行:
想到原因了没?还没有?网页默认rem是多少?1rem = 16px,那么你写的div宽度为6.4rem算出来是多少px?再用模拟器看下和16*6.4一样不?那为啥html标签上显示了当前的font-size,但是rem却不正确呢?
原理看这里,有点长不过值得看