前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >全响应式web前端开发

全响应式web前端开发

作者头像
IMWeb前端团队
发布于 2018-01-08 09:14:52
发布于 2018-01-08 09:14:52
2K00
代码可运行
举报
文章被收录于专栏:IMWeb前端团队IMWeb前端团队
运行总次数:0
代码可运行

本文作者:IMWeb Terrance 原文出处:IMWeb社区 未经同意,禁止转载

Responsive web design (RWD) is an approach to web design aimed at crafting sites to provide an optimal viewing and interaction experience—easy reading and navigation with a minimum of resizing, panning, and scrolling—across a wide range of devices (from desktop computer monitors to mobile phones).

为什么写这篇文章

结一老师之前有写过一篇从css角度去实现响应式的文章(下手响应式及断点设置分析),不过真正设计并实现一个全响应式网页(RWD),还需要从一开始的布局设计开始,并从页面结构、页面表现和用户交互三个方面来实现一个全响应式网页。

由于目前正在做的mini项目开发周期短,要求全平台可用,所以我采用了全响应式的页面实现,针对PC浏览器、移动端浏览器做了全适配,尽量达到前端代码的重用,减少开发和维护成本。在此向大家分享我对于设计和实现全响应式页面的一些经验和心得。

实现全响应式页面的途径

注意:本页面中的代码只是为了举例说明,实际应用还需要进行一定的修改

从结构层(HTML)上奠定responsive的天然基因

响应式页面一般会采用Grid或者Fluid的布局方式,这就要求我们的页面元素模块化,能够在不同的设备尺寸和应用环境下进行自适应。例如,在一款新闻类网站中,先将不同类型的元素进行分开设计,对于不同的实体做好封装,可以将一条新闻推送设计为卡片形式,其html结构大致如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class='news-item'>
    <div class='head'>
        <div class='source'>
            <img src='...' class='avatar'/>
            <span>中国统计网</span>
        </div>
        <div class='title one-line'>腾讯官方首次发布微信用户数据</div>
        <div class='time'>2015-10-26 18:01</div>
    </div>
    <div class='content'>
        <div class='cover'>
            <img src='...'/>
        </div>
        <div class='abstract'>
            在今天举办的 2015 腾讯全球合作伙伴大会「互联网+微信」的分论坛上,
            微信官方第一次公开了微信用户数据。
        </div>
    </div>
    <div class='bar'>
        <div class='read-count item'>
            阅读量:
            <span>1335</span>
        </div>
        <div class='like-count item'>
            点赞数:
            <span>986</span>
        </div>
        <div class='comment-count item'>
            评论数:
            <span>166</span>
        </div>
    </div>
</div>

由于其结构层次清晰,在不同的应用场景下,我们可以很方便地修改其样式(长、宽、字体、字号、颜色、显示如否等),另外尽量避免使用table定位。

还有一点比较重要的html设置,需要告知浏览器将页面宽度设置为设备宽度,并禁用缩放行为。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<meta name="viewport" content="width=device-width, 
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />

从表现层(CSS)上发挥responsive的后天所长

css是实现全响应式页面的关键,就如同先天基因再好,如果后天学习不够,也只能泯然众人矣。我总结了以下技术要点:

  • 充分利用position属性,比如fixed全屏定位、relative和absolute搭配实现小范围内任意定位;
  • 能使用百分比设置尺寸的地方绝不使用像素,比如宽、高采用百分比或继承,padding和小范围内定位使用像素;
  • 使用媒体查询(media query),这一CSS特性弥补了一套css样式的不足,允许页面在不同的尺寸或设备上有不同的显示样式,我们可以非常简单地定义覆盖规则
  • 使用弹性布局(display:flex),它为盒状模型提供了更大的便利性,例如可以方便地实现流式布局、居中对其等,使用它可以简便、完整、响应式地实现各种页面布局(如需进一步了解,推荐看阮一峰写的Flex 布局教程:语法篇

另外推荐结合SASS或LESS等编译器,可以使用诸如变量定义、mixin或函数、语法嵌套、工具函数等功能,提高代码重用度和可维护性。比如采用css规则嵌套,可以将css和html结构对应起来,也就是实现了css的模块化,这对于实现全响应式是很有益处的。下面是一个典型的全响应页面所使用的LESS代码:

进行变量定义,奠定网页基本样式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@font-face {
    font-family: "NotoSansCJKsc";
    src: url("../fonts/NotoSansCJKsc-Black.otf");
    src: local("NotoSansCJKsc Black"), local("NotoSansCJKsc");
}
@primary:#f0c52e;
@balck:#454545;
@white:#f7f7f7;
@backgound:#e8e7e7;
@black:#202020;
@highlight:rgb(255, 64, 129);
@hover:#3498DB;
@gray:fadeout(@black,50%);
@second:fadeout(@primary,10%);

定义min-in、function、公共样式,并修改原生标签样式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.avatar(@width:120px,@border:5px,@border-color:#fff,@margin:0px){
    border: @border solid @border-color;
    color: #eeeeee;
    width: @width; 
    height: @width;
    margin: 5px;
    border-radius:50%;
    margin: @margin !important;
}
.one-line{
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}
body{
    padding:10px 20px 20px 20px;
    background-color:@backgound;
}

采用嵌套规则对块级元素进行样式定义

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.news{
    padding:5px;
    margin-top:10px;
    border-radius:10px;
    .head{
        position:relative;
        .source{
            img.avatar{
                .avatar(50px,2px,0);
            }
            span{
                color:@highlight;
            }
        }
        .title{
            color:@black;
            font-weight:bolder;
            font-size:20px;
        }
        .time{
            position:absolute;
            top:5px;
            right:5px;
            color:@gray;
        }
    }
    .content{
        .cover{
            img{
                max-width:200px;
                max-height:200px;
            }
        }
        .abstract{
            font-size:15px;
            line-height:150%;
        }
    }
    .bar{
        .item{
            width:33%;
            color:@highlight;
            text-align:center;
            &:hover{
                color:@hover;
            }
        }
    }
}

采用媒体查询,定义不同尺寸和设备下的样式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//宽度不超过768px(平板竖屏、手机)
@media screen and (max-width: 768px){
    .body{
        padding-left:0;
        padding-right:0;
    }
    .news{
        padding:3px;
        .head{
            position:relative;
            .source{
                img.avatar{
                    .avatar(30px,2px,0);
                }
            }
            .title{
                font-size:15px;
            }
            .time{
                display:none;
            }
        }
        .content{
            .cover{
                img{
                    max-width:80px;
                    max-height:80px;
                }
            }
        }
    }
}

从交互层(Javascript)上强化responsive的用户体验

在RWD中,Javascript可以为我们识别设备的类型、尺寸和硬件资源,如果需要获取更好的用户体验,可以在不同的设备或尺寸下执行相关的js。比如当宿主为手机浏览器时,可以绑定手势操作等交互事件;在混合式移动端应用(Hybrid APP)中,可以对菜单栏等界面元素进行隐藏;在微信(实际上也属于Hybrid APP)中打开时,可以识别登录用户等。 另外,我们也可以用js做css中的几乎所有事情,只不过这有悖于RWD的思想,而且对于性能的影响比较大。

注意:js代码一般只在两种时候执行:页面加载和事件回调。所以在调试过程中,如果没有监听resize之类的事件,单纯改变屏幕尺寸是无法执行相关js达到改变样式的目的。

有兴趣可以阅读RWD的作者Ethan Marcotte写的一篇文章Responsive Web Design。新手上路,如有错误和没考虑到的地方还请诸位大神指证,望不吝赐教!

最后贴一个之前我开发的一个全响应网站的地址(欢迎吐槽~):http://www.citygee.com/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WEB前端响应式布局之BootStarp使用
1. 概念: 一个前端开发的框架,Bootstrap,来自 Twitter,是目前很受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JavaScript 的,它简洁灵活,使得 Web 开发更加快捷。     * 框架:一个半成品软件,开发人员可以在框架基础上,在进行开发,简化编码。     * 好处:         1. 定义了很多的css样式和js插件。我们开发人员直接可以使用这些样式和插件得到丰富的页面效果。         2. 响应式布局。             * 同一套页面可以兼容不同分辨率的设备。
杨校
2019/06/14
1.1K0
【Web前端】CSS 响应式设计(补充)
随着移动设备的普及,网页设计的焦点逐渐转向了响应式设计。响应式设计不仅要求网页在各种屏幕尺寸上良好展示,还要适应不同设备的特性。
一条晒干的咸鱼
2024/11/19
5370
【Web前端】CSS 响应式设计(补充)
【Web前端】CSS中的图像、媒体和表单元素
网页开发中,图像、媒体和表单元素是构建用户界面的重要组成部分。正确地使用 CSS 来处理这些元素可以大幅提高用户体验,增强页面的美观性和功能性。
一条晒干的咸鱼
2024/11/19
4580
【Web前端】CSS中的图像、媒体和表单元素
HTML+CSS实现响应式布局页面,响应式布局入门教程
响应式布局指的是同一页面在不同屏幕尺寸下有不同的布局。在移动互联网高度发达的今天,我们在桌面浏览器上开发的网页已经无法满足在移动设备上查看的需求。传统的开发方式是PC端开发一套页面,手机端再开发一套页面。但是这样做非常麻烦,随着不同的终端越来越多,你需要开发多个不同版本的页面。而使用响应式布局只要开发一套就够了。EthanMarcotte在2010年5月份提出了响应式布局的概念,简而言之,就是一个网站能够兼容多个终端。
AlbertYang
2021/01/27
14.8K0
HTML+CSS实现响应式布局页面,响应式布局入门教程
从box-sizing:border-box属性入手,来了解盒模型
从最开始学习CSS的时候,就了解了盒模型的概念,今天,我们从其中的box-sizing:border-box;的属性入手,来重新认识一下盒模型在实际项目中的运用。
全栈程序员站长
2022/08/11
4.8K0
从box-sizing:border-box属性入手,来了解盒模型
基于Web的个人网页响应式页面设计与实现 HTML+CSS+JavaScript(web前端网页制作课作业)
✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (110套) 】 🌎超炫酷的Echarts大屏可视化源码:【🔰 echarts大屏展示大数据平台可视化(150套) 】 🎁 免费且实用的WEB前端学习指南: 【📂web前端零基础到高级学习视频教程 120G干货分享】 🥇 关于作者: 历任研发工程师,
IT司马青衫
2022/08/17
1K0
基于Web的个人网页响应式页面设计与实现 HTML+CSS+JavaScript(web前端网页制作课作业)
盘点:响应式布局的5种实现方式
响应式设计通过检测视口分辨率,针对不同客户端在客户端做代码处理,来展现不同的布局和内容;
艾编程
2022/12/01
2.5K0
盘点:响应式布局的5种实现方式
BootStrap响应式项目实战之世界杯网页设计
c)在index.html里面做下引用;引用顺序bootstrap.css->jquery 3.3.1.js–>bootstrap.js
张哥编程
2024/12/13
3300
BootStrap响应式项目实战之世界杯网页设计
一文带你响应式网页设计入门
在快速发展的互联网环境中,各种类型新硬件设备的推出令人目不暇接,如果在这过程里我们的网页能自动适配各设备不同的分辨率且能以比较出色的样式为用户呈现网页的话,那么将为你的业务提供至关重要的作用。
葡萄城控件
2020/07/23
5.2K0
第126天:移动端-原生实现响应式模态框
下面采用HTML+CSS+JavaScript实现模态框,并采用Flex布局和多媒体查询实现响应式。
半指温柔乐
2018/09/11
1.4K0
第126天:移动端-原生实现响应式模态框
Web前端开发初级中级实操
这是某电商类网站服装商品展示页面局部,该网站正在促销秋冬季女装。现在我们需要编写该网站效果图部分代码。
用户7705674
2021/09/19
7.6K0
如何完成响应式布局,有几种方法?看这个就够了
[前端CSS高频面试题]如何画0.5px的边框线(详解) CSS3基础属性大全 CSS3动画属性 animation详解(看完就会) CSS3 transform 2D转换之移动 旋转 缩放(详细讲解看完就会) CSS3 Z—Index 详解 CSS3 positon定位详解(通俗易懂)
坚毅的小解同志的前端社区
2022/11/28
1.2K0
如何完成响应式布局,有几种方法?看这个就够了
HTML5+CSS3响应式垂直时间轴,高端,大气
HTML5+CSS3响应式垂直时间轴,使用了HTML5标签<section>,时间轴中所有的内容包括标题、简介、时间和图像都放在.cd-timeline-block的DIV中,多个DIV形成一个序列,并把这些DIV放在<section>中。
用户5997198
2019/08/09
2K0
HTML5+CSS3响应式垂直时间轴,高端,大气
Web前端开发CSS笔记
CSS引用:直接引用 直接在HTML标签的后面加上style类型声明即可,多个类型请用分号隔开.
王 瑞
2022/12/28
2.6K0
Web前端开发CSS笔记
全栈之前端 | 4.CSS3基础知识之盒子模型学习
描述:在 HTML 中首先会使用 CSS 来对元素进行定位,我们将学习如何使用 CSS 来控制和定位网页元素的位置、大小和布局。
全栈工程师修炼指南
2023/10/31
4920
全栈之前端 | 4.CSS3基础知识之盒子模型学习
基于HTML+CSS+JavaScript+Bootstarp响应式健身网站(web前端期末大作业)
✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (110套) 】 🌎超炫酷的Echarts大屏可视化源码:【🔰 echarts大屏展示大数据平台可视化(150套) 】 🎁 免费且实用的WEB前端学习指南: 【📂web前端零基础到高级学习视频教程 120G干货分享】 🥇 关于作者: 💬历任研发工程师
IT司马青衫
2022/08/15
1.2K1
基于HTML+CSS+JavaScript+Bootstarp响应式健身网站(web前端期末大作业)
响应式网页设计:使用媒体查询、视口单元和流体布局的技术
响应式网页设计(rwd)是一种确保网页内容在各种设备和屏幕尺寸上平滑调整的设计方法。随着智能手机、平板电脑和台式显示器等设备的不断增加,创建能够为用户提供最佳观看体验(无论其使用何种设备)的网站至关重要。本文将探讨实现响应式网页设计的基本技术,重点关注媒体查询、视口单元和流畅布局。
老K博客
2024/07/16
3330
一篇文章带你了解HTML的网页布局结构
网页布局有很多种方式,一般分为以下几个部分:头部区域、菜单导航区域、内容区域、底部区域。
Python进阶者
2021/08/21
1.2K0
响应式设计
IMWeb前端团队
2017/12/29
2.7K0
大学生bootstrap框架网页作业成品 bootstrap响应式网页制作模板 学生家乡网页bootstrap框架网站作品 html静态网页设计制作 dw静态网
家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有运用,CSS的代码量也很足、很细致,使用hover来完成过渡效果、鼠标滑过效果等,使用表格、表单补充模块,为方便新手学习页面中没有使用js有需要的可以自行添加。 一、网页介绍📖 1 网页简介:此作品为学生个人主页网页设计题材,HTML+CSS 布局制作,web前端期末大作业,大学
IT司马青衫
2022/08/13
2.9K0
大学生bootstrap框架网页作业成品 bootstrap响应式网页制作模板 学生家乡网页bootstrap框架网站作品 html静态网页设计制作 dw静态网
推荐阅读
相关推荐
WEB前端响应式布局之BootStarp使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验