深入理解和应用display属性(二)

四、inline-block

此类元素是inline + block的合体

1) margin和padding都有效;width和height都有效;

.inline{
                display: inline-block;
                width: 200px;
                background: red;
                margin: 10px;
                padding: 10px;
            }
<div class="inline"><a>inline01</a></div>
        <div class="inline"><a>inline02</a></div>
        <div class="inline"><a>inline03</a></div>
        <div class="inline"><a>inline04</a></div>

1) 还是存在8像素的间隔

2) Block/inline-block元素包裹的inline-block元素,默认超width会换行,hieght撑开,可以通过white-space:nowrap强制不换行,但不能实现文本省略显示。

a{
                background: red;
                font-size: 14px;
                display: inline-block;
            }
            .overWidth{
                white-space: nowrap;
                width: 100px;
                border: 1px solid gray;
                overflow: hidden;
                text-overflow: ellipsis;
            }
<div class="overWidth" >
            <a>a01dd</a>
            <a>a000000002</a>
        </div>

五、Inherit

继承父元素的display属性。

六、flex

实现盒子布局,主要分为容器和子元素相种。在容器元素上用display:flex指定为flex盒子,在子元素上用flex指定元素所占用的格子数。

Flex容器重要属性

1) Flex-direction:表示项目排列方向,可以有四个,左到右,右到左,上到下,下到上

2) Flex-wrap:表示是否允许换行,默认不允许(nowrap)

Flex-flow:是flex-direction和flex-wrap的组合写法

.wrap02{
                width: 600px;
                height: 200px;
                border: 1px solid red;
                display: flex;
                flex-flow: column wrap
            }
            .grid02{
                flex-basis: 60px;
                background: gray;
            }
<div class="wrap02">
            <div class="grid02">01</div>
            <div class="grid02">02</div>
            <div class="grid02">03</div>
            <div class="grid02 grid04 ">04</div>
            <div class="grid02">05</div>
        </div>

4) Justify-content:设置项目的间隔对齐方式(X轴),注意space-between(两端对齐,项目之间间隔一样,顶边);space-around(每个项目两侧的间隔相等,所以,项目之间的间隔比项目与边框的间隔大一倍)

.wrap02{
                width: 600px;
                height: 200px;
                border: 1px solid red;
                display: flex;
                flex-flow: column wrap;
                justify-content: space-around;
            }
            .grid02{
                flex-basis: 60px;
                background: gray;
            }
<div class="wrap02">
            <div class="grid02">01</div>
            <div class="grid02">02</div>
            <div class="grid02">03</div>
            <div class="grid02 grid04 ">04</div>
            <div class="grid02">05</div>
        </div>

5) Align-items:属性定义在交叉轴上的对齐方式(Y轴,垂直对齐),stretch可以拉申(默认值)

.wrap02{
                width: 600px;
                height: 200px;
                border: 1px solid red;
                display: flex;
                flex-wrap: wrap;
                align-items: center;
            }
            .grid02{
                flex-basis: 200px;
                background: gray;
            }
<div class="wrap02">
            <div class="grid02">01</div>
            <div class="grid02">02</div>
            <div class="grid02">03</div>
            <div class="grid02 grid04 ">04</div>
            <div class="grid02">05</div>
        </div>

Flex项目的重要属性

1) Align-self:项目自身的对齐方式,可以覆盖容器的align-items属性的值

2) Flex:他是flow-grow\flow-shrink\flex-basis简写,设置元素占用的格子数,如下例子格子是均分的

.wrap{
                width: 400px;
                height: 200px;
                border: 1px solid red;
                display: -webkit-flex;
                display: flex;
            }
            .grid{
                background: gray;
                flex: 1;
            }
            .mid{
                flex: 2;
                background: red;
            }
<div class="wrap" >
            <div class="grid">01</div>
            <div class="mid">01</div>
            <div class="grid">01</div>
        </div>

3) Flex-grow:所有子元素之和小于容器宽度时,如果处理剩余宽度,flex-grow默认为0,如果设置为正数,则表示索取剩余宽度值,公式如下:
子元素自身宽度 + 剩余宽度*(子元素自身glex-frow)/(所有子元素的flex-grow之后和)

.wrap{
                width: 400px;
                height: 200px;
                border: 1px solid red;
                display: -webkit-flex;
                display: flex;
            }
            .grid{
                background: gray;
                flex-grow: 1;
                flex-basis: 50px;
            }
            .mid{
                flex-basis: 60px;
                background: red;
            }
<div class="wrap" >
            <div class="grid">01</div>
            <div class="mid">01</div>
            <div class="grid">01</div>
        </div>

Grid1和grid3计算:50 + 240 * 1/2 = 170

Grid2计算:没有设置flex-grow属性,所以为固定值

4) Flex-shrink:所有子元素之和大于容器宽度时,如果处理超出宽度,flex-shrink默认为1,值越大减小的越厉害,值为0,表示不减少,公式如下:
子元素自身宽度 – 超出宽度 * ( 子元素自身宽度 * 子元素自身的flex-shrink/ ( 所有子元素宽度 * 子元素的flex-shrink之和) )

.wrap{
                width: 400px;
                height: 200px;
                border: 1px solid red;
                display: -webkit-flex;
                display: flex;
            }
            .grid{
                background: gray;
                flex-basis: 200px;
            }
            .mid{
                flex-basis: 100px;
                background: red;
            }
<div class="wrap" >
            <div class="grid">01</div>
            <div class="mid">01</div>
            <div class="grid">01</div>
        </div>

Grid1和grid3计算:200 – 100 * 200 / 500 = 160

Grid2计算:100 – 100 * 100 /500 = 80

注意事项:

1) Flex-grow和flex-shrink不好和flex直接混合应用,此两个值是在固定宽度的情况下进行均分的算法,如果嵌入flex属性,算法还不明确。

时间: 2024-07-29 04:40:33

深入理解和应用display属性(二)的相关文章

如何理解CSS的display属性

在布局中, display 属性是最重要的CSS属性之一.其最常见的属性值有 block , inline , none , table 以及 inline-block .最近的新宠为 flex ,因为它是专门为布局创建的 display 属性.新出现的 grid (最近仍比较活跃)是另外一个指定的布局属性,其很快就会广泛被使用. 这篇文章比我预期的要长很多,你可以选择性进行阅读,但是我更希望你可以静下心来阅读整篇文章. 表内容 通过创建各种响应式设计,对于 display 以及 positio

深入理解和应用display属性(一)

Display在官方定义:规定元素应该生成的框的类型.本文只重点分析常用的6个值:none.block.inline.inline-block.inherit.flex.其他table.list-item等都不再推荐使用. 一.None 此元素不会被显示.主要与visibility属性为hidden时相区分. 1) 当元素的none时,js可以获取此元素,但不能获取/设置此元素的可视化属性的值(但可以设置自定义属性的值),如Width.Height.background等Css属性的值,这也就表

理解display属性

理解display属性 display属性是我们在前端开发中常常使用的一个属性,其中,最常见的有: none block inline inline-block inherit 下面,我将按照顺序将上述几种属性做一个完整的讲解. 第一部分:display:none none这个值表示此元素将不被显示.比如,当我们在浏览网页时,如果看到了某个烦人的广告遮挡了我们的实现,更为可气的是,它还没有关闭的选项,这时(以chrome为例),我们就可以按下F12,打开开发者工具,点击element,然后使用左

深入理解display属性

目录 [1]block [2]inline [3]inline-block[4]none [5]list-item [6]run-in [7]table [8]inline-table [9]table-cell [10]table-caption 前面的话 display属性在网页布局中非常常见,但经常用到的仅仅是block.inline-block.inline和none等寥寥几个属性值,本文将详细介绍display属性的各个方面 定义 display属性用于规定元素生成的框类型,影响显示方

理解与应用css中的display属性

display属性是我们在前端开发中常常使用的一个属性,其中,最常见的有: none block inline inline-block inherit 下面,我将按照顺序将上述几种属性做一个完整的讲解. 第一部分:display:none none这个值表示此元素将不被显示.比如,当我们在浏览网页时,如果看到了某个烦人的广告遮挡了我们的实现,更为可气的是,它还没有关闭的选项,这时(以chrome为例),我们就可以按下F12,打开开发者工具,点击element,然后使用左上角的选择工具选中想要删

(十二)学习CSS之display属性

参考:http://www.w3school.com.cn/cssref/pr_class_display.asp 浏览器支持 所有主流浏览器都支持 display 属性. 注释:如果规定了 !DOCTYPE,则 Internet Explorer 8 (以及更高版本)支持属性值 "inline-table"."run-in"."table"."table-caption"."table-cell".&qu

display属性剖析

首先display常用属性大家应该已经有所了解,这里主要对display的以下四大属性进行"详剖" none block inline inline-block 一.display:none 我们知道,display具有隐藏元素的功能,但是同样我们知道visibility: hidden也具有隐藏元素的功能,下面我们通过一个例子来看一下两者的区别: <span style="display: none;background-color: orange;width: 80

关于opacity、visibility、display属性的一道CSS面试题

https://blog.csdn.net/FE_dev/article/details/72628734 问题: 一个下拉菜单,结构如下, <!doctype html><html lang="en"> <head> <meta charset="UTF-8"> <style> div{ width:400px; height:40px; background:red; position:relative

深入理解maven与应用(二):灵活的构建

深入理解maven及应用(一):生命周期和插件 参考官方url:http://maven.apache.org/guides/index.html 一个优秀的构建系统必须足够灵活,应该能够让项目在不同的环境下都能成功构建.maven为了支持构建的灵活性,内置了三大特性,即:属性.profile和资源过滤. 1.maven属性 maven属性分6类: 1.内置属性:如${basedir}表示项目根目录,${version}表示项目版本 2.POM属性:用户可以引用pom文件中对应的值.如: ${b