为了账号安全,请及时绑定邮箱和手机立即绑定

2018-05-22 仿简书的响应式导航栏

标签:
Html/CSS

1.查看简书的响应式

使用Chorme浏览器打开https://www.jianshu.com,然后F12(Fn+F12),查看网页样式
1.1 使用iPad时:

webp

iPad.png


1.2 使用iPhone 6/7/8时:

webp

iPhone.png


事实上,在还未使用F5(Fn+F5)进行页面刷新前,导航栏是实现了很好的响应式设计,所以接下来就仿照简书的导航栏来设计我们自己的响应式导航栏。

2.效果展示

下拉选择框是在点击右上方按钮的情况下会显示出来。


webp

效果展示.png

3.代码分析

3.1 HTML代码:三个区域(Logo区,导航区,按钮区)

<!DOCTYPE html><html><head>
    <meta charset="utf-8">
    <title>响应式导航栏</title>
    <link rel="stylesheet" type="text/css" href="styles/index.css"></script></head><body>
    <header>
        <div class="hd_con">
            <!--Logo区域-->
            <div class="hd_logo">
                <h1>简书</h1>
            </div>

            <!--导航区域-->
            <ul class="hd_list">
                <li><a href="#">发现</a></li>
                <li><a href="#">关注</a></li>
                <li><a href="#">消息</a></li>
                <li><a href="#">我的</a></li>
            </ul>

            <!--按钮区域-->
            <div class="hd_btn">
                <img class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="images/icon_btn.png">
            </div>
        </div>
    </header></body></html>

3.2 CSS代码:控制页面的正常显示,按钮区在一开始时隐藏

*{    margin: 0;    padding:0;
}a{    text-decoration: none;    color: #000;
}a:hover{    color: #ed705b;
}ul{    list-style-type: none;
}header{    width: 100%;    height: 60px;    background-color: #fff;    position: fixed;    top: 0;    left: 0;    border-bottom: 1px solid #e8e8e8;
}.hd_con{    width: 1200px;    margin: 0 auto;
}.hd_con .hd_logo{    float: left;    line-height: 60px;    margin-left: 10px;
}.hd_con .hd_logo h1{    font-size: 20px;    color: #ed705b;
}.hd_con .hd_list{    float: right;
}.hd_con .hd_list li{    float: left;    margin-right: 20px;    line-height: 60px;
}.hd_btn{    display: none;
}

3.3 设置ViewPort

<meta name="viewport" content="width=devie-width,height=device-height,initial-scale=1.0,
maximum-scale=1.0,user-scalable=no">

3.4 媒体查询:按照Bootstrap设定的端点进行设置
第一个区域:992px-1199px
因为屏幕的宽度变短,所以当页面宽度缩小在该区域时,可以对页面导航内容区域的长度缩短。

@media only screen and (max-width: 1199px)
{    .hd_con{        width: 900px;
    }
}

第二个区域:768px-991px
因为此时页面的长度已经较短,但是导航栏的内容区域的内容都能够正常显示,所以为了内容适配屏幕的宽度,设置为百分比的形式更为恰当。

@media only screen and (max-width: 991px)
{    .hd_con{        width: 100%;
    }
}

第三个区域:0-767px
该区域的内容,因为缩放至一定的宽度,导航列表就不能够正常的显示了,所以就变成下拉菜单的形式,所以要设置下拉菜单的样式,为了提示下拉菜单的存在,事先设置的导航按钮就要由隐藏状态转化为显示状态。

@media only screen and (max-width: 767px)
{    .hd_btn{        display: block;        position: absolute;        right:10px;        top:10px;        cursor: pointer;
    }    .hd_con .hd_list{        position: absolute;        top:60px;        left: 0;        width: 100%;        background-color: #fff;        display: none;        border-bottom: 1px solid #e8e8e8;
    }    .hd_con .hd_list li{        float: none;        text-align: center;        border-top: 1px solid #e8e8e8;        margin-right: 0px;
    }
}

4.监听事件

使用JQUERY库,首先引入JQUERY库

<script type="text/javascript" class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="scripts/jquery-1.11.3.min.js">

4.1 页面点击事件

$(function(){
    $(".hd_btn").click(function(){
        $(".hd_list").slideToggle();
    })
})

4.2 浏览器大小变化事件,检测到屏幕的宽度小于767时,让下拉菜单显示,提示下拉菜单的存在。

$(window).resize(function(){    if($(this).width() < 767)
    {
        $(".hd_con .hd_list").show();
    }
})



作者:瑾瑜爱上猫
链接:https://www.jianshu.com/p/212bdef9540e


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消