响应式布局详解

来源:网络 文章列表 2019-05-31 8
移动设备(手机、平板电脑等),已经逐渐成为人们生活中必不可缺的物件了,这也意味着人们更多的用移动设备浏览网页。然而移动设备有着各式各样的分辨率与大小,这使用前端开发人员不得不去设配它们。

响应式布局概念

Responsive design,意在实现不同屏幕分辨率的终端上浏览网页的不同展示方式。通过响应式设计能使网站在手机和平板电脑上有更好的浏览阅读体验。

响应式设计的步骤

1. 设置 Meta 标签

大多数移动浏览器将HTML页面放大为宽的视图(viewport)以符合屏幕分辨率。你可以使用视图的meta标签来进行重置。下面的视图标签告诉浏览器,使用设备的宽度作为视图宽度并禁止初始的缩放。在<head>标签里加入这个meta标签。

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">

user-scalable = no 属性能够解决 iPad 切换横屏之后触摸才能回到具体尺寸的问题。

其中:①、width=device-width:是设置可视区宽度等于设备宽度

          ②、initial-scale=1.0:初始化缩放比例

          ③、maximum-scale=1.0:最大可以放大的比例

          ④、minimum-scale=1.0:最小可以缩小的比例

          ⑤、user-scalable = 0: 是否允许用户缩放(1为true,0为false)
 

2. 通过媒介查询来设置样式 Media Queries

Media Queries 媒介查询是响应式设计的核心。·

它根据条件告诉浏览器如何为指定视图宽度渲染页面。假如一个终端的分辨率小于 980px,那么可以这样写:

@media screen and (max-width: 980px) {
  #head { … }
  #content { … }
  #footer { … }
}

这里的样式就会覆盖上面已经定义好的样式。

假如我们要设定兼容 iPad 和 iphone 的视图,那么可以这样设置:

/** iPad **/
@media only screen and (min-width: 768px) and (max-width: 1024px) {}
/** iPhone **/
@media only screen and (min-width: 320px) and (max-width: 767px) {}

要兼容多种显示器的宽高就可以多设置一些屏幕断点。

注意我们还可以使用link连接来设置媒介查询,media属性用于设置查询方式

<link rel="stylesheet" type="text/css" href="css/moxie.css" media=“all and (max-width=980px)”/>

下面是一个简单响应式的布局的html代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>响应式布局</title>
        <meta name="viewport"content="width=device-width,initial-scale=1.0,maximum-scale=1,user-scalable=no" />
        <meta name="format-detection" content="telephone=no,email=no"/>
        <link rel="stylesheet" type="text/css" href="css/mo2.css"/>
    </head>
    <body>
        <div>
            <header id="head">
                <ul>
                    <li>header1</li>
                    <li>header2</li>
                    <li>header2</li>
                    <li>header2</li>
                    <li>header2</li>
                </ul>
                <div>icon</div>
            </header>
            <section id="main">
                <div class="left">
                    left
                </div>
                <div class="center">
                    center
                </div>
                <div class="right">
                    right
                </div>
            </section>
            <footer id="foot">
                footer
            </footer>
        </div>
    </body>
</html>

下边是CSS样式

*{
    margin: 0px;
    padding: 0px;
    font-family: "微软雅黑";
}
#head,
#foot,
#main
{
    height: 100px;
    width: 1200px;
    /*width: 85%;*/
    background-color: goldenrod;
    text-align: center;
    font-size: 48px;
    line-height: 100px;
    margin: 0 auto;
}
#head div{
    display: none;
    font-size: 20px;
    height: 30px;
    width: 100px;
    background-color: green;
    float: right;
    line-height: 30px;
    margin-top: 35px;
}
#head ul{
    width: 80%;
}
#head ul li{
    width: 20%;
    float: left;
    text-align: center;
    list-style: none;font-size: 20px;
}
#main{
    height: auto;
    margin: 10px auto;
    overflow: hidden;
}
.left,
.center,
.right{
    height: 600px;
    line-height: 600px;
    float: left;
    width: 20%;
    background-color: red
}
.center{
    width: 60%;
    border-left: 10px solid #FFF;
    border-right: 10px solid #FFF;
    box-sizing: border-box;
}
@media only screen and (max-width: 1200px) {
    #head,
    #foot,
    #main{
    width: 100%;
    }
}
@media only screen and (max-width: 980px) {
    .right{
        display: none;
    }
    .left{
        width: 30%;
    }
    .center{
        width: 70%;
        border-right: hidden;
    }
}
@media only screen and (max-width: 640px) {
    .left,
    .center,
    .right{
        width: 100%;
        display: block;
        height: 200px;
        line-height: 200px;
    }
    .center{
        border: hidden;
        border-top: 10px  solid #FFFFFF;
        border-bottom: 10px solid #FFFFFF;
        height: 600px;
        line-height: 600px;
    }
    #head ul{
        display: none;
    }
    #head div{
        display: block;
    }
}

窗口大于1200px时显示的样子

窗口小于1200大于980时,只会被压缩,并不会发生其他变化

当大于640小于980时,右侧栏隐藏

当小于640时,导航栏折叠,body三部分竖直排列显示,若窗口持续缩小,不在发生变化,区域被压缩

好了,布局就这么简单,细节的把握还靠不断地练习。

腾讯云限量秒杀

1核2G 5M 50元/年 2核4G 8M 74元/年 4核8G 5M 818元/年 CDN流量包 100GB 9元

版权声明

本站部分原创文章,部分文章整理自网络。如有转载的文章侵犯了您的版权,请联系站长删除处理。如果您有优质文章,欢迎发稿给我们!联系站长:
愿本站的内容能为您的学习、工作带来绵薄之力。

评论

  • 随机获取
点击刷新
精彩评论

友情链接