关于使用flexbox 的例子

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>使用flexbox</title>
    <link rel="stylesheet" href="//8.url.cn/edu/classroom/assets/lib/reset.css">
</head>
<body>
    <!--请在style.css中根据题目要求,完成本次习题-->
    <div class="page-user">
        <main class="main">
            <div class="line-item item--user item--only">
                <img class="item-avatar" src="http://coding.imweb.io/img/default-avatar.jpg" width="60" height="60" alt="">
                <div class="item-bd">
                    <p class="item-name">结一</p>
                    <p class="item-id">微信号:marvin</p>
                </div>
                <i class="icon-qrcode"></i>
                <i class="icon-v-right"></i>
            </div>


            <ul class="line-list">
                <li class="line-item">
                    <i class="item-icon icon--con"></i>
                    <p class="item-bd">相册</p>
                    <i class="icon-v-right"></i>
                </li>
                <li class="line-item">
                    <i class="item-icon icon--con"></i>
                    <p class="item-bd">收藏</p>
                    <i class="icon-v-right"></i>
                </li>
                <li class="line-item">
                    <i class="item-icon icon--con"></i>
                    <p class="item-bd">钱包</p>
                    <i class="icon-v-right"></i>
                </li>
                <li class="line-item">
                    <i class="item-icon icon--con"></i>
                    <p class="item-bd">卡片</p>
                    <i class="icon-v-right"></i>
                </li>
            </ul>
            <div class="line-item item--only">
                <i class="item-icon icon--con"></i>
                <p class="item-bd">表情</p>
                <i class="icon-v-right"></i>
            </div>
            <div class="line-item item--only">
                <i class="item-icon icon--con"></i>
                <p class="item-bd">设置</p>
                <i class="icon-v-right"></i>
            </div>
        </main>
        <footer class="footer">
            <nav class="nav">
                <a class="nav-link" href="#">
                    <i class="link-icon icon--pic"></i>
                    <p class="link-tt">微信</p>
                    <i class="icon-corner"></i>
                </a>
                <a class="nav-link" href="#">
                    <i class="link-icon icon--pic"></i>
                    <p class="link-tt">通讯录</p>
                </a>
                <a class="nav-link" href="#">
                    <i class="link-icon icon--pic"></i>
                    <p class="link-tt">发现</p>
                </a>
                <a class="nav-link" href="#">
                    <i class="link-icon icon--pic"></i>
                    <p class="link-tt">我</p>
                </a>
            </nav>
        </footer>
        
    </div>
</body>

</html>



样式

/*
* 题目要求:
* 1、需设置 .line-item 元素为 flexbox 布局
* 2、需设置 .item-bd 元素的 flex 属性为 1
* 3、需设置底部导航栏为 flexbox 布局
* 4、需设置底部导航栏的 nav-link 元素平分导航栏容器的剩余空间
*/


.page-user {
    max-width: 640px;
    min-width: 320px;
    margin-left: auto;
    margin-right: auto;
    padding-top: 20px;
}
.line-item {
    align-items: center;
    padding: 5px 10px;
    line-height: 34px;
    border-bottom: 1px solid #dbdbdb;
    background: #fff;
    display:flex;
    /* TODO: 需设置 .line-item 元素为 flexbox 布局 */
}
.line-item .item-bd {
    /* TODO: 需设置 .item-bd 元素的 flex 属性为1 */
    flex:1;
    
}
.line-item .item-icon {
    width: 24px;
    height: 28px;
    background: url(http://coding.imweb.io/img/icons/setting.png) no-repeat;
    background-size: 24px 28px;
    margin-right: 10px;
}
.line-item .icon-v-right {
    width: 10px;
    height: 10px;
    border: 1px solid #dbdbdb;
    border-width: 1px 1px 0 0;
    transform: rotate(45deg);
}


.item--only {
    border: 1px solid #dbdbdb;
    border-width: 1px 0;
    margin-bottom: 20px;
}
.item--user {
    padding: 10px;
}
.item--user .item-avatar {
    width: 60px;
    height: 60px;
    border-radius: 5px;
    margin-right: 10px;
}
.item--user .item-bd {
    line-height: 2;
}
.item--user .item-id {
    font-size: 12px;
}
.item--user .icon-qrcode {
    width: 22px;
    height: 28px;
    background: url(http://coding.imweb.io/img/icons/qrcode.png) no-repeat;
    background-size: 22px 28px;
    margin-right: 10px;
}


.line-list {
    border: 1px solid #dbdbdb;
    border-width: 1px 0;
    margin-bottom: 20px;
}
.line-list .line-item:last-child {
    border-bottom: 0;
}


/* footer */


.footer {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    height: 48px;
    background-color: #fff;
    border-top: 1px solid #dbdbdb;
}


.nav {
    /* TODO: 需设置底部导航栏为 flexbox 布局 */
    display:flex;
}
.nav-link {
    text-align: center;
    position: relative;
    padding-top: 2px;
    /* TODO: 需设置底部导航栏的 nav-link 元素平分导航栏容器的剩余空间 */
    flex-grow:1 ;
}
.nav-link .link-icon {
    display: inline-block;
    vertical-align: middle;
    width: 26px;
    height: 28px;
    background: url(http://coding.imweb.io/img/icons/star.png) no-repeat;
    background-size: 26px 28px;
}
.nav-link .link-tt {
    font-size: 12px;
}
.nav-link .icon-corner {
    position: absolute;
    width: 8px;
    height: 8px;
    border-radius: 4px;
    background: #f00;
    top: 4px;
    left: 50%;
    margin-left: 8px;
}

<think>好的,用户想了解Flexbox使用方法或者解决相关问题,我需要提供一个清晰的使用指南。首先,我得回忆一下Flexbox的基本概念和核心属性。根据之前的引用资料,Flexbox布局的关键在于容器和项目的设置,所以应该分步骤讲解。 首先,用户可能需要知道如何开启Flex布局,也就是设置display: flex或inline-flex。这部分在引用4中提到过,所以需要提到这一点,并可能作为第一步。接下来,容器的属性有很多,比如flex-direction、justify-content、align-items、flex-wrap等。每个属性都需要简要说明作用和可能的取值,例如flex-direction决定主轴方向,有row、column等选项,引用3和4都有相关的内容。 然后,项目的属性也很重要,比如flex-grow、flex-shrink、flex-basis,以及简写的flex属性。引用3详细说明了flex的缩写形式,这里需要解释清楚默认值和如何调整项目的伸缩比例。可能需要用例子来说明,比如如何让某个项目占据剩余空间。 接下来,用户可能对常见布局模式感兴趣,比如水平垂直居中、等高等。这时候可以结合justify-content和align-items来实现,引用1中的示例可能有用,但用户提供的引用中没有具体例子,可能需要自己构造。比如,水平居中用justify-content: center,垂直居中用align-items: center,这样就能轻松实现居中布局。 另外,响应式布局也是Flexbox的优势之一,比如使用flex-wrap: wrap让项目自动换行,这在移动端适配时很实用。这部分在引用2中提到了flex-wrap的使用,需要包含进去。 还需要注意兼容性问题,虽然现在大多数现代浏览器都支持Flexbox,但可能需要提到一些旧版本的浏览器需要前缀,如-webkit-flex等,引用2提到了兼容性,但用户可能更关注基本使用,所以可以简要带过。 最后,总结一下最佳实践,比如优先使用简写属性,合理选择主轴方向,利用弹性伸缩适应不同屏幕等。这部分可以结合引用中的建议,确保用户能正确应用Flexbox。 检查是否有遗漏的重要属性,比如order属性调整项目顺序,或者align-self覆盖容器对齐方式。这些可能对解决特定问题有帮助,应该包含在项目属性中。 现在需要组织这些内容,分步骤讲解,从容器到项目属性,再到常见布局示例,最后注意事项。确保结构清晰,语言简洁,符合用户需要的中文指南。同时,根据用户提供的引用资料,正确引用相关部分,比如在解释flex属性时引用3,开启Flex容器时引用4等,自然添加引用标识。 可能还需要生成相关问题,比如如何实现响应式布局,如何调整项目的顺序,或者Flexbox与Grid布局的区别。这些问题可以帮助用户进一步学习,但需要根据内容来设计相关问题。</think>### Flexbox使用指南 #### 一、Flexbox基础概念 Flexbox布局通过**弹性容器**(Flex Container)和**弹性项目**(Flex Items)实现灵活排版。容器通过设置`display: flex`开启布局模式,支持行或列方向的主轴排列[^4]。 ```css .container { display: flex; /* 或 inline-flex */ } ``` #### 二、容器属性详解 1. **主轴方向** `flex-direction`控制项目排列方向: - `row`(默认水平排列) - `column`(垂直排列) ```css .container { flex-direction: row-reverse; } ``` 2. **主轴对齐** `justify-content`定义主轴对齐方式: ```css .container { justify-content: space-between; /* 两端对齐 */ } ``` 3. **交叉轴对齐** `align-items`控制交叉轴对齐: ```css .container { align-items: center; } /* 垂直居中 */ ``` 4. **换行规则** `flex-wrap`实现响应式换行[^2]: ```css .container { flex-wrap: wrap; } ``` #### 三、项目属性配置 1. **伸缩比例** `flex-grow`定义项目扩展比例,`flex-shrink`控制收缩比例: ```css .item { flex: 1 0 200px; } /* 基础200px,可扩展不收缩 */ ``` 2. **自定义对齐** `align-self`覆盖容器对齐设置: ```css .item { align-self: flex-end; } ``` 3. **顺序控制** `order`调整项目显示顺序: ```css .item { order: 2; } /* 数字越小越靠前 */ ``` #### 四、经典布局实现 1. **水平垂直居中** ```css .container { display: flex; justify-content: center; align-items: center; } ``` 2. **等高三栏布局** ```css .container { align-items: stretch; } /* 默认值 */ ``` 3. **响应式导航栏** ```css .nav { display: flex; flex-wrap: wrap; gap: 1rem; } ``` #### 五、注意事项 1. **属性冲突** Flex项目设置`float`、`vertical-align`会失效[^2] 2. **兼容性处理** 旧版本浏览器需加前缀: ```css .container { display: -webkit-flex; display: flex; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值