元素显示模式 盒子模型 flex布局

备忘

一、元素显示模式显示以及转换

1.块级元素

<div>;<h1>~<h6>;<p>;<ol>有序列表;<ul>无序列表;<footer>;<header>;<li>;

<hr>水平分割线;<form>;<table>表格;<dd>定义列表中定义条目描述;<dl>定义列表;

<address>联系方式信息;<article>文章内容;<aside>伴随内容;<blockquote>块引用;<fieldset>表单元素分组;<figcaption>图文信息组标题;<figure>图文信息组 (参照<figcaption>);<hgroup>标题组;<pre>预格式化文本;<section>一个页面区段

2.行内元素

<del>删除,<u>可定义下划线文本,<b>文本粗体,<i>斜体字,<em>强调文本斜体,< strong>强调文本粗体,<a>,<span>,<s>删除(用 <del> 替代),<sin>

3.行内块元素

<img>,<input>,<td>等。

  • 转块级元素(独霸一行,且可设置宽高) dispaly:block;

  • 转换成行内元素(一行多个,不可设置宽高) display:inline;

  • 转换成行内块元素(一行多个,且可设置宽高) display:inline-block;

二、盒子模型

border:边框;padding:内边距;margin:外边距

标准盒子模型:width 和 height 指的是内容区域的宽度和高度。增加内边距、边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸。

IE盒子模型:width 和 height 指的是内容区域+border+padding的宽度和高度。

  div{
        width: 200px;
        height: 200px;
    padding-left: 10px;
        padding-right: 20px;
        padding:40px 50px 60px;
        padding-bottom: 30px;
        border: 2px solid #000;
    background-color: aqua;
    }
  • padding-left:10px;和padding-right:20px; 没用,因为后面的padding大属性,层叠掉了他们。

效果为

border设置为1px,显示是0.998px;设置为2px,显示为上图1.995px。我是用联想浏览器打开的,譬如设置1px,缩小放大页面时显示的数值会变化,且一会大一会小,达到400%才为我设置的1,并且在这个过程中padding、margin一直保持不变,而内容的大小有时变化。我用谷歌火狐打开也是类似情况,具体原因不清楚,可能与计算机/屏幕分辨率有关?但目前没有影响,【相关发现: CSS边框:1px显示为0.667px或1px,具体取决于计算机/显示器分辨率(?) 】不过并未理解

左:内容区域 中:内边距 右:边框

相关推荐:CSS盒模型详解(图文教程) - 千古壹号 - 博客园 (cnblogs.com)

三、flex布局

在flex容器中,默认存在两根轴,分别为水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置叫做 main start,结束位置叫做 main end;交叉轴的开始位置叫做 cross start,结束位置叫做 cross end。项目默认沿主轴排列。单个项目占据的主轴空间叫做 main size,占据的交叉轴空间叫做 cross size。

强调:不能先入为主认为宽度就是 main size,高度就是 cross size,这个还要取决于你主轴的方向,如果你垂直方向是主轴,那么项目的高度就是 main size。

实现 flex 布局需要先指定一个容器,任何一个容器都可以被指定为 flex 布局,这样容器内部的元素就可以使用 flex 来进行布局。可以通过将元素的 display 属性设置为 flex(生成块级 flex 容器)或 inline-flex(生成类似 inline-block 的行内块级 flex 容器)。

简而言之,如果使用块元素如 div,可以使用 flex,而如果使用行内元素,可以使用 inline-flex。

注意:当一个元素设置了 Flex 布局以后,其子元素的 float、clear 和 vertical-align 等属性将失效。

采用flex布局的元素,称为flex容器,里面的子元素为item

父项常见属性(即用于容器)

1.flex-direction(决定主轴方向,即项目排列的方向)

  • 默认值:row,主轴为水平方向,从左到右;

  • row-reverse:主轴为水平方向,从右到左;

  • column:主轴为垂直方向,从上到下;

  • column-reverse:主轴为垂直方向,从下到上。

2.flex-wrap(控制子元素是否换行)

  • 默认值:nowrap 不换行,即当主轴尺寸固定时,当空间不足时,项目尺寸会随之调整而并不会 挤到下一行;

  • wrap:项目主轴总尺寸超出容器时换行,第一行在上方;

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

3.flex-flow(flex-direction 和 flex-wrap 的简写形式)

4.justify-content(flex-direction: row时的测试)(设置子元素在主轴上的排列方式)

  • 默认值: flex-start 左对齐,即从头开始排列;

  • flex-end:右对齐,即从尾部开始排列;

  • center:居中,即在主轴居中对齐;

  • space-between:两端对齐,项目之间的间隔相等,即剩余空间等分成间隙(先两边贴边再平分 剩余空间);

  • space-around:每个项目两侧的间隔相等,所以项目之间的间隔比项目与边缘的间隔大一倍(平分剩余空间)。

5.align-items(flex-direction: row时的测试)(设置子元素在侧轴排列方式)

  • 默认值为 stretch 即如果项目未设置高度或者设为 auto,将占满整个容器的高度(拉伸);

  • flex-start:从上到下,交叉轴的起点对齐;

  • flex-end:从下到上,交叉轴的终点对齐;

  • center:垂直居中;

  • baseline: 项目的第一行文字的基线对齐。

6.align-content(设置对齐弹性线)【多行】

子项常见属性(用于 item 项目)

1.order(改变子元素排列顺序)【数值越小,排列越靠前】

  • order:0(保持原位置)1(前进一位)-1(后退一位)

定义项目在容器中的排列顺序,数值越小,排列越靠前,默认值为 0

2.flex-basic(规定某个子元素的初始长度)

  • 默认值:auto,即项目本来的大小, 这时候 item 的宽高取决于 width 或 height 的值

  • 当主轴为水平方向的时候,当设置了 flex-basis,项目的宽度设置值会失效,flex-basis 需要跟flex-grow 和 flex-shrink 配合使用才能发挥效果。

当 flex-basis 值为 0 % 时,是把该项目视为零尺寸的,故即使声明该尺寸为 100px,也没有用;
当 flex-basis 值为 auto 时,则跟根据尺寸的设定值(假如为 100px),则这 100px 不会纳入剩余空间。

3.flex-grow(某个子元素相对其余子元素增长的值)

4.flex-shrink(某个子元素相对其余子元素收缩的值)

5.flex(flex-grow, flex-shrink 和 flex-basis的简写)

  • 定义子项目分配的剩余空间,用flex来表示占多少份数

6.align-self(属性规定弹性容器内所选项目的对齐方式)

  • 默认值为 stretch 即如果项目未设置高度或者设为 auto,将占满整个容器的高度(拉伸);

  • flex-start:从上到下,交叉轴的起点对齐;

  • flex-end:从下到上,交叉轴的终点对齐;

  • center:垂直居中;

  • baseline: 项目的第一行文字的基线对齐。

这个跟 align-items 属性时一样的,只不过 align-self 是对单个项目生效的,而 align-items 则是对容器下的所有项目生效的。

【可覆盖align-items属性】

参考30 分钟学会 Flex 布局 - 知乎 (zhihu.com)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值