1.弹性盒子默认不换行

2.弹性盒子多行可以

 /* 弹性盒子换行 */flex-wrap: wrap;/* 单行侧轴对齐方式 */align-items: center;/* align-content: ;多行侧周对齐方式 *//* 多行盒子居中 */align-content: center;/* 多行盒子侧轴靠边对齐 */align-content: space-between;}/* 注意:1.多行盒子的对齐方式伴随wrap使用关键在于你的盒子换不换行 */

3.行内元素不能居中

4.浮动有类似于行内块特点

5.flex 子系宽度由内容撑开,高度是100%

块元素宽度100%,高度是由内容撑开

6.网页浏览器默认最小字体大小为12px

7.背景图过大可以用background-size:cover

8.弹性盒子需要给宽度,不然无法实现居中等

适配方案

移动端的适配方案:

  1. flex + rem单位 做适配效果 (比如淘宝和小米移动端) 当前市场最多

  2. flex + viewport width /vh单位 做适配效果 (比如 B站移动端 ) 新兴,马上的一个趋势

让flex做布局(盒子摆放),让rem或者vw/vh 实现网页元素的尺寸(宽度和高度)适配屏幕

rem 适配

rem 单位

rem 是一个相对单位,1rem 就是 html 文字的大小

比如

html {font-size: 35px;
}

则此时 1rem 就是 35像素。

媒体查询(了解)

媒体查询 mediaquery 可以自动检测视口的宽度。

媒体查询一个非常大的作用是:根据屏幕宽度修改html文字大小

使用媒体查询, 根据不同的视口宽度, 设置不同的根字号 ,就完成了适配

语法:

​
@media (width:375px) {html {font-size: 40px;}
}
​
@media (width:320px) {html {font-size: 30px;}
}

综合:

​
@media (width:375px) {html {font-size: 37.5px;}
}
@media (width:414px) {html {font-size: 41.4px;}
}
​
​
.box {width: 5rem;height: 5rem;background-color: pink;
}

通过媒体查询,检测不同的视口宽度,设定不同的html文字大小,元素设置rem单位后,可以达到元素适配效果

flexible.js

媒体查询写起来超级麻烦,而且检测不够精确,因此我们使用 flexible.js 这个 js文件,通过js 实时检测屏幕窗口的变化实现检测视口宽度。

这个也是值得提倡使用的一种方式。

有了这个js文件,可以帮我们自动检测屏幕宽度自动修改html文字大小,这样就可以让盒子配合rem完成适配。

<script src="./js/flexible.js"></script>

如何把设计稿的px转换为rem

问题:

  1. flexible 能够修改html文字大小,修改文字大小: 当前屏幕 / 10 就是文字大小

    例如: 当前屏幕 375px,则加了 flexible之后,html文字大小为 37.5px

  2. 我们的设计稿里面元素大小是固定的吗? 是 , 而是 px 单位 ,但是我们开发的时候,要使用 rem 才能适配。

  3. 那怎么把我们测量的px 转换为适配的rem呢?

    直接使用测量的px值 / 37.5 就是 rem的值

后面我们学习vue开发的时候,所有的单位我们写 px。就足够了。

LESS

less 可以帮我们把px单位转换到rem单位。

Less是一个CSS预处理器, Less文件后缀是.less

扩充了 CSS 语言, 使 CSS 具备一定的逻辑性、计算能力。

less 运算

.box {width: 100px + 100;// 注意:单位的转换 计算的时候以第一个单位为准height: (100 / 37.5rem);// height: (100rem / 37.5);// height: 100px - 50;margin: (20px * 5) auto;padding: (10px / 5);border: 1px + 2 * 3 solid red;
​
}

注意点:

  1. 计算以第一个单位为准, 尽量写到最后一个数字上。 比如

     height: (100 / 37.5rem);
  2. 除法比较特殊,必须添加小括号。

  3. 计算别忘了先乘除后加减

less 嵌套

可以生成后代选择器

.father {width: 500px;height: 500px;background-color: purple;// 孩子.son {width: 200px;height: 200px;background-color: pink;p {color: red;}}
​
}

生成css之后:

.father {width: 500px;height: 500px;background-color: purple;
}
.father .son {width: 200px;height: 200px;background-color: pink;
}
.father .son p {color: red;
}

我们在写伪类和伪元素的时候,经常使用 & 来代替父元素

.nav {width: 100px;height: 100px;background-color: pink;&::before {content: '1';}&:hover::before {color: red;}
}
.nav {width: 100px;height: 100px;background-color: pink;
}
.nav::before {content: '1';
}
.nav:hover::before {color: red;
}
​

less 变量

变量最大的优点是: 方便使用和修改。

语法:

@变量名: 值;
@fontSize: 16px;
​
@suibian: hotpink;
body {background-color: @suibian;
}
p {background-color: @suibian;
​
}
div {color: @suibian;
}
nav {border: 1px solid @suibian;
}
body {background-color: hotpink;
}
p {background-color: hotpink;
}
div {color: hotpink;
}
nav {border: 1px solid hotpink;
}

小练习

需求1: 使用less 完成以下效果 大盒子 father 小盒子 son

需求2: 鼠标经过大盒子,小盒子颜色变为 hotpink色

需求3: 请将 hotpink 颜色定义为一个变量。 @bgColor

-  建议: 小驼峰命名法     @backGroundColor
// 背景颜色变量
@backGroundColor: deeppink;
// 定义边框
@bd: 3px solid green;
.father {width: 500px;height: 500px;background-color: pink;display: flex;justify-content: center;align-items: center;border: @bd;.son {width: 200px;height: 200px;background-color: skyblue;border: @bd;}// &:hover .son {//   background-color: hotpink;// }&:hover {.son {background-color: @backGroundColor;}}
}

less导入

less的导入实际 是 less 文件的导入。

@import './变量.less';
@import url(./变量.less);

使用less导入的好处是: 减少了html页面 的 link标签数量。

less 导出

可以使用插件来设置导出:

  "less.compile": {"out": "../css/" // 设置导出css路径},

手动给每个less文件指定导出

导出必须写到第一行

// out: 路径/文件名
// out: ./mycss/pink.css

设置导出: 当面目录下,创建一个 mycss 文件夹, 生成 一个 pink.css (做了改名)

// out: ./mycss/

设置导出: 当面目录下,创建一个 mycss 文件夹, 生成 一个 跟less一样的文件名(原名)

less 禁止导出

// out: false

我们的需求的是要做移动端适配: 页面中的元素尺寸跟随屏幕宽度等比例缩放(适当调整大小)

方案如下:

flex + rem + flexiable.js + less

  1. 我们移动端采取 flex 布局

  2. rem单位: 做移动端适配的。

    • rem相对单位,跟html文字大小有关系

  3. 媒体查询: 检测屏幕的视口宽度

  4. flexiable.js :可以根据屏幕的宽度自动修改html文字大小

  5. less: less让我们的css具有了计算能力

    • less 可以让我们很方便的 把 px 转换为 rem

flex + rem + flexiable.js + less小结和注意相关推荐

  1. 黑马面面移动端布局(flex + rem + less)

    技术选型: flex + rem + less 插件主要使用: 慕客:主要是切图和测量px swiper:在这个官网上可以查看自己想要的相似样式只需要稍加修改就可以使用,需要引用相应的html结构 j ...

  2. [js]设计模式小结对原型的修改

    js设计模式小结 工厂模式/构造函数--减少重复- 创建对象有new- 自动创建obj,this赋值- 无return原型链模式 - 进一步去重类是函数数据类型,每个函数都有prototypecons ...

  3. asp.net调用js方法小结

    asp.net调用js方法小结 key:asp.net js方法互调   asp.net 前台如何调用后台方法 1. javaScript函数中执行C#代码中的函数: 方法一:1.首先建立一个按钮,在 ...

  4. html设置根rem,经过js动态设置根元素的rem方案

    rem目前是响应式开发移动端一个很重要也是经常使用的一个元素,可是在网上看的各类文章都会超级懵逼.因此我在下面给出两个方案,也列举出使用方法,让你们一目了然.前提是设计稿以750为准.其中测试的设计稿 ...

  5. 东北狼仙:苏宁手机端样式rem+flexible.js

    手机端研究了好几天做了手机端,还好基础的程序员生活不是很难,用心做几个项目撸出来就好了,最近学些rem布局挺不错的针对手机端使用比较不错,整个页面都可以自适应解决了字体图片等等的整体变大变小不会让页面 ...

  6. 2020-08-04 html的js位置 + css的flex实现九宫格 + JS的Array + 软技能的硬编码

    2020-08-04 题目来源:http://www.h-camel.com/index.html [html] 一般习惯把js写在</body>前,但有例外的情况吗?说说看 html文件 ...

  7. 超好用的移动端布局自适应大小rem判断js文件及超过一定高度回到顶部按钮代码...

    //以下代码放到一个adapt.js文件当中 (function (doc, win) {var docEl = doc.documentElement,resizeEvt = 'orientatio ...

  8. JavaWeb基础—JS学习小结

    JavaScript是一种运行在浏览器中的解释型的编程语言 推荐:菜鸟教程 一.简介 js:javascript是基于对象[哪些基本对象呢]和和事件驱动[哪些主要事件呢]的语言,应用在客户端(注意与面 ...

  9. jquery.cookie.js 使用小结

    先引入jquery,再引入:jquery.cookie.js 添加一个"会话cookie" $.cookie('the_cookie', 'the_value'); 这里没有指明 ...

最新文章

  1. 十年后你用什么听音乐?
  2. href=#与href=javascript:void(0)的区别
  3. Android首次启动时间长优化之预编译提取Odex
  4. 【风控策略】大数据风控策略逻辑
  5. 网易有道2017内推编程题
  6. graphpad prism怎么添加图例_Graphpad官网刚刚升级了!听说,新功能吊打R语言...........
  7. Android ServiceConnection
  8. string类的erase函数属于stl吗_探索STL容器:vector
  9. python抓包教程_Python Charles抓包配置实现流程图解
  10. python程序代码大全-Python编程代码示例 - 全文
  11. pdf factory pro7序列号教你如何打印转换PDF教程
  12. 机器学习系列(11)_决策树挖掘NBA冠军球队数据
  13. 如何查看谷歌浏览器的版本
  14. Go开发 之 单端口转发到多个端口
  15. 蓝牙「5.0」和「4.2」的区别???
  16. 牛客2019跨年AK场 E 【大】约数 (两个数的全部公约数)
  17. 如何将vectror<char>转换成string(C++)
  18. 【IP代理】吐槽某大爷IP
  19. 1.数据挖掘概念笔记——引论
  20. apt-get install 连同诸多依赖包一并安装的指令

热门文章

  1. 谈Timewait和NAT环境下的TW快速回收
  2. Lumerical FDTD,MODE官方案例下载
  3. 两台ubantu搭linux集群,如何使用运行Ubuntu 14.04的firewire在两台Linux...
  4. Ubuntu, RedFlag , XP 三系统安装
  5. 计算机中的位运算—正数,负数,原码,反码,补码
  6. PrimoBurnerSDK蓝光刻录工具开发工具包
  7. webmatrix如何使用php,使用微软的webmatrix配置php网站的步骤
  8. 路由器开发(一)—— 路由器硬件结构及软件体系
  9. 推荐几个我经常浏览的前端博客
  10. 写个html下载swf