likes
comments
collection
share

8项目通关前端/美团网布局项目06:完成banner左侧区域

作者站长头像
站长
· 阅读数 60

@效果预览

8项目通关前端/美团网布局项目06:完成banner左侧区域

据说在布局的世界里,得弹性盒者得天下!——Steve Jobsir

8项目通关前端/美团网布局项目06:完成banner左侧区域

@布局思路

  • 给菜单ul整体使用主轴为纵向的弹性盒,实现li的纵向排列;
  • 纵向(主轴)上平均分布子元素;
  • 在li内部将菜单项图标和箭头图标分别向左和向右浮动;
  • 给li内的文字span的text-align设置为left;

@HTML部分

<!-- banner -->
<div class="banner">

    <!-- 左侧菜单区 -->
    <div class="left-box">

        <!-- 标题 -->
        <h6 class="title">全部分类</h6>

        <!-- 菜单 -->
        <ul class="menu">

            <li>
                <!-- 左图标 -->
                <i class="orangered left iconfont icon-meituan"></i>

                <!-- 菜单项名称 -->
                <span>美食</span>

                <!-- 右箭头 -->
                <i class="right iconfont icon-xiangyou1"></i>
            </li>

            <li>
                <i class="orange left iconfont icon-meituan"></i>
                <span>外卖</span>
                <i class="right iconfont icon-xiangyou1"></i>
            </li>

            <li>
                <i class="yellow left iconfont icon-meituan"></i>
                <span>酒店HOT</span>
                <i class="right iconfont icon-xiangyou1"></i>
            </li>

            <li>
                <i class="green left iconfont icon-meituan"></i>
                <span>民宿</span>
                <i class="right iconfont icon-xiangyou1"></i>
            </li>

            <li>
                <i class="skyblue left iconfont icon-meituan"></i>
                <span>猫眼电影</span>
                <i class="right iconfont icon-xiangyou1"></i>
            </li>

            <li>
                <i class="aquamarine left iconfont icon-meituan"></i>
                <span>机票 / 火车票</span>
                <i class="right iconfont icon-xiangyou1"></i>
            </li>

            <li>
                <i class="purple left iconfont icon-meituan"></i>
                <span>休闲娱乐 / KTV</span>
                <i class="right iconfont icon-xiangyou1"></i>
            </li>

            <li>
                <i class="orangered left iconfont icon-meituan"></i>
                <span>生活服务</span>
                <i class="right iconfont icon-xiangyou1"></i>
            </li>

            <li>
                <i class="orange left iconfont icon-meituan"></i>
                <span>丽人 / 美发 / 医学美容</span>
                <i class="right iconfont icon-xiangyou1"></i>
            </li>

            <li>
                <i class="yellow left iconfont icon-meituan"></i>
                <span>结婚 / 婚纱摄影 / 婚宴</span>
                <i class="right iconfont icon-xiangyou1"></i>
            </li>

            <li>
                <i class="green left iconfont icon-meituan"></i>
                <span>亲子 / 儿童乐园 / 幼教</span>
                <i class="right iconfont icon-xiangyou1"></i>
            </li>

            <li>
                <i class="skyblue left iconfont icon-meituan"></i>
                <span>运动健身 / 健身中心</span>
                <i class="right iconfont icon-xiangyou1"></i>
            </li>

            <li>
                <i class="aquamarine left iconfont icon-meituan"></i>
                <span>家装 / 建材 / 家居</span>
                <i class="right iconfont icon-xiangyou1"></i>
            </li>

            <li>
                <i class="purple left iconfont icon-meituan"></i>
                <span>学习培训 / 音乐培训</span>
                <i class="right iconfont icon-xiangyou1"></i>
            </li>

            <li>
                <i class="orangered left iconfont icon-meituan"></i>
                <span>医疗健康 / 宠物 / 爱车</span>
                <i class="right iconfont icon-xiangyou1"></i>
            </li>

            <li>
                <i class="orange left iconfont icon-meituan"></i>
                <span>酒吧 / 密室逃脱</span>
                <i class="right iconfont icon-xiangyou1"></i>
            </li>
        </ul>
    </div>

    <!-- 向右侧浮动的盒子 -->
    ...

</div>

@样式部分

  • 主要用到纵向弹性盒 + 主轴方向均匀分布,其余都是细节;
/* 左侧菜单盒子 */
.left-box {

    /* 根据设计效果图设置宽高 */
    width: 230px;
    height: 478px;
    background-color: white;

    // 怪异盒模型令宽高包含内边距
    box-sizing: border-box;

    // 浅灰色边框
    border: 1px solid #eee;

    // 后代元素的文字都默认左对齐
    text-align: left;

    /* 定位到banner最左侧 */
    position: absolute;
    left: 0;

    // 向上突破父元素上沿
    top: -51px;

    /* 标题盒子 */
    &>.title {
        font-size: 16px;
        padding-left: 10px;

        /* 单行文字垂直居中 */
        height: 49px;
        line-height: 49px;
    }

    /* 竖排菜单 */
    &>.menu {

        /* 设计图实测高度(怪异盒模型以使宽高包含内边距) */
        height: 427px;
        box-sizing: border-box;

        // 底部留一点内边距
        padding-bottom: 10px;

        /* 纵向弹性盒 */
        display: flex;
        flex-direction: column;

        // 所有li垂直均匀分布
        justify-content: space-around;

        /* 菜单项 */
        &>li {

            // 文字垂直居中
            line-height: 25px;
            padding: 0 10px 0 10px;

            /* 左侧图标略大 */
            &>i:first-child {
                font-size: 18px;
            }

            /* 设置文字样式 */
            &>span {
                padding-left: 16px;
                font-size: 13px;
                color: #666;
            }

            /* 右侧箭头图标略小 */
            &>i:last-child {
                font-size: 10px;
                color: #ccc;
            }
        }

        /* 菜单项被滑过时背景高亮 + 文字高亮 */
        &>li:hover {
            background-color: #fef8d1;

            &>span {
                color: #333;
                font-weight: bold;
            }
        }
    }
}

@知识链接

猛戳此处获取老师源码! 更高处见!

8项目通关前端/美团网布局项目06:完成banner左侧区域

转载自:https://juejin.cn/post/7208849836186681400
评论
请登录