您当前位置:图趣网(Tuquu) >> 网页设计教程 >> 移动前端 >> 浏览设计教程

移动网页设计问题小结

Meta标签:


1、<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" />

这个想必大家都知道,当页面在手机上显示时,增加这个meta可以让页面强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏幕放大浏览。


PS:在设置了initial-scale=1 之后,我们终于可以以1:1 的比例进行页面设计了。关于viewport,还有一个很重要的概念是:iphone 的safari 浏览器完全没有滚动条,而且不是简单的”隐藏滚动条”,是根本没有这个功能。iphone 的safari 浏览器实际上从一开始就完整显示了这个网页,然后用viewport 查看其中的一部分。当你用手指拖动时,其实拖的不是页面,而是viewport。浏览器行为的改变不止是滚动条,交互事件也跟普通桌面不一样


1、<meta content="telephone=no" name="format-detection" />

2、<meta content="email=no" name="format-detection" />

这两个属性分别对ios上自动识别电话和android上自动识别邮箱做了限制。


获取滚动条的值:


1、window.scrollY  window.scrollX

桌面浏览器中想要获取滚动条的值是通过document.scrollTop和document.scrollLeft得到的,但在iOS中你会发现这两个属性是未定义的,为什么呢?因为在iOS中没有滚动条的概念,在Android中通过这两个属性可以正常获取到滚动条的值,那么在iOS中我们该如何获取滚动条的值呢?就是上面两个属性,但是事实证明android也支持这属性,所以索性都用woindow.scroll.


禁止选择文本:


1、-webkit-user-select:none

禁止用户选择文本,ios和android都支持


屏蔽阴影:


1、-webkit-appearance:none

亲测,可以同时屏蔽输入框怪异的内阴影,解决iOS下无法修改按钮样式,测试还发现一个小问题就是,加了上面的属性后,iOS下默认还是带有圆角的,不过可以使用 border-radius属性修改。


 css之border-box:



element{

        width: 100%;

        padding-left: 10px;

        box-sizing:border-box;

        -webkit-box-sizing:border-box;

        border: 1px solid blue;

}

那我想要一个元素100%显示,又必须有一个固定的padding-left/padding-right,还有1px的边框,怎么办?这样编写代码必然导致出现横向滚动条,肿么办?要相信问题就是用来解决的。这时候伟大的css3为我们提供了box-sizing属性,对于这个属性的具体解释不做赘述(想深入了解的同学可以到w3school查看,要知道自己动手会更容易记忆)。让我们看看如何解决上面的问题:


css3多文本换行:


p {

    overflow : hidden;

    text-overflow: ellipsis;

    display: -webkit-box;

    -webkit-line-clamp: 2;

    -webkit-box-orient: vertical;

}

Webkit支持一个名为-webkit-line-clamp的属性,参见连接,也就是说这个属性并不是标准的一部分,可能是Webkit内部使用的,或者被弃用的属性。需要注意的是display需要设置成box,-webkit-line-clamp表示需要显示几行。


Retina屏幕高清图片:


selector {

  background-image: url(no-image-set.png);

  background: image-set(url(foo-lowres.png) 1x,url(foo-highres.png) 2x) center;

}



image-set的语法,类似于不同的文本,图像也会显示成不同的:


 不支持image-set:在不支持image-set的浏览器下,他会支持background-image图像,也就是说不支持image-set的浏览器下,他们解析background-image中的背景图像;

 支持image-set:如果你的浏览器支持image-sete,而且是普通显屏下,此时浏览器会选择image-set中的@1x背景图像;

 Retina屏幕下的image-set:如果你的浏览器支持image-set,而且是在Retina屏幕下,此时浏览器会选择image-set中的@2x背景图像。

 监听link标签加载css:


var checkProCss = function(){

        var intervalFlag;

        var timeoutFlag;

        var body = $('#js_bar_main');

        try {

            intervalFlag = setInterval(function(){

                if (body.css('cursor') == 'none') {//getComputedStyle

                    clearInterval(intervalFlag);

                    clearTimeout(timeoutFlag);

                }

            }, 200);

            timeoutFlag = setTimeout(function(){

                clearInterval(intervalFlag);

                clearTimeout(timeoutFlag);

                Q.monitor(466101);//pro.css没有拉取成功

            }, 6000);//timeout为6s

        } catch(e){

            clearInterval(intervalFlag);

            clearTimeout(timeoutFlag);

        }

    };

移动端检测css是否加载完毕,由于


监听link.load

监听link.addEventListener(‘load’, loadHandler, false);

监听link.onreadystatechange

在不同机型上兼容性不同,所以可以利用轮训来检测一个dom的css样式来判断,如上代码,在css里定义了一个cursor为none,如果这个css加载失败就会返回默认的cursor为auto,如果成功就返回css里定义的none。


html5重力感应事件:


if (window.DeviceMotionEvent) {

                 window.addEventListener('devicemotion',deviceMotionHandler, false);  

        }

        var speed = 30;//speed

        var x = y = z = lastX = lastY = lastZ = 0;

        function deviceMotionHandler(eventData) {  

          var acceleration =event.accelerationIncludingGravity;

                x = acceleration.x;

                y = acceleration.y;

                z = acceleration.z;

                if(Math.abs(x-lastX) > speed || Math.abs(y-lastY) > speed || Math.abs(z-lastZ) > speed) {

                    //shake

                    alert(1);

                }

                lastX = x;

                lastY = y;

                lastZ = z;

        }

关于deviceMotionEvent是HTML5新增的事件,用来检测手机重力感应效果具体可参考

http://w3c.github.io/deviceorientation/spec-source-orientation.html


[教程作者:TAT.tennylv]
免责声明:本站文章系图趣网整理发布,如需转载,请注明出处,素材资料仅供个人学习与参考,请勿用于商业用途!
本文地址:http://www.tuquu.com/tutorial/wd2809.html
我们并不需要更多会写代码的设计师!
9款免费且超实用的响应式网页测试工具
图趣网微信
建议反馈
×