• 响应式布局下篇


    开发移动端页面

     
       

     

     

    移动端的视口宽度问题

    视口是指浏览器的可视区域,移动端的视口到底是多宽呢?

    现在市面上的大部分手机,比如iphone X,它的默认视口宽度为980px,而一个iphone X的屏幕宽度仅仅为375px。看到问题了吗?一个宽度只有375像素的手机,却能够显示宽度为980像素的网 页,自然而然,网页会被缩小。

     
       

    我们可以使用谷歌浏览器的移动端调试工具,来访问百度的搜索结果,可以看到网页明显被缩小了,而且页面宽度定格在980px。

    面对这样的情况怎么办呢?我们当然希望手机的视口宽度和实际的屏幕宽度保持一致,就像PC端那样。好在HTML给了我们设置移动端视口宽度的能力,只需要在 head 元素中加入 meta 元素,即可设置移动端视口宽度(默认980px),代码格式如下:

     
       

    然而,不同手机的实际宽度是不一样的,并不全都是iphone X的尺寸(375px),这又如何处理呢?

    好在HTML给我们提供了一个关键字 device-width ,该关键是读取当前移动设备的宽度。因此, 我们只需要使用下面的代码,即可让所有移动设备的视口宽度和其自身的宽度相等。

     
       

    这样就解决了移动端视口宽度和自身宽度不一致的问题。

    移动端误触造成的缩放问题

    当用户用手指在移动端滑动网页的时候,手机往往提供下面的功能:

    1. 快速双击,可放大页面
    2. 双指收放,可放大缩小页面

    由于移动端误触较多,而我们的网页本来就是专门为移动端开发的,无论是尺寸还是各种样式,在默认的情况下已经非常合适了,根本不需要用户去缩放网页(你会发现,几乎所有app中的页面, 都是不允许缩放的),因此,禁止用户对网页进行缩放是一个不错的选择。

    具体的做法是在上一节中的 meta 元素中继续加入内容:

     
       

    在上面这句代码中,出现了这一段代码: initial-scale=1.0, minimum-scale=1.0, maximum- scale=1.0, user-scalable=0 ,它们的意思分别是:

    initial-scale=1.0 :初始缩放比例为1.0(原始大小),这句代码的目的还不是放置用户缩放的,书写上它有其他复杂的原因,不过本文不涉及

    minimum-scale=1.0 :网页最小的缩小比例为1.0(原始大小),设置这句代码的目的是为了放置某些程序(比如JS)无意中修改了网页的缩小比例

    maximum-scale=1.0 :网页最大的放大比例为1.0(原始大小),设置这句代码的目的是为了放置某些程序(比如JS)无意中修改了网页的放大比例

    user-scalable=0 :这句代码才是不允许用户对网页进行缩放

    这样一来,就解决了用户误触的问题。

    移动端元素的尺寸问题

    我们先看两张移动端网页的对比图:

    上面的对比图,是同一个网页在不同尺寸手机中的效果。仔细观察,你会发现,网页中的很多元素,随着视口的宽度变大,尺寸也会随之变大,无论是字体、高度、间隙都有这样的特点。

    这样做的目的,是为了保证网页元素在不同尺寸的移动端中,显示最优的尺寸。

    这样一来,就要求我们在开发移动端的页面时,当遇到字体大小、宽高、margin、padding等尺寸类的属性时,不能设置固定的像素值。

    不能设置像素值,那要设置什么值呢?百分比吗?

    仔细思考,百分比也不行,比如字体设置为百分比,就以为着是相对于父元素的字体大小,只要父元素字体大小不变化,无论页面视口是多宽,字体大小不会发生任何变化。而且百分比计算起来极其繁琐,显然不是合适的选择。

    考虑我们的需求,我们是要实现尺寸随着视口宽度的变化而变化于是,聪明的开发者想出这样一种办法。

    1.  首先,写一段JS代码,应用到网页

     
       

     

     
       

     

     

    替换之后,代码就变成了这样的格式:

     
       
  • 相关阅读:
    document.getElementById("mytxt").style.left=""style.left在IE的FF中注意
    asp.net 用户控件中 使用相对路径的解决方法 图片路径问题(用户控件、图片路径) ,ResolveUrl
    探索 Block (一) (手把手讲解Block 底层实现原理)
    iOS 多线程开发 (概念与API简介)
    iOS 性能小点
    iOS runtime (二)(runtime学习之AutoCoding源码分析)
    探索 NSRunLoop (二)(NSRunLoop 自己动手实现SimpleRunLoop)
    iOS NSNotificationCenter (自己实现一个通知中心XMCNotificationCenter)
    iOS runtime (三)(runtime学习之YYModel源码分析)
    iOS runtime(一)(runtime 分析理解)
  • 原文地址:https://www.cnblogs.com/jrzqdlgdx/p/11239787.html
Copyright © 2020-2023  润新知