javascript - swiper配合rem,以及rem插件出线的宽度被改变的问题

查看:306
本文介绍了javascript - swiper配合rem,以及rem插件出线的宽度被改变的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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却不正确呢?

原理看这里,有点长不过值得看

这篇关于javascript - swiper配合rem,以及rem插件出线的宽度被改变的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆