(本篇内容代表本人理解,如有错误请指出!)

box-sizing

box-sizing 属性用于更改用于计算元素宽度和高度的默认的 CSS 盒子模型。可以使用此属性来模拟不正确支持CSS盒子模型规范的浏览器的行为。

/* 关键字 值 */
box-sizing: content-box;
box-sizing: border-box; /* 全局 值 */
box-sizing: inherit;
box-sizing: initial;
box-sizing: unset;

content-box

        <style>
.cen{
width:500px;
height:250px;
border: 5px solid red;
box-sizing:content-box;
background-color: darkcyan;
padding: 0 50px
}
</style>
</head>
<body>
<div class="cen"> width 和 height 属性包括内容,内边距和边框,但不包括外边距。</div>
</body>

上图以及代码可以看出box-sizing值为content-box的时候,你所设的宽度而不是实际宽度了,而实际宽度是:width(所设置的宽度)+border+padding

border-box

        <style>
.cen{
width:500px;
height:250px;
border: 5px solid red;
box-sizing: border-box;
background-color: darkcyan;
padding: 0 10%
}
</style>
</head>
<body>
<div class="cen"> width 和 height 属性包括内容,内边距和边框,但不包括外边距。</div>
</body>

从上图以及代码可以看出box-sizing的值为border-box的时候,设置的宽度已经包含border+padding+width

详细内容请查看MDN

Flex布局

任何一个容器以及行内元素都可以使用Flex布局。

.box {
display:flex
}

容器的6个属性:

  • flex-direction
  • flex-wrap
  • flex-flow
  • justify-content
  • align-items
  • align-content

flex-direction:决定主轴的方向

        <style>
body{
display: flex;
flex-direction: row;
}
div{
width: 100px;
height:50px;
background-color: yellow;
margin: 20px
}
</style>
</head>
<body>
<div>1</div>
<div>2</div>
<div>3</div>
</body>

<style>
body{
display: flex;
flex-direction: row-reverse;
}
div{
width: 100px;
height:50px;
background-color: yellow;
margin: 20px
}
</style>
</head>
<body>
<div>1</div>
<div>2</div>
<div>3</div>
</body>

这里只演示2个属性值,一下是各值得含义:

  • row(默认值):主轴为水平方向,起点在左端。
  • row-reverse:主轴为水平方向,起点在右端。
  • column:主轴为垂直方向,起点在上沿。
  • column-reverse:主轴为垂直方向,起点在下沿。

flex-wrap  属性定义,如果一条轴线排不下,如何换行。

它有3个值 当值为nowrap时不换行,也是默认值。

<style>
body{
display: flex;
flex-wrap: nowrap
}
div{
width: 100px;
height:50px;
background-color: yellow;
margin: 20px
}
</style>
</head>
<body>
<div>1</div>
<div>2</div>
<div>3</div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</body>

nowrap(默认):不换行。

wrap:换行,第一行在上方。

wrap-reverse:换行,第一行在下方。

flex-flow 属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap

举个例子;

      <style>
body{
display: flex;
flex-flow: row-reverse wrap
}
div{
width: 100px;
height:50px;
background-color: yellow;
margin: 20px
}
</style>
</head>
<body>
<div>1</div>
<div>2</div>
<div>3</div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</body>

justify-content属性定义了项目在主轴上的对齐方式。

有五个属性值

  • flex-start(默认值):左对齐
  • flex-end:右对齐
  • center: 居中
  • space-between:两端对齐,项目之间的间隔都相等。
  • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

列举一个居中的例子:

<style>
body{
display: flex;
justify-content: center
}
div{
width: 100px;
height:50px;
background-color: yellow;
margin: 20px
}
</style>
</head>
<body>
<div>1</div>
<div>2</div>
<div>3</div>
</body>

align-items属性定义项目在交叉轴上如何对齐。

有五个属性值:

  • flex-start:交叉轴的起点对齐。
  • flex-end:交叉轴的终点对齐。
  • center:交叉轴的中点对齐。
  • baseline: 项目的第一行文字的基线对齐。
  • stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

举一个baseline的例子

 <style>
body{
display: flex;
align-items: baseline
}
div{
width: 200px;
height:50px;
background-color: yellow;
margin: 20px
}
</style>
</head>
<body>
<div style="font-size:5px">javaScript 1</div>
<div style="font-size:25px">javaScript 2</div>
<div style="font-size:35px">javaScript 3</div>
</body>
flex-start

flex-end

center

align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

  • flex-start:与交叉轴的起点对齐。
  • flex-end:与交叉轴的终点对齐。
  • center:与交叉轴的中点对齐。
  • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
  • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
  • stretch(默认值):轴线占满整个交叉轴。

列举居中的例子:

        <style>
body{
display: flex;
width:100%;
height:300px;
border: 1px solid cadetblue;
align-content: center;
flex-wrap: wrap
}
div{
width: 200px;
height:50px;
background-color: yellow;
margin: 20px
}
</style>
</head>
<body> <div style="font-size:5px;height:50px">javaScript 1</div>
<div style="font-size:25px;height:90px">javaScript 2</div>
<div style="font-size:35px;height:70px">javaScript 3</div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</body>

Flex弹性布局以及box-sizing的更多相关文章

  1. 记一下flex弹性布局

    flex弹性布局也越来越广泛的在我们代码中出现了,更加方便我们的布局.自己用了查,查了用,有些还是记不住,俗话说好脑子不如烂笔头,原来都是写在本子上的,很不幸的一次次的想翻的时候总是找不到,还是写博客 ...

  2. flex弹性布局的基本介绍

    最近开始做元素排列比较复杂的项目,同时需要各种型号手机的适配,我发现以前所掌握的盒子模型.display.position.float等已经不能满足我的需求了, 于是开始着重学习flex弹性布局并运用 ...

  3. css进阶之二:flex弹性布局

    布局模式是指一个盒子与其兄弟.祖先盒的关系决定其尺寸与位置的算法.css2.1中定义了四种布局模式,分别是块布局.行内布局.表格布局.以及定位布局.css3引入了新的布局模式Flexbox布局,灵活度 ...

  4. CSS3动画属性和flex弹性布局各个属性

    [CSS3动画的使用] 1.声明一个关键帧(动画): @keynames name{ from{} to{} } 每个阶段的写法: ①可以直接使用from-to的写法 ②可以设置0%-100%的写法, ...

  5. flex弹性布局心得

    概述 最近做项目用flex重构了一下网页中的布局,顺便学习了一下flex弹性布局,感觉超级强大,有一些心得,记录下来供以后开发时参考,相信对其他人也有用. 参考资料: Solved by Flexbo ...

  6. flex弹性布局属性详解!

    详细看下flex弹性布局具体属性: flex容器属性详解:flex-direction:row/column:(横排/竖排) 决定元素的排列方向:flex-wrap:nowrap/wrap/wrap- ...

  7. java基础之Flex弹性布局、JSP错误处理以及Log4J

    一.Flex弹性布局 1.产生的比较晚,目前在移动网页开发中可以使用,而且逐渐成为主流. 在桌面网页开发中使用的比较少(主要是桌面浏览器的兼容性问题更加严重) 2.开启方法: 在容器标签上加上 dis ...

  8. flex弹性布局,好用

    一直不太喜欢自己布局前端页面,都是扒别人的页面 ,最近在练习小程序,页面无处可扒,只有自己布局 发现flex弹性布局真好用,布局起来很简单,实现的效果也很好,赞 以后可以自己写一点前端了,哈哈

  9. flex弹性布局学习笔记

    前言 资料来源于网络,本人只是对此作了一下操作,记录于此以便以后查阅.目的在于梳理自己前端凌乱的知识点. 本文根据 Brian Franco 的一个flexbox.scss库来记录 入职新公司前对移动 ...

  10. flex弹性布局

    Flex 布局教程:语法篇  原文地址:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool 作者:  ...

随机推荐

  1. Asp.Net Core 轻松学-一行代码搞定文件上传

    前言     在 Web 应用程序开发过程中,总是无法避免涉及到文件上传,这次我们来聊一聊怎么去实现一个简单方便可复用文件上传功能:通过创建自定义绑定模型来实现文件上传. 1. 实现自定义绑定模型 1 ...

  2. group by搭配 order by解决排序问题

    问题 Ftravel_id Facct_no Froute_code Fmodify_time 41010020180725102219102000010452 1359c027b0a15266418 ...

  3. Js-函数式编程

    前言 JavaScript是一门多范式语言,即可使用OOP(面向对象),也可以使用FP(函数式),由于笔者最近在学习React相关的技术栈,想进一步深入了解其思想,所以学习了一些FP相关的知识点,本文 ...

  4. pm2通过配置文件部署nodejs代码到服务器

    一.pm2文档地址: http://pm2.keymetrics.io/ 二.在本地项目下新建ecosystem.config.js文件,并且推送到远端(记得node_modules这个文件夹也得推送 ...

  5. iis正确安装了,但是还是无法访问,这是iis和.net安装顺序问题,记录一下

    正确顺序:先安装iis,后安装net 如果没有按照正常顺序进行安装的,可能就无法访问了,这就需要手动 注册asp.net 4.0 到iis ,可以使用此命令重新注册一下: 32位的Windows: 1 ...

  6. centos7 ipaddr 无法查看虚拟机IP解决办法

    原因是: CentOS 7 默认是不启动网卡的 解决办法:https://blog.csdn.net/wxx729418277/article/details/79130649

  7. Oracle数据库的安装 【超详细的文图详解】

    Oracle简介Oracle Database,又名Oracle RDBMS,或简称Oracle.是甲骨文公司的一款关系数据库管理系统.它是在数据库领域一直处于领先地位的产品.可以说Oracle数据库 ...

  8. 委托的多线程方法BeginInvoke

    同步方法和异步方法: 同步方法调用在程序继续执行之前需要等待同步方法执行完毕返回结果.(比如烧水泡茶,需要等水烧开了才能继续泡茶) 异步方法则在被调用之后立即返回以便程序在被调用方法完成其任务的同时执 ...

  9. h5页面 video暂停播放 视频控件 以及当前页面只有一个可以播放效果

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...

  10. java 线程池 ---- newSingleThreadExecutor()

    class MyThread implements Runnable{ private int index; public MyThread(int index){ this.index = inde ...