固定顶部导航栏和左侧边栏滚动条为右下方的一类布局分析

在管理界面或者一些需要固定显示信息的界面,经常遇到这样的布局:顶部导航栏固定不动,左侧有一个侧边栏用来显示详细信息,右下侧为主要内容所在区域。如下图所示:

这是需要达到的目标效果。其中Header和SideNav部分之间用固定定位实现就可以了,但是MainContent部分右侧的scroll bar确实不太好处理,主要存在两个问题:

- 按照普通的方式基本都会铺满右侧整个可视区域,这使得顶部的Header的右侧有了一个滚动条区域,这对于顶部固定这个效果反差太明显。

- 第二个问题是,如果Main Content内容不足一格屏幕大小,那么最好要右侧内容撑满一个屏幕比较好。

绝对定位实现

撑开整个屏幕

为了撑开整个屏幕,需要设置html标签的高度为100%,然后挨个设置body和Main Content的高度和宽度,同时整个布局以body为基准,但是,也可以使用绝对定位撑开页面。

使用的html如下:

    <body>
        <header>
            header
        </header>
        <aside>Side Nav</aside>
        <section id="main">
            <div id="con">
                <div style="height:800px">content 1!</div>
                <div style="height:200px">content 2!</div>
                <div style="height:200px">content 3!</div>
            </div>
        </section>
    </body>

Header和Side Nav如下:

*{padding:0;margin:0;border:none;}
body{
    font-size:14px;
    font-family:"微软雅黑";
}
header{
    width:100%;
    height:80px;
    position:absolute;
    top:0;
    left:0;
    right:0;
    background-color:#123;
    color:#fff;
}
aside{
    width:300px;
    position:absolute;
    top:80px;
    left:0;
    bottom:0;
}

MainContent也是需要用一层来撑开,但是使用的是绝对定位:

#main{
    position: absolute;
    left: 300px;
    top: 80px;
    right: 0;
    bottom: 0;
    overflow: hidden;
}

最后的内层内容层,也需要设置height:100%和overflow:

#con{
    height:100%;
    overflow:auto;

    /*或者
    *overflow-x:hidden;
    *overflow-y:scroll;
    */

    background-color:#789;
    color:#fff;
}

这种方式是douyutv.com的页面布局使用的方式,本人也是在看视频的时候无意注意到这个点 douyutv.com

“怪异”盒模型border-box实现

box-sizing属性

css的box-sizing属性用来设置或检索对象的盒模型组成模式。取值有如下两个:

- content-box

padding和border不被包含在定义的width和height之内。对象的实际宽度等于设置的width值和border、padding之和,即 ( Element width = width + border + padding )

此属性表现为标准模式下的盒模型。

- border-box

padding和border被包含在定义的width和height之内。对象的实际宽度就等于设置的width值,即使定义有border和padding也不会改变对象的实际宽度,即 ( Element width = width )

此属性表现为“怪异”模式下的盒模型。

布局实现

使用的html如下:

    <body>
        <header>
            header
        </header>
        <aside>Side Nav</aside>
        <section id="main">
            <div id="con">
                <div style="height:800px">content 1!</div>
                <div style="height:200px">content 2!</div>
                <div style="height:200px">content 3!</div>
            </div>
        </section>
    </body>

html标签和body标签都需要设置高度用来撑开浏览器界面:

    *{padding:0;margin:0;border:none;}
    html{
        height:100%;
        width:100%;
    }
    body{
        height:100%;
        width:100%;
        font-size:14px;
        font-family:"微软雅黑";
    }

Header和Side Nav使用fixed定位方式固定:

header{
    width:100%;
    height:80px;
    position:fixed;
    top:0;
    left:0;
    right:0;
    background-color:#123;
    color:#fff;
}
aside{
    width:300px;
    position:fixed;
    top:80px;
    left:0;
    bottom:0;
}

Main Content部分首先有一个section层继承body的高度和宽度撑开整个可视页面,需要使用width:100%和height:100%,然后就需要使用padding将Header和Side Nav部分空出。因此就需要使用“怪异”模式下的盒模型,否则就会在右侧出现滚动条。

#main{
    width:100%;
    height:100%;
    padding:80px 0 0 300px;
    box-sizing:border-box;
}

这里height设置为100%之后就是页面可视区域的高度,超过之后就会出现滚动条。因此,这个#main层只是撑开可视区域的作用,内容必须在其子元素下#con进行设置。

#con{
    height:100%;
    overflow:auto;
    background-color:#789;
    color:#fff;
}

必须要注意的是,这里设置#con元素的高度之后,继承的是父元素#main的高度,也就是可视区域除去padding-top的80像素之后的高度,超过这个高度之后要设置overflow为auto显示滚动条才行:

如果不设置overflow,那么这个元素会继承父元素一直到body元素,然后就会出现右侧出现延伸到顶部的滚动条。如下图:

当然,也可以设置父元素overflow为auto,然后设置其overflow-y为为auto,禁用overflow-x。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-18 23:35:16

固定顶部导航栏和左侧边栏滚动条为右下方的一类布局分析的相关文章

Android之仿今日头条顶部导航栏效果

随着时间的推移现在的软件要求显示的内容越来越多,所以要在小的屏幕上能够更好的显示更多的内容,首先我们会想到底部菜单栏,但是有时候像今日头条新闻客户端要显示的内容太多,而且又想在主界面全部显示出来,所以有加了顶部导航栏. 今日头条顶部导航栏区域的主要部分是一个导航菜单.导航菜单是一组标签的集合,在新闻客户端中,每个标签标示一个新闻类别,对应下面ViewPager控件的一个分页面.当用户在ViewPager区域滑动页面时,对应的导航菜单标签也会相应的被选中,选中的标签通过一个矩形红框高亮显示,红框背

使用PagerSlidingTabStrip实现顶部导航栏

在开发中,我们有时会遇到顶部导航栏滑动切换页面的设计,如网易新闻.实现的方式有很多种,今天我们使用PagerSlidingTabStrip配合ViewPager实现顶部导航栏. 效果图如下. PagerSlidingTabStrip是github上的一个开源项目,项目地址如下.https://github.com/astuetz/PagerSlidingTabStrip (一)PagerSlidingTabStrip的使用 在使用之前,我们先来看一下PagerSlidingTabStrip中的自

微信小程序--仿京东UI样式顶部导航栏

我们先来看看京东的效果 分析 上端导航栏可以放置多个分类,可滑动 点击导航栏最右端按钮可以查看所有分类,同时背景模糊 内容部分右拉跳转到另外的分类 点击分类时导航栏的滑动部分自动滑动到合适的位置 我的实现 代码展示: js /** * categoryView.js - 分类页面 */ var fakeData = require('../../common/fakeData.js') Page( { data: { categories: ['全部'], currentTab: 0, scro

android实现底部导航栏和顶部导航栏(相当于网页上的一级菜单和二级菜单)

直接采用图片进行导航,实现activity跳转,虽然功能实现了,但是界面实在太丑,所以采用顶部导航栏和底部导航栏进行控制,在这个学习的过程中,发现了很多好的资料,不仅对控件进行了详细的讲解和演示,而且还附带源码以供下载.再次记录,供大家参考学习: 1.http://www.linuxidc.com/Linux/2012-07/66327.htm 2.http://blog.csdn.net/yalinfendou/article/details/44727299 3.http://blog.cs

天书笔记:HTML+CSS实现顶部导航栏

此笔记纯属本人脑残笔记,阅读困难不理解属正常现象,初学者尽量不要阅读,否则轻则口吐白沫重则走火入魔,切记切记 先晒效果图: 效果要求类似于b站的顶部导航(..原谅我老是拿b站做例子:) ) 然后是代码 下面逐条分析这一堆东西 HTML部分主要是这个: 1 <div class="topbar"> 2 <div class="topbody"> 3 <a class="title" href=""&

android 自定义组合控件 顶部导航栏

在软件开发过程中,经常见到,就是APP 的标题栏样式几乎都是一样的,只是文字不同而已,两边图标不同.为了减少重复代码,提高效率, 方便大家使用,我们把标题栏通过组合的方式定义成一个控件. 例下图: 点击: 如不设置左边,右边图片: 下面说一下具体实现步骤: 步骤一: 导航栏包括:* 返回按钮* 标题* 右侧按钮(功能不确定) 首先是布局文件,如下: </pre><p></p><pre name="code" class="java&q

顶部导航栏

1. 创建res/menu/main.xml文件 <!-- 菜单栏的设置 --> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" > <!-- 默认的 --> <item android:id="@+id/action_settin

滚动页面, 顶部导航栏固定效果

(function(){ $(document).scroll(function(){ var scrTop = $(document).scrollTop(); if(scrTop>70){ $(".m-top-notice").addClass("fixed"); } else if(scrTop <= 70){ $(".m-top-notice").removeClass("fixed"); } })})()

[学习]京东首页顶部导航栏hover

这里要说的内容就是这个小尖角: 开始只看到网页截图的时候我一直认为是一个">"做的hover效果. 这样的话就需要先把">"先旋转90度,再做hover的效果. 后来打开了原网页看了源代码,发现他们是这么做的: 首先画了一个15x7的div,overflow:hidden;然后里面写了一个"◇"font-size:15px;定位,上移7px; (这样我们看到的效果就是">"旋转了90度的样子) 再加上hove