侧边导航栏练习(前端)

仵老大代码gitee链接:https://gitee.com/wulaoda/html_css_js_demo

实现的效果

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

代码

在写的过程中,有几个需要注意的,
1、主要是使用了flex布局,这种布局里面的主轴排列方式,来控制图标和菜单文字水平排列和垂直排列,以及它们的居中。
2、宽度(100%)应该要给到a标签,让整个菜单区域都能点击。
3、收缩的过程中,发现文字在宽度变窄的过程中,它会换行,非常突兀,所以要加个nowrap不让文字换行,
4、使用transition过渡,并且在勾选复选框时,使用同时修改它们的宽度。
5、还有一点也是最眼前一亮的,原来复选框和css选择器,还可以这样用的?!!!

index2.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <link rel="stylesheet" href="./test.css">
</head>

<body>

    <div class="navbar">
        <input checked type="checkbox" id="cb">
        <label for="cb">
            <i class="fa fa-bars"></i>
        </label>
        <ul>
            <li>
                <a href="#">
                    <img src="./images/1.png" alt="">
                    <span>您好,管理员</span>
                </a>
            </li>
            <li>
                <a href="#">
                    <i class="fa fa-home"></i>
                    <span>主页</span>
                </a>
            </li>
            <li>
                <a href="#">
                    <i class="fa fa-gift"></i>
                    <span>礼物中心</span>
                </a>
            </li>
            <li>
                <a href="#">
                    <i class="fa fa-heartbeat"></i>
                    <span>健康状况</span>
                </a>
            </li>
            <li>
                <a href="#">
                    <i class="fa fa-paper-plane"></i>
                    <span>消息中心</span>
                </a>
            </li>
            <li>
                <a href="#">
                    <i class="fa fa-shield"></i>
                    <span>安全设置</span>
                </a>
            </li>
            <li>
                <a href="#">
                    <i class="fa fa-area-chart "></i>
                    <span>统计图表</span>
                </a>
            </li>
        </ul>
    </div>
</body>

</html>

test.css

* {
    margin: 0;
    padding: 0;
    list-style: none;
    text-decoration: none;
}
html,body,.navbar {
    height: 100%;
}

body {
    background-color: #fff;
    overflow: hidden;
}
.navbar input[type=checkbox]{
    display: none;
}
.navbar > label {
    background-color: rgb(237, 237, 237);
    width: 100%;
    display: block;
    position: absolute;
    top: 0;
    left: 70px;
    height: 50px;
    line-height: 50px;
    padding-left: 15px;
    font-size: 20px;
    transition: all 0.5s;
}

.navbar > label i {
    cursor: pointer;
}

.navbar ul {
    background-color: rgb(42, 63, 84);
    width: 70px;
    height: 100%;
    transition: all 0.5s;
    overflow: hidden;
}

.navbar ul li {
    height: 70px;
}

.navbar ul li:first-child span {
    display: none;
}

.navbar ul li:first-child a img {
    width: 50px;
    height: 50px;
    border-radius: 50%;
}

.navbar ul li a {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    color: rgb(209,209,209);
    height: 100%;
    width: 100%;
}

.navbar ul li a:hover {
    background-color: rgb(53, 73, 93);
    color: #fff;
} 

.navbar ul li a i {
    font-size: 22px;
}

.navbar ul li a span {
    font-size: 13px;
    white-space: nowrap;
}

.navbar input[type=checkbox]:checked + label {
    left: 200px;
}

.navbar input[type=checkbox]:checked ~ ul {
    width: 200px;
}

.navbar input[type=checkbox]:checked ~ ul li a {
    flex-direction: row;
    justify-content: flex-start;
    align-items: center;
}

.navbar input[type=checkbox]:checked ~ ul li i {
    margin-left: 15px;
    margin-right: 15px;
    font-size:18px
}

.navbar input[type=checkbox]:checked ~ ul li span {
    font-size: 15px;
}

.navbar input[type=checkbox]:checked ~ ul li:first-child img {
    margin-left: 10px;
    margin-right: 10px;
}

.navbar input[type=checkbox]:checked ~ ul li:first-child span {
    display: block;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值