360、谷歌、火狐、QQ、百度、搜狗、IE
UC、QQ、欧朋Opera、百度手机、360安全、谷歌、搜狗、猎豹等
国内的UC和QQ,百度等手机浏览器都是根据Webkit修改过来的内核,国内尚无自主研发的内核,就像国内的手机操作系统都是基于Android修改开发的一样。
总结:兼容移动端主流浏览器,处理Webkit内核浏览器即可。
作为前端开发,不建议去纠结dp、dpi、pt、ppi等单位。
视口(viewport)就是浏览器显示页面内容的屏幕区域。视口可以分为布局视口、视觉视口和理想视口。
通过判断屏幕宽度来改变样式,以适应不同终端。**缺点:**制作麻烦,需要花很大的精力去调兼容性问题。
移动端浏览器基本以webkit内核为主,因此我们就考虑webkit兼容性问题。我们可以放心使用H5标签和CSS3样式。
同时我们浏览器的私有前缀,我们只需要考虑添加webkit即可。
采取单独制作移动页面方案,采取flex布局。
常见flex布局思路:先把主轴设置为y轴,然后沿着侧轴居中对齐。就可以实现图片和文字上下显示。
元素同时设置flex:1;和display:flex;是不冲突的,既充当父元素又充当子元素。
rem单位:rem(root em)是一个相对单位,类似于em,em是父元素字体大小。
**rem的优势:**可以通过修改html里面的文字大小来改变页面中元素的大小,可以整体控制。
@media 可以针对不同的屏幕尺寸设置不同的样式
单独制作移动页面方案 + 采取rem适配布局(less+rem+媒体查询) + 设计图采用750px设计尺寸
1.common.less用于存放公共样式,设置常见的屏幕尺寸 修改里面的html文字大小。先默认给一个html文字大小,然后根据屏幕尺寸的不同,层叠掉该属性样式。
// 如果屏幕尺寸大于750px,直接限定好默认的html字体大小为50px,后续层叠掉该属性
// 划分份数定义为15
设置方法:打开vscode中设置首选项按钮,点击设置,在搜索框中搜索cssroot,然后手动将其修改为75px即可。注意是要修改工作区中的cssroot。
3.如果屏幕超过了750px 则按照750设计稿来显示,不会让页面超过750px
这里使用媒体查询来进行屏幕尺寸的测量,并使用important来提升权重。
利用媒体查询针对不同宽度的设备进行布局和样式的设置,从而适配不同设备的目的。
中等屏幕(桌面显示屏) |
宽屏设备(大桌面显示器) |
响应式需要一个父级作为布局容器,来配合子级元素来实现变化效果。
在不同屏幕下,通过媒体查询来改变这个布局容器的大小,再改变里面子元素的排列方式和大小,从而实现不同屏幕下,看到不同页面布局和样式变化。
Bootstrap来着Twitter(推特),是目前最受欢迎的前端框架,是基于HTML、CSS和JAVASCRIPT的,简单灵活,使得WEB开发更加快捷。
框架:就是一套架构,它有一套比较完整的网页功能解决方案,而且控制权在框架本身,有预制样式库、组件和插件。使用者要按照框架所规定的某种规范进行开发。
目前使用最多的是v3.0版本的,稳定,但放弃了IE6-IE7。对IE8支持但界面效果不好,偏向于开发响应式布局、移动设备优先的WEB项目。
四部曲:1.创建文件夹结构 2.创建html骨架结构 3.引入相关样式文件 4.书写内容
可以直接将Bootstrap预先定义好的样式直接拿来使用
修改Bootstrap原先的样式,但要注意权重问题
学好Bootstrap的关键在于知道它定义了哪些样式,以及这些样式能实现什么样的效果
Bootstrap需要为页面内容和栅格系统包裹一个.container容器,Bootstrap预先定义好这个类,叫.container,它提供了两个该用处的类。
响应式布局的容器,固定宽度。和之前响应式布局中的参数设置相同。
栅格系统(grid systems),也称为"网格系统",它是将页面内容划分为等宽的列,然后通过列数的定义来模块化页面布局。
Bootstrap提供了一套响应式、移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列。里面的container宽度是固定的,但是不同屏幕下,container的宽度不同,再把container划分为12等份。
注意:这个虽然和rem有些相似,但rem是将整个window划分成几等份,而这里是将页面内容container盒子划分。
2.栅格系统的简单使用
栅格系统用于通过一系列的行(row)和列(column)的组合来创建页面布局,内容就可以放入这些创建好的布局中。
中等屏幕(桌面显示器) | 宽屏设备(大桌面显示器) |
---|---|
要实现列的平均划分 需要给列添加 类前缀
列column大于12,多余的列所在的元素将被作为一个整体另起一行排列
每列默认有左右15px的padding 如果不想要,则通过CSS强制去掉就可以了
行row可以去除父容器左右15px的边距
可以同时为一列指定多个设备的类名,以便划分不同份数 例如 class=“col-md-4 col-sm-6” 其中4和6表示份数
这里份数不一定要一样,只要保证总和是12份就可以。
为一列指定多个设备的类名,以便划分不同份数:
简单理解就是在列中再分为12等份,添加若干子元素。列嵌套最好加1个行,这样可以清除父元素15px的padding,且高度自动和父级一样高。
使用.col-md-offset-*
类可以将列向右侧偏移。这些类实际是通过*
选择器为当前元素增加了左侧的边距(margin)
为了加快对移动设备友好的页面开发工作,利用媒体查询功能,并使用这些工具类可以方便的针对不同设备展示或隐藏页面内容。
有隐藏,也有显示,显示就使用visible-*
,可以针对不同设备显示元素。
但是不能用于pc端!!只能用于移动端
vw/vh是一个相对单位(类似于em和rem相对单位)
相对视口的尺寸计算结果
注意:和百分比是有区别的,百分比是相对于父元素来说的,而vw和vh总是针对于当前视口来说的。
元素单位直接使用新单位vw/vh即可。因为是相对单位,所以不同视口(屏幕)下,宽高一起变化完成适配。