编程教程

   编程问答  ACM与蓝桥杯竞赛入门  C语言教程  C++教程  数据结构教程  单片机教程  Python教程  JAVA教程  编译器教程  C语言函数库  更多教程
Dotcpp  >   编程教程  >   CSS语法  >  CSS响应式布局(自适应布局)

CSS响应式布局(自适应布局)

点击打开 在线编译器,边学边练

什么是响应式布局?

响应式布局指的是同一页面在不同屏幕尺寸下有不同的布局。在移动互联网高度发达的今天,我们在桌面浏览器上开发的网页已经无法满足在移动设备上查看的需求。传统的开发方式是PC端开发一套页面,手机端再开发一套页面。但是这样做非常麻烦,随着不同的终端越来越多,你需要开发多个不同版本的页面。而使用响应式布局只要开发一套就够了。EthanMarcotte在2010年5月份提出了响应式布局的概念,简而言之,就是一个网站能够兼容多个终端。

开发方式移动web开发+PC开发响应式开发
应用场景一般在已经有PC端的网站,开发移动站的时候,只需单独开发移动端。针对新建站的一些网站,现在要求适配移动端,所以就一套页面兼容各种终端,灵活。
开发针对性强,开发效率高兼容各种终端,效率低
适配只适配 移动设备,pad上体验相对较差可以适配各种终端
效率代码简洁,加载快代码相对复杂,加载慢

响应式开发与移动端与PC端分别开发的区别:响应式开发只编写一套界面,通过检测视口分辨率,针对不同客户端在客户端做代码处理,来展现不同的布局和内容。移动端与PC端分别开发,通过检测视口分辨率,来判断当前访问的设备是pc端、平板、手机, 从而请求服务器,返回不同的页面。

响应式开发的原理?

响应式开发的原理是使用CSS3中的Media Query(媒体查询)针对不同宽度的设备设置不同的布局和样式,从而适配不同的设备。

SS3 @media 查询定义和使用:

使用 @media 查询,你可以针对不同的媒体类型定义不同的样式。@media 可以针对不同的屏幕尺寸设置不同的样式,特别是如果你需要设置设计响应式的页面,@media 是非常有用的。当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。

例如屏幕宽度小于 500 像素则修改背景颜色(background-color)为红色。

要实现响应式布局,常用的方式有以下几种:

(1)使用 CSS 中的媒体查询(最简单);

(2)使用 JavaScript(使用成本比较高);

(3)使用第三方开源框架(例如 bootstrap,可以很好的支持各种浏览器)。

设置 meta 标签

首先,我们需要设置 meta 标签来告诉浏览器,让视口(网页的可视区域)的宽度等于设备的宽度,并禁止用户对页面的缩放,如下所示:

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

在设置视口时需要注意,视口就是网页可见区域的尺寸,设置视口时只设置宽度就行,不用在乎高度,具体高度由网页内容自动撑开。上面 meta 标签中内容的含义如下:

● viewport:即视口,表示网页的可视区域;

● width:控制 viewport 的大小,可以指定一个具体的值,例如 600,也可以是由关键字组成的特殊值,例如 device-width 就表示设备的宽度;

● initial-scale:表示初始缩放比例,也就是页面第一次加载时的缩放比例;

● maximum-scale:表示允许用户缩放的最大比例,范围从 0 到 10.0;

● minimum-scale:表示允许用户缩放到最小比例,范围从 0 到 10.0;

● user-scalable:表示用户是否可以手动缩放,“yes”表示允许缩放,“no”表示禁止缩放。

媒体查询

CSS 媒体查询可以根据指定的条件,针对不同的媒体类型(screen print)定义不同的 CSS 样式,让使用不同设备的用户都能得到最佳的体验。

用HTML举例:

<!DOCTYPE html>
<html>
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>响应式页面入门教程:Albert Yang</title>
    <link rel="stylesheet" href="style.css">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
        integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
</head>
 
<body>
    <header>
        <a href="#">AlbertYang</a>
        <ul>
            <li><a href="#">首页</a></li>
            <li><a href="#">博客</a></li>
            <li><a href="#">联系我</a></li>
            <li><a href="#">留言板</a></li>
            <li><a href="#">关于我</a></li>
            <li><a href="#">照片墙</a></li>
        </ul>
        <div>
            <input type="text" placeholder="Search">
            <i class="fa fa-search" aria-hidden="true"></i>
        </div>
    </header>
    <div>
        <div>
            <h2>响应式布局</h2>
            <p>
                响应式布局指的是同一页面在不同屏幕尺寸下有不同的布局。
                传统的开发方式是PC端开发一套,手机端再开发一套,而使用响应式布局只要开发一套就够了。
                响应式设计与自适应设计的区别:响应式开发一套界面,
                通过检测视口分辨率,针对不同客户端在客户端做代码处理,
                来展现不同的布局和内容;自适应需要开发多套界面,
                通过检测视口分辨率,来判断当前访问的设备是pc端、平板、手机,
                从而请求服务层,返回不同的页面。CSS3媒体查询可以让我们针对不同的媒体类型定义不同的样式,
                当重置浏览器窗口大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。
            </p>
            <a href="#">阅读全文</a>
        </div>
        
        <img src="img.png">
    </div>
</body>
 
</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" />
        <style>
            *{
                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;
                }
            }
        </style>   
    </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>

运行结果:

响应式布局


本文固定URL: https://www.dotcpp.com/course/1175

上一课:

CSS调节元素大小(resize)

C语言网推出会员服务,提供C/C++/算法/Python等多套视频学练课程+源码资源社群答疑+私活推荐等资源,享受丰富的技术学习到变现的乐趣,以含金量和学习效果勇敢挑战同类辅导! 点击了解开通

其他教程

Java字符串的替换与分解

堆排序算法实例详解

数学基础

虚拟机下载和安装图文教程

反演变换的性质

循环队列的基本操作及C语言代码实现

Python循环嵌套

C语言atan()函数:求正切值为 x 的弧度数

LNMP环境下搭建帝国cms

引入MCI头文件和静态库

try…catch…finally语句里return语句的执行顺序是怎样的?

如果Throwable是一个接口,那么异常处理会不会更容易?

新手适不适合看C Prime Plus

Linux文件目录结构

编程命名规范之驼峰式命名法

C语言如何生成指定范围内的随机数

原码与源码的区别

C语言培训要不要参加?哪里参加?

什么是函数指针

补码如何应用?

CSS教程
第一章 CSS简介
  • 1. 什么是CSS?
  • 2. CSS选择器
  • 3. CSS样式表的使用有哪些优点?
  • 4. HTML引用CSS的四种方法
  • 5. CSS常用代码(html+css代码)
第二章 CSS语法
  • 1. CSS基本语法格式
  • 2. CSS选择符
  • 3. CSS长度单位详细总结
  • 4. CSS注释语法
  • 5. CSS颜色设置的6种方法
  • 6. CSS背景(background)
  • 7. CSS字体样式(font)
  • 8. CSS格式化文本
  • 9. CSS链接样式
  • 10. 超链接标签的CSS伪类
  • 11. CSS边框(border)
  • 12. CSS表格(table)
  • 13. CSS列表(list-style)
  • 14. CSS盒子模型
  • 15. CSS 尺寸/宽高属性(width/height)
  • 16. CSS外边距属性(margin)
  • 17. CSS内边距属性(padding)
  • 18. CSS鼠标样式(cursor)
  • 19. CSS轮廓(outline)
  • 20. CSS精灵图(sprite)
  • 21. CSS overflow属性用法简介
  • 22. CSS滚动条样式(overflow)
  • 23. CSS计数器(counter)
  • 24. CSS元素可见性(visibility)
  • 25. CSS元素显示类型(display)
  • 26. CSS定位的五种方式(position)
  • 27. CSS元素堆叠(z-index)
  • 28. CSS浮动(float)
  • 29. CSS伪类选择器
  • 30. CSS伪元素
  • 31. CSS伪类选择器和伪元素选择器的区别
  • 32. CSS透明度(opacity)
  • 33. CSS @规则(详细)
  • 34. CSS媒体查询(@media)全面解析
  • 35. CSS圆角属性(border-radius)
  • 36. CSS边框图片(border-image)
  • 37. CSS渐变色(颜色渐变)
  • 38. CSS阴影效果
  • 39. CSS3中2D转换形式
  • 40. CSS3中3D转换形式
  • 41. CSS过渡效果(transition)
  • 42. CSS动画(animation)
  • 43. CSS3多列布局(Multi-column)
  • 44. CSS滤镜(filter)
  • 45. CSS改变盒子模型(box-sizing)
  • 46. CSS弹性布局/弹性盒子(flex布局)
  • 47. CSS调节元素大小(resize)
  • 48. CSS响应式布局(自适应布局)
Dotcpp在线编译      (登录可减少运行等待时间)

	

深圳SEO优化公司醴陵网站搜索优化价格重庆英文网站建设价格南澳seo优化推荐保定百度标王推荐威海网站搭建报价宁波网站关键词优化价格汕头seo网站优化公司延边关键词排名遂宁网站关键词优化多少钱荷坳网站排名优化多少钱清徐优秀网站设计报价驻马店网页制作报价沙井网站优化推广价格厦门品牌网站设计价格伊犁网站制作设计多少钱济宁百度关键词包年推广哪家好惠州百搜标王推荐塔城SEO按天扣费公司大连seo网站优化公司新乡网络营销推荐安顺营销型网站建设推荐芜湖建设网站推荐金华网站搭建宜昌营销网站推荐汕尾网站开发南宁高端网站设计多少钱滨州百度网站优化公司酒泉seo优化公司鄂州网站定制垦利建网站公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化