CSS小技巧——flex实现元素位置自动更新


今天在写项目的时候,在思考怎么实现把一个图片列表中的点击过的图片隐藏之后,在其下面的图片位置自动更新,后来想到了flex这个神奇的CSS属性。

flex + 最大/最小宽高度
先来看一个简单的代码:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        .par {
            width:100%;
            /*height:100vh;*/
            height:600px;
            border:1px solid red;
            display: flex;
            flex-direction: column;
        }
        .child {
            width:100%;
            border:1px solid blue;
            flex:1;
            max-height:150px;
        }
    </style>
</head>
<body>
    <div class = "par">
        <div class="child">技术妃加送傲气而不计算机课徐1</div>
        <div class="child">技术妃加送傲气而不计算机课徐2</div>
        <div class="child">技术妃加送傲气而不计算机课徐3</div>
        <div class="child">技术妃加送傲气而不计算机课徐4</div>
    </div>
    <script type="text/javascript">
        var child = document.querySelectorAll(".child");
        for(let i=0;i<child.length;i++)
            child[i].onclick = function(event) {
                 child[i].style.display = 'none'
            }
    </script>
</body>
</html>

效果如下:


2020-04-27_23-43-37.gif

可以看到当我点击元素时,元素隐藏后,其他元素自动会补上它的空位。
这里给每个子元素设置flex:1的意思是,不设置高度,这些子元素平分父元素的高度值

这里可能有人有疑惑,如果我给它加上一个高度值,比如:height:100px,他的结果是什么样呢? flex的优先级比height的优先级高。

这里为了让一个元素消失后,其他元素的高度不发生变化,加入了max-height,这样就可以让元素既自动补位又不至于宽高发生变化。

如果你想设置高度为相对单位的话,可以设置vh这样的相对单位,(对于父元素高度不确定的元素,设置%无效),结果仍然相同。

2020-04-27_23-56-17.gif

感慨一句

CSS真是太强了!!!!:)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 6,882评论 0 11
  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 10,162评论 0 26
  • (这是15年初学css时记的笔记) 选择器 简单选择器 标签选择器 直接把标签名加前面。 类选择器 用.+ cla...
    burningalive阅读 4,796评论 0 0
  • 移动开发基本知识点 一.使用rem作为单位 html { font-size: 100px; } @media(m...
    横冲直撞666阅读 8,957评论 0 6
  • 使用纯 CSS 实现 500px 照片列表布局 文章很长,因为介绍了如何一步一步进化到最后接近完美的效果的,不想读...
    HZ充电大喵阅读 7,572评论 0 4

友情链接更多精彩内容