[前端学习]移动web部分学习笔记,第二天

网页布局方法总结:

  • 目前已经学习了两种布局方式:
    • 固定宽度布局:常见于PC端,设定固定的宽度作为版心来布局
    • 流式布局:常见于移动端,所有宽度不固定,采用相对参照的方式,用百分比来设置
  • 接下来还要接触两种布局方式:
    • 栅格式布局:这种布局方式被bootstrap框架使用,主要思路是让整个页面分为多个均宽等份。某个元素设置宽度时,让它占有几个等份,而不是直接设置宽度
    • 响应式布局:很流行的布局方式,自动检测设备宽度来布局,就是说不同分辨率设备访问同一网页,看到的布局方式可能会有不同,达到一个页面可以适配多种设备
  • 注意:每次布局方式都有其可取之处,所以这几种布局方式不应该单独存在,往往是根据实际情况结合使用

响应式布局介绍

  • 核心概念:使用媒体查询来获取设备的宽度,然后根据宽度来设置不同的css样式,实现响应式布局
  • 优点:响应式布局可以使网页在不同的设备上都能完美的展现,提高用户的浏览体验
  • 缺点:正因为需要对不同设备设置不同的css样式,所以不得不利用媒体查询书写大量的代码来进行适配。代码冗余过多页面体积太大,就会造成严重的性能消耗
  • 应用场景:根据上述优缺点可以知道,响应式开发一般主要用在企业官网、博客、资讯网站等,以浏览展示内容为主没有太多复杂交互的网站。这样才能在提高用户体验的情况下,尽量减少性能消耗
  • 设备宽度划分建议:
    • 大屏设备 w>=1200px
    • 中等屏幕 992px<=w<1200px
    • 小屏设备 768px<=w<992px
    • 超小屏幕 w<768px

响应式开发

  • 移动web开发和响应式开发是前端人员的必备技能
  • 在以前为了适配移动端,通常是专门为移动端做一套新的页面。但是现在移动设备越来越多,如果每种设备都做一套页面开发成本太大。所以正常情况下,现在新做一个网站,优先都会考虑到响应式开发

媒体查询

  • 媒体查询的作用是设置不同屏幕宽度下的样式
  • 基础语法:
    • @media mediatype and|not|only (media feature) {
      CSS-Code;
      }
    • mediatype规定用于哪种设备,例如:要应用于电脑屏幕,平板电脑,智能手机等,就写screen
    • and|not|only是作为连接条件判断的关键字,最常用的是andnot是取反值(不在范围内才应用,几乎用不到)
    • media feature条件判断,例如:写min-width: 1200px,是限制页面宽度最小不能低于1200px,也就是说必须大于或等于1200px才能应用内部的css样式
    • 还有很多属性值,查阅手册
  • 条件判断的知识点:
    • 当你用媒体查询来设置css样式时,必然会有条件判断,根据满足不同条件应用不同样式
    • 书写建议:
      • 如果判断的是最小值min-width,那么判断值需要按照从小到大的顺序写(推荐,因为bootstrap就是用的这个方式)
      • 如果判断的是最大值max-width,那么判断值需要按照从大到小的顺序写
    • 不同类型屏幕肯定是有个值的范围区间(例如768<宽度<992)。但是实际书写中,只要满足上面两种情况的宽度值判断。那么一个就行了(对应判断的最大最小),不用写完整的区间
  • 媒体查询特性:
    • 向上兼容:宽度值更小的设置,默认会传递到宽度值更大的设置中去
    • 向下覆盖:宽度值更大的设置会覆盖宽度值小的设置
    • 解释:就是说如果你只写了宽度值小的设置,那么它的向上兼容会默认往上传递,在宽度值更大没写的情况下,会应用小的设置。但是一旦写了宽度值大的设置,那么它向下覆盖会覆盖掉传递过来的设置,这样宽度值小的设置就只会在其范围内应用,宽度值大的设置也是。这也是为什么不用写完整范围区间的原因。
    • 注意:如果写了完整范围区间,这两个特性不会生效
  • 媒体功能知识点
    • 媒体功能就是条件判断的关键字(比如:min-width、min-device-width),这里说明一下有device没有device的区别
    • 有device的时候,它获取的宽度值是设备的宽度值,重点:因为pc端设备宽度不会随着浏览器伸缩而改变,所以你就算写多个条件判断,也只有满足当前设备宽度值的css样式才会生效。一般来说,如果只针对移动端做媒体查询,那么才建议用有device的媒体功能
    • 没有device的时候,它获取的是可视区域的宽度(也可以理解为页面宽度),这个不管移动端还是pc端,只要伸缩浏览器页面宽度值就会变化,所以不存在上面说的问题。如果要兼顾pc端和移动端,那么建议用没有device的媒体功能
  • 补充说明
    • 媒体查询不光可以在内部写直接css样式,也可以通过它来引入不同的css样式表
    • 写法:<link rel="stylesheet" media="mediatype and|not|only (media feature) " href="xxx.css" />
    • 如果满足条件判断,就会引入对应的样式表文件

响应式开发框架

  • 因为web开发越来越复杂,所以有人将比较常用的功能模块组件化(轮播图、导航栏、选项卡等),然后将一系列的组件封装,就形成了css框架。现在框架有非常多,比如:bootstrapamazeUiFramework7等等。最受欢迎当属bootstrap

Bootstrap

  • 关于bootstrap的使用方法,中文网已经有详细说明,不作赘述
  • 这里着重说明下,bootstrap的布局核心概念:栅格式布局
    • 栅格式布局是流式布局,即:从左往右,从上到下
    • 栅格系统用于通过一系列的行(row)与列(column)的组合来创建页面布局,首先行必须包含在 .container (根据不同设备宽度先设置好的固定宽度).container-fluid (100% 宽度)容器中
    • 然后在容器添加“行(row)”
    • 再通过“行(row)”在水平方向创建一组“列(column)”,默认情况下行被分为12等份栅格,不设置的话一个列占据一份栅格
    • 通过.col-(xs||sm||md||lg)-x(数字)这种预定义的类,就可以设置每个列到底占据多少个栅格(即宽度)
    • xs表示超小屏幕下占据几个栅格,sm表示小屏幕下占据几个栅格,同理。md表示中屏幕,lg表示大屏幕。这其实就跟响应式一样,根据不同宽度设置不同样式。不过框架封装好了,不用再去写媒体查询。可以不用全屏幕类都写,但要注意向上兼容和向下覆盖的特性
    • 还有一些栅格相关的样式:列偏移offset,列排序push||pull,列嵌套,隐藏类hidden等,可以看中文网了解,上面都有详细说明介绍
  • 另外如果想定制bootstrap的一些设置,比如:每行分为多少等份这类的,中文网上也有详细说明
  • 总而言之就是多看文档

Less

  • less是一种动态的样式表语言,通过简洁的语法让css编写更加简单。注意:less既然是一种语言,那么就其专门的语法。并且浏览器不能解析less文件,所以less实质上是一套语法和编译器组成的
  • 必备环境搭建:
    • 首先必须安装了node以及npm
    • 然后通过命令行输入npm install -g less就能在全局环境下安装less,通过lessc -v指令能检测是否安装成功
    • 手动编译less文件,需要先用命令行进入less文件所在目录,然后输入lessc xxx.less xxx.css,前一个是需要编译的文件,后一个是需要变成生产的css文件
    • 一般来说代码编辑器都有自动编译功能,比如vscode,只要搭建好了环境,再安装一个easyless插件,就能自动编译less文件
  • 语法简单介绍
    • 变量:@变量名:值通过@符号来声明变量,并赋值。在写css样式时,该变量就可以作为样式的属性值来使用
    • 混入(也叫混合,相当于函数):
      • .example { xxx: xxx}这是一个正常的样式,在less可以样式复用。如果想要使用与这个类名相同的样式,直接在大括号内写类名即可。例如:.example2 { xxx: xxx; .example},这里混入类名的样式,就会自动被编译到新的类名中
      • 并且还可以跟函数一样设置默认参数:.example(@a:10px) { xxx: @a},这时混入类名,可以这样写.example2 { xxx: xxx; .example(xx)}。这个参数可以根据自己需要来传入,如果不写参数那么就会使用默认值10px
    • 嵌套。用法时不用再多次写类名结构,而是父元素大括号内部,直接写子元素的类名。如果什么都不写编译后是后代选择器,加上>符号编译后就是子选择器。另外注意:如果要再当前元素内部写它的伪类和伪元素,必须加上&符号。
  • 下面是个简单的例子:
    • div {
      color: @baseColor; //用变量来设置值
      .header(); //混入复用之前写好的.header的样式,不写参数使用默认值
      >p { //给直接子元素p设置样式
      font-size: 16px;
      }
      a { //给所有后代a标签设置样式
      text-decoration: none;
      }
      &::before { //为其伪元素设置样式
      content: "";
      }
      }
  • 另外如果想注释也一起编译,需要使用/**/这种注释符才行。less也支持@import在样式文件中,引入其他样式文件
  • 如果想不编译直接引入less文件也有办法,如下:
    • 1.与引入css文件大致相同<link type="stylesheet/less" href="./xx/xx/xx.less" />
    • 2.引入专门解析less的js文件<script src="./xx/xx/less.js" ></script>
  • 更多语法看中文手册

rem的介绍

  • rem是css3中新增的一种大小单位,类似于以前的em,都是以元素的字号作为参照方式
  • em和rem的区别
    • em优先参照当前元素的字号,如果当前元素没有设置,就参照父容器或者浏览器默认字号(每个浏览器都是有默认字体大小的)
    • rem是参照根元素的字号(html),如果根元素没有设置就参照浏览器默认字号
  • rem的优点
    • 相对em而言,如果当前元素需要设置字体大小,那么em的大小实际上就是被定死了。而rem要灵活很多,因为给当前元素设置字号并不会影响rem。在网站开发中也推荐使用rem
  • 常见使用场景:
    • 开发中ui给我们的稿件尺寸都是行业通用的尺寸,但是手机屏幕的宽度各式各样,为了使展示效果更好,一般是同比例的缩小或者放大具体元素,使整个页面的总体比例不变
    • 思维模式跟栅格式系统很像。不管是什么尺寸的图片,首先把它分为x份(自定义)等份。那么每个元素再该图中占据的份数是可以知道的。然后不管什么手机设备,也把它分为x份等份(必须与稿件相同)。算出每份的值,再把值设置为根元素字号,那么就可以通过rem来设置大小了。
    • 虽然不同屏幕分出来的值可能不同,但是通过rem设置它的比例是相同的,就达到了想要的目的
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,728评论 1 92
  • Bootstrap是什么? 一套易用、优雅、灵活、可扩展的前端工具集--BootStrap。GitHub上介绍 的...
    凛0_0阅读 10,848评论 3 184
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,303评论 0 11
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,138评论 0 1
  • 第四十四章 祭祀之塔 大家还在恍惚间,方新的一颗人头又在墙内消失不见了.看得其他人是心里毛毛的,都傻站着不知道该干...
    笑君杀手阅读 346评论 0 0