flex横向布局时item之间间距以及行距设置的问题

发布于 2022-09-11 22:35:45 字数 1959 浏览 13 评论 0

html结构

 <div class="container">
            <div class="card" v-for="item in names"  :key="item.key">
                <div class="card-title">{{item.label}}</div>
                <div class="switch-status">
                    <div class="status">
                        <img src="../../img/Energy/ic_clo.png">
                        <div>
                            当前状态:<span v-if="item.value" class="normal">运行</span><span class="error" v-else>关闭</span>
                        </div>
                    </div>
                    <div class="switch">
                        <el-switch v-model="item.value" active-text="开" inactive-text="关" active-color="#13ce66"
                            inactive-color="#F1F5F8">
                        </el-switch>
                    </div>
                </div>

            </div>
        </div>

css

.container {
    flex-flow: wrap;
    background-color: #001647;
    padding: 1%;
    display: flex;
}
.switch-status{
    display: flex;
    padding: 10px;
}
.card{
    background: url(../../../img/Energy/bg_sb.png) no-repeat;
    width: 10%;
    margin: 20px 0;
}
.card-title{
    padding: 5px;
    color:#17b5db;
}
.status{
    text-align: center;
}
.switch{
    margin: -10px;
    display: flex;
    justify-content: center;
    align-items: center;
}

此时的布局时

clipboard.png
两行之间的间距异常的大

当我改变窗口大小之后
clipboard.png
同一行之间的间距变的很窄 上下两行间距仍旧很大

求问解决方法

clipboard.png

实现类似的布局

两行之间的行距可以用 align-content: flex-start; 解决掉

但是同一行之间的item在 改变浏览器窗口大小的时候如何响应呢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

天生の放荡 2022-09-18 22:35:45

之所以,你改变窗口大小的时候横向布局会很挤,是因为你被card设置width:10%的宽度;

两行之间的行距可以用 align-content: flex-start; 解决掉

两行直降的间距应该用是用margin去间距,align-content属性只是让所有子元素,尽量向上挤

.container {
    flex-flow: wrap;
    background-color: #001647;
    display: flex;

}
.switch-status{
    display: flex;
    padding: 10px;
}
.card{
    background: url('~@/assets/logo.png') no-repeat;
    margin: 20px 0;
    margin: 10px
}

最后:你贴出的希望图,一般情况下,他在改变屏幕宽度的时候也会存在水平右部间距异常,解决这个问题也不是没有办法

思路如下:
window.resize方法中主动去修改该横向布局的间隔即可,但是这里涉及到计算,咱们flex-warp:warp是竟可能撑满,那么最多的情况是水平右部多出不到一个元素item的空间,计算将空间均分分布在元素中间即可

如梦亦如幻 2022-09-18 22:35:45

你可以在你的.container 设置{
justify-content:space-between;
}
给你的 .card设置具体的宽度。

温柔女人霸气范 2022-09-18 22:35:45

1.flex左右使用margin会不相等,那就别用flex,直接用百分比,主要改一下html的格式套一层,这样就完事了


          #boxs {
            margin: 10px;
        }

        .items {
            width: 10%;
            float: left;
        }
        .card {
            background: red;
            height: 200px;
            margin: 10px;
            border: 1px solid #ccc;
            box-sizing: border-box;
        }
    <div id="boxs">
        <div class="items">
            <div class="card">1</div>
        </div>
        <div class="items">
            <div class="card">1</div>
        </div>
    </div>

2.如果非要使用flex,下面代码效果一样

       #boxs {
            display: flex;
            flex-flow: wrap;
            flex-direction: row;
        }

        .items {
            width: 10%;
        }
        .card {
            background: red;
            height: 200px;
            margin: 10px;
            border: 1px solid #ccc;
            box-sizing: border-box;
        }

clipboard.png

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文