使用Boostrap V4,左侧菜单栏可缩进,并根据屏幕宽度自适应大小。[通俗易懂]

使用Boostrap V4,左侧菜单栏可缩进,并根据屏幕宽度自适应大小。[通俗易懂]使用Boostrap V4,左侧菜单栏可缩进,并根据屏幕宽度自适应大小。

大家好,又见面了,我是你们的朋友全栈君。

这个记录算是这段时间的一个总结吧。折腾了页面样式果然让人反复纠结。

思路概要:

  1. 使用.body-small,代表屏幕处于小分辨率下。用JQ的resize()方法监听。并在<body>处增加或删除。
  2. 使用.mini-sidebar,代表侧边栏处于收缩状态下。( .body-small 和 .mini-sidebar同时存在时,代表小分辨率下菜单收缩)
  3. 开始干活,根据<body>标签的class类,编写每个状态下对应的CSS样式。

HTML:

<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="/static/vendors/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="/static/vendors/font-awesome/css/font-awesome.css" rel="stylesheet">
    <link href="/static/vendors/animate/animate.css" rel="stylesheet">
    <link href="/static/vendors/metismenu/dist/metisMenu.min.css" rel="stylesheet">
    <link href="/static/assets/home/test_css.css" rel="stylesheet">
    <link rel="shortcut icon" type="image/x-icon" href="//fanyi.bdstatic.com/static/translation/img/favicon/favicon_d87cd2a.ico">
</head>
<body>
    <div class="container-fluid p-0 m-0 h-100">
        <nav id="home_sidebar" class="">
            <div class="sidebar-wrapper">

            </div>
        </nav>
        <div id="home_body" class="">
            <div id="home_header" class=""><i class="fa fa-indent" id="sidebarToggle">侧边栏开关</i></div>
            <div id="home_content" class="">
                home_content
                <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
                <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
                <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
                home_content
            </div>
            <div id="home_footer" class="">home_footer</div>
        </div>
    </div>

    <script src="/static/vendors/jquery/dist/jquery.min.js"></script>
    <script src="/static/vendors/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
    <script src="/static/vendors/metismenu/dist/metisMenu.min.js"></script>
    <script src="/static/vendors/jquery-slimscroll/jquery.slimscroll.min.js"></script>
    <script src="/static/assets/home/test_js.js"></script>

</body>
</html>

JavaScript:

var test_html = function (){

    function BeautifyMenu() {
        /**
         * 侧边栏展开美化效果。
         * 展开菜单时,延迟显示侧边栏。
         * 否则侧边栏错位情况严重
         * */
        $('#home_sidebar>div').hide();
        setTimeout(
            function () {
                $('#home_sidebar>div').fadeIn(400);
            }, 100);
    }

    var initSidebarToggle = function () {
        /**
         * 侧边栏收缩切换器
         * */
        $("#sidebarToggle").click(function (e) {
            //动画效果 animate 有空再添加。
            e.preventDefault();
            $("body").toggleClass("mini-sidebar");
            BeautifyMenu();
        })
    };

    var initResizeWindows = function () {
        /**
         * 初始化页面样式
         * 注册resize监听,判断浏览器宽度,调整页面样式。
         * */
        $(window).resize(function () {
            if ($(window).width() < 769) {
                $('body').addClass('body-small mini-sidebar');
            } else {
                $('body').removeClass('body-small');
            }
        });
        $(window).resize();
    };

    return {
        init:function () {
            initSidebarToggle();
            initResizeWindows();
        }
    }
}();

$(document).ready(function () {
    test_html.init();

});


CSS:

html,body{margin:0;padding:0;height:100%}
body{font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;font-size:13px;background-color: #2f4050;color: #676a6c;overflow-x: hidden;}

/* 页面起始布局(宽屏时) */
#home_sidebar,#home_body,#home_header,#home_footer,#sidebar_menu>li.mm-active,.sidebar-header{ -webkit-transition: all 0.4s;-moz-transition: all 0.4s;-o-transition: all 0.4s;transition: all 0.4s;}
#home_header{width:100%;background-color: #f3f3f4;position:fixed;height: 50px;line-height: 50px;border-bottom:1px solid #e7eaec;}
#home_sidebar{width:220px;position:fixed;height:100%;overflow-x: hidden;}
#home_body{margin-left: 220px;height:100%}
#home_content{height:auto;padding-top:50px;padding-bottom:40px;background: #f3f3f4}
#home_footer{margin-top: -40px;background: #ffffff;height: 40px;line-height:40px;}

/* 宽屏时,当点击侧边栏缩进按钮后 */
body.mini-sidebar #home_body{margin-left:70px;}
body.mini-sidebar #home_sidebar{width:70px;}

/* 当浏览器变窄,并且菜单是关闭状态时(存在mini-sidebar时)*/
body.body-small.mini-sidebar #home_body{margin-left:0;}
body.body-small.mini-sidebar #home_sidebar{width:0;}

转载于:https://my.oschina.net/asktao/blog/3002320

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107053.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Gradle 入门教程(一):Gradle是什么[通俗易懂]

    Gradle 入门教程(一):Gradle是什么[通俗易懂]这是一篇Gradle的入门教程一、Gradle是什么1.1构建工具要解释Gradle是什么,首先要搞清楚一个名词——构建工具(BuildTool)。构建工具,顾名思义就是用于构建(Build)的工具,构建包括编译(Compile)、连接(Link)、将代码打包成可用或可执行形式等等。如果不使用构建工具,那么对于开发者而言,下载依赖、将源文件编译成二进制代码、打包等工作都需要一步步地…

    2022年6月28日
    31
  • 单射双射与满射

    单射双射与满射单射(injection):每一个x都有唯一的y与之对应;满射(surjection):每一个y都必有至少一个x与之对应;双射(又叫一一对应,bijection):每一个x都有y与之对应,每一个y都有x与之对应。把x比作萝卜,y比作坑:单射就是一个萝卜一个坑,有的坑有可能没萝卜;满射就是所有坑都有萝卜,有的坑可能有不止一个萝卜;双射就是严格的一个萝卜一个坑,一个坑一个萝卜,所有萝卜都有坑,所有坑都有萝卜。…

    2022年6月6日
    38
  • wxpython使用简介_wxPython 教程(一) 简介[通俗易懂]

    wxpython使用简介_wxPython 教程(一) 简介[通俗易懂]应用(application)是用来执行特定任务或一组任务的电脑程序。网页浏览器、媒体播放器、文字处理程序都是典型的应用样例。不同应用可以划分至四种不同的应用领域:在线商店应用、wiki、微博等都是受欢迎的网页(web)应用,我们通过网页浏览器可以访问它们。桌面(Desktop)应用的例子则包括Maya、Opera、OpenOffice或Winamp。企业级(Enterprise)应用则指复…

    2022年5月21日
    26
  • 微信公众号网页分享功能开发

    微信公众号网页分享功能开发现在每天都可以看到很多微信分享的链接上面有网站或者商家的自定义的分享标题,和分享链接的描述及分享出去的图像,例如下面的分享出去的链接:              上面这个是微信的js-SDK页面分享给微信好友在聊天列表中显示的视觉效果。   微信JS-SDKDemo:这个是微信网页分享出去的标题。   微信JS-SDK,帮助第三方为用户提供更优质的移动web服务:这个…

    2022年6月4日
    120
  • 关于VS中的sln文件[通俗易懂]

    关于VS中的sln文件[通俗易懂]sln文件我们在应用VC6以前,发现的是dsp和.dsw文件,打开dsw文件可以打开整个工程VS.net2002以后是.vcproj和.sln.sln对应以前的.dsw.vcproj对应以前的.dspvcproj是工程文件,sln是解决方案文件。一个解决方案里面可以包含多个工程。打开vcproj文件编译不了可能是因为这个工程里面用到了同一个解决方案中其它工程的东西。Vi

    2022年4月30日
    65
  • 大前端开发:前端如何开发 APP[通俗易懂]

    大前端开发:前端如何开发 APP[通俗易懂]做为一个前端开发人员,有时候除去传统的前端开发还需要进行其他开发,比如公众号开发,小程序开发,APP开发。本场Chat将带你从0开始,基于APICloud进行APP开发,你只需要会前端就可以。本场Chat主要内容为下:什么是APICloud?开发工具的了解;提供的前端框架;相关API;控制台;开始你的APP开发。本场Chat将会用一个新的案例从0来…

    2022年5月3日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号