JS编程验证flex的多列自适应布局

问题出处

flex布局能否实现多列布局,并且每一列的宽度不定?
答案:可以实现。

以下进行验证。

实现原理
  • 使用css实现多列布局
  • 在input框中输入字符动态改变每一列的宽度,观看布局变化
JS部分主要实现
  • 将查询到的输入框节点的类数组转成数组
  • 使用数组的forEach方法为每个输入框绑定input事件
  • 使用input事件监听输入,并将输入的内容放入相应列中
实现代码

由于只是验证功能,所以均未做兼容性处理

//css
.flex {
    display: flex;
    width: 300px;
    height: 200px;
    margin: 20px 0;
    overflow: hidden;
    border: 1px solid;
}
.box {
    flex: auto;
    word-break: break-word;
    background-color: #74d1f7;
}
.box2 {
    background-color: #96e2b8;
}
.box3 {
    background-color: #ec9472;
}
    
//html
<input class="test" type="text" data-id="box1" autofocus>
<input class="test" type="text" data-id="box2">
<input class="test" type="text" data-id="box3">
<div class="flex">
    <div class="box" id="box1"></div>
    <div class="box box2" id="box2"></div>
    <div class="box box3" id="box3"></div>
</div>
    
//js
Array.prototype.slice.call(document.querySelectorAll('.test')).forEach((item) => {
    item.addEventListener('input', (e)=> {
        var value = e.target.value,
            id = e.target.dataset.id;
        document.getElementById(id).innerHTML = value;
    })
})
补充

实现多列布局的方法有多种,比如:

  • 使用width:calc
  • 使用font-size:0+inline-block
  • position:absolute+margin
  • float

以上每一种的兼容性都不一样。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,805评论 1 92
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,948评论 18 139
  • 《ijs》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 5,330评论 0 7
  • 秋雨一样的女子 ——致陈秋妤 我在“海豚就在家”的群里呼唤秋妤的时候,因为“妤”字在拼音输入法中要翻篇寻找,为了省...
    重庆风铃阅读 1,367评论 0 6
  • 习惯说晚安, 在每一个夜晚 星星眨着眼睛, 月儿微微蜷着 乌云背后,太阳闪耀 风,来的时候, 一阵一阵, 清香 你...
    祈佛阅读 420评论 0 0