响应式篇

2 篇文章 0 订阅
1 篇文章 0 订阅

前言

响应式是一种新的技术手段,使得网站能够针对不同的设备环境进行响应和调整,以实现一个页面对多个终端的兼容。在移动优先的时代,显得尤为重要了。

  • 响应式是理念,而不是功能。Bootstrap把响应式放在了框架图的左部,覆盖了所有的css组件。
  • 利用媒体查询来实现不同物理尺寸下的css展示。
  • 重要的是做好前期规划,制作不同分辨率的展示稿,让代码和功能能够灵活的使用。对页面进行清新的划分,然后以模块来规划响应式的页面制作。
  • Bootstrap的实现说明:Bootstrap是通过定义容器的大小,平分12分,再调整内外边距,最后结合媒体查询,实现了强大的栅格(网格)系统。基础是栅格系统,然后是基础布局组件,上面是18个css组件,实现响应式的。
  • 可以分析Bootstrap里面优秀的写法,来实现对移动端更好的兼容,可以作为范例来学习。

先来2个demo:
1. 响应式组件1
2. 可调整的导航条

先感受一下,调整浏览器大小,或者打开浏览器的响应式,移动端没有测试,不建议。
然后简单看下实现,还是很简单的。

响应式

媒体查询
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no">

对于IE9及其以下的浏览器,不支持h5,还css3的媒体查询,Bootsrtap的解决方案是:

<!--[if lt IE 9]>
<script src="http://cdn.bootcss.com/html5shiv/r29/html5.min.js"></script>
<script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.js"></script>
<![endif]-->

利用css的条件查询,引入html5shiv.js和respond.js.
前者提供h5的支持
后者提供了媒体查询的支持.
为了对h5有更好的支持,Bootstrp还引入了normalize.css,对h5的标签进行基本的声明,使得不支持的浏览器也能很好的解析h5的标签。


css中@media的使用,媒体的特性很多,这里主要使用了max-width,min-width等与屏幕尺寸有关的特性。将同样的样式写在media外面,都有显示的样式。

.col {
  padding: 2rem 1rem;
}
.col + .col {
  border-top: 1px solid #dfe1e8;
  background-color: #f7f7f9;
}



@media screen and (min-width: 38em) {
  .col {
    padding: 2rem;
  }
}
@media screen and (min-width: 48em) {
  .section {
    display: table;
    width: 100%;
    table-layout: fixed;
    border-bottom: 1px solid #dfe1e8;
  }
  .col {
    display: table-cell;
    padding: 3rem;
    vertical-align: top;
  }
  .col + .col {
    border-top: 0;
  }
}

如代码所示,将特定的代码放在了@media内,根据媒体查询的尺寸,符合尺寸定义内部的css起作用,调整了页面的样式,这是实现响应式的关键。

  • 多个media内的css最终只有一个起作用。
  • 还有后面定义的css属性可以覆盖前面定义的属性。
    媒体查询允许了网页宽度的自动调整

使用相对宽度。

由于网页会根据屏幕宽度调整布局,所以不能使用绝对宽度的布局,也不能使用具有绝对宽度的元素。

  width: 50% | auto ;

使用相对的单位
  • 不要使用px等绝对单位,使用em,rem等。
  • 建议使用rem,根据html元素的大小作为比例基础。

布局

布局上要灵活,使用绝对定位要特别注意,可以考虑用flex布局实现。可以参见我的博客flex布局篇


css文件的选择加载

<link rel="stylesheet" media="screen and (min-width: 400px)"
href="smallScreen.css" >
@media screen and (min-width: 48em) {
}

响应式图片
img{
  max-width:100%;   
}

如果有不同分辨率的图片,可以加载不同分别分辨率的图片来实现更好的友好性。

<picture alt="image description">
  <source src="/path/to/medium-image.png" media="(min-width: 600px)">
  <source src="/path/to/large-image.png" media="(min-width: 800px)">
  <img src="/path/to/mobile-image.png" alt="image description">
</picture>

也可以用js通过获得屏幕的尺寸来加载对应的图片。


后言

  读完了《深入Bootstrap源码》,我会在后面的博客里陆续更新Bootstrap的css组件和js组件,在官方给出的Bootstrap源码里,有很多东西值得学习,学习写jQuery插件,css组件的写法,用sass写组件,更高级的单元测试也是可以逐行研究的,我对测试还是蒙的,会继续学习,grunt的用法,不过最近gulp基于流的应用好像更好理解,也更清晰的划分了插件的作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值