首页 > 其他分享 >CSS 浅探flex布局中使用的overflow ,及width/height=0

CSS 浅探flex布局中使用的overflow ,及width/height=0

时间:2023-07-30 18:25:03浏览次数:44  
标签:flex width auto 压缩 元素 浅探 header overflow

关于overflow,w3school定义是:

overflow:auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。

我对于overflow:auto的初级理解是,设置父元素height/width,若子元素溢出,则自动显示纵向/横向滚动条。

很长时间我是这么理解的,但是现在和flex布局一起就发现有点问题,在深入了解后,接触了BFC概念。

1.使用多层(两层)overflow:auto,了解overflow如何运作

<div style="background-color: gray;
            height: 200px;
            width:500px;
            display:flex;
            flex-direction: column;
            border: 4px solid #000;
            "
>
    <div style="height: 40px;">
        header
    </div>
    <div style="display: flex;
                flex:1;
                overflow:auto;
                "
    ><!--定义第一个overflow-->

        <div style="flex:1;
                    background-image: linear-gradient(#e66465, #9198e5);
                    overflow:auto;
                    "
        ><!--定义第二个overflow-->
            <p style="  height:300px;
                        width:100px;
                        background-color:cadetblue;
                        margin: 0;
                    "
            >111</p><!--定义高度以溢出父元素-->
        </div>

        <div style="flex:1;background-color:#e66465">second</div>
    </div>
</div>

 1.1.如果不定义第一个overflow的情况,仅定义第二个overflow:auto的情况下: 内容未被正确裁剪

header元素的高度被压缩

 1.2.若仅定义第一个overflow,未定义第二个overflow的情况下

 滚动条下拉发现子元素内容溢出,父元素级别被正常裁剪(背景)

2.flex布局中,overflow:hidden元素可被压缩至0 

从上面的例子看出,下方元素溢出时,根据flex弹性布局规则,将压缩其他元素(上方header)部分。

header压缩至最小高度将不再压缩,作为flex直接子元素,不设置宽高时,最小高度是根据该元素内容撑开决定的。

若此时将header部分设置为overflow:hidden或height:0,就可被flex压缩至0.

利用这种特性,可以实现一个全屏的例子

<div style="background-color: gray;
            height: 100vh;
            width:100vw;
            display:flex;
            flex-direction: column;">
    <div style="overflow: hidden;height: 40%;">
        header
    </div>
    <div id="fullscreen"
         style="display: flex;
                flex:1;
                overflow:auto;">
        <div style="flex:1;
                    background-color: #e66465;
                    overflow:auto;">
            <button onclick="fullscreen()">full screen</button>
            <p style="height:100vh;width:100px;background-color:cadetblue;"></p>
        </div>
    </div>
</div>
<script>
    function fullscreen(){
        let fullscr = document.getElementById('fullscreen');
        let overflow = fullscr.style.overflow;
        fullscr.style.overflow =  overflow == 'auto' ? 'visible' : 'auto';
    }
</script>

 点击按钮,去除下方元素oveflow属性,使高度随内容撑开,此时根据flex布局,将压缩上方header,达成效果。

3.同理flex布局中,内容被文字撑开,导致不能根据flex压缩 

<div style="display: flex;
            justify-content: space-between;
            width:200px">
    <div style="flex:1;background-color: #9198e5;">11111111111111111111111111</div>
    <div style="background-color: #e66465;">right</div>
</div>

 如上,定义了父级元素宽度为200px,由于子元素内容过多,在正常情况下,元素最小宽度由文字决定,此时宽度>200,溢出父级元素。

这个时候可以使用overflow:hidden,或width:0,由flex决定宽度。

3.1.使用overflow:hidden

 3.2.使用overflow:hidden;text-overflow:ellipsis

 

参考---https://blog.csdn.net/qq_35459724/article/details/110094921

标签:flex,width,auto,压缩,元素,浅探,header,overflow
From: https://www.cnblogs.com/pwindy/p/17591723.html

相关文章

  • 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(10.A)- FlexSPI NAND启动时间(RT1170)
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦i.MXRT1170FlexSPINAND启动时间。本篇是i.MXRT1170启动时间评测第四弹,前三篇分别给大家评测了RawNAND启动时间(基于MIMXRT1170-EVK_Rev.B)、SerialNOR启动时间(基于MIMXRT1170-EVB_Rev.A2)......
  • 移动端H5适配方案 (flexible.js +rem)
    一、flexible.jshttps://github.com/amfe/lib-flexible默认把当前屏幕划分10等份二、vscodecssrem插件(把px转换为rem)可以设置font-size大小easyless(保存.less文件后,自动生成对应的.css文件)三、示例//index.less//当屏幕超过750px时,强制把html字体大小改为75px......
  • 领略MyBatis-Flex的魅力
    一、MyBatis-Flex是什么MyBatis-Flex是一个优雅的MyBatis增强框架,它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用Mybaits-Flex链接任何数据库,其内置的QueryWrapper帮助我们极大的减少了SQL编写的工作的同时,减少出错的可能性。总而言之,MyBatis-Flex能够极......
  • css fit-content使用和flex使用高度自适应
    <!DOCTYPEhtml><html>  <head>    <metacharset="UTF-8">    <title></title>  </head>   <styletype="text/css">     body{      padding:0;      margin:......
  • flex弹性盒儿
    阮一峰博客对flex的介绍https://www.ruanyifeng.com/blog/2015/07/flex-grammar.html常用垂直居中.container{display:flex;justify-content:center;align-items:center;}其中justify-content属性●flex-start(默认值):左对齐●flex-end:右对齐●center:居中......
  • flex 布局详解
    一、flex简单介绍Flex全称Flexiblebox布局模型,通常称为flexbox或flex,也称为弹性盒子或弹性布局。一种比较高效率的css3布局方案。既然是盒子,首先需要一个容器container,然后是项目item。容器包裹着项目,再通过配置不同的属性,实现各种各样的排列分布。flex有两根轴线,分别......
  • FLEX里的CSS样式设置教材
    FLEX3中应用CSS完全详解手册!编辑完这个FLEX下的CSS说明后,我基本已经兵临崩溃边缘了。在些天在AIRIA下了不少好东西,今天终于有空,也发一个比较不错的东西给大家,相信都比较需要这个FLEX下的CSS使用方法的详细说明(好像我这份还不够详细,望大家补充)。AIRIA真的是一个不错的网站,很高......
  • android keywidth
    实现Android键盘宽度的步骤步骤概览下面是实现Android键盘宽度的步骤概览:步骤描述1获取键盘视图2监听键盘视图的布局变化3计算键盘的宽度接下来,我们将详细介绍每个步骤需要做什么,以及需要使用的代码和代码注释。步骤详解步骤1:获取键盘视图首先,我们需......
  • Flex的事件驱动问题
    说,Flex一切都是事件,flex是事件驱动的。(Flexisaneventdrivenprogrammingmodel,everything(andImeaneverything)happensduetoanevent.)。这个问题的起源是我写了一个读取VBox高度的代码:<?xmlversion="1.0"encoding="utf-8"?><mx:Applicationxmlns:mx="h......
  • 搬运 -阮一峰的网络日志 --Flex 布局教程:实例篇
    原文链接:http://www.ruanyifeng.com/blog/2015/07/flex-examples.html语法: https://www.cnblogs.com/yuwen1995/p/17568483.html一、骰子的布局骰子的一面,最多可以放置9个点。下面,就来看看Flex如何实现,从1个点到9个点的布局。你可以到codepen查看Demo。如果不加说明,本节的......