如何让DIV固定在页面而不随着滚动条随意滚动

如题所述

滚动条是容器所固有的,不管是外面的滚动条,还是里面的滚动条。只要让固定的div和body或者html容器脱离关系,即可实现DIV固定在页面而不随着滚动条随意滚动。

  ① html,body:将默认出现的滚动条,完全地隐藏,这样不管什么内容都不会出现了。

  ② .virtual_body:写一个假的body,设置它的长宽为100%,这样利用可视的浏览器窗体显示所有的内容,并垂直允许出现滚动条。

  ③ .fixed_div:用它进行绝对值进行定位,因为在这个容器下,该页面100%的被假冒body覆盖了,滚动条自然也显示不出来了。


  示例代码如下:

<html>

<head>

    <title></title>

    <style type="text/css">

        html,body {

            overflow:hidden;

            margin:0px;

            width:100%;

            height:100%;

        }

        .virtual_body {

            width:100%;

            height:100%;

            overflow-y:scroll;

            overflow-x:auto;

        }

        .fixed_div {

            position:absolute;

            z-index:2008;

            bottom:20px;

            left:40px;

            width:800px;

            height:40px;

            border:1px solid red;

            background:#e5e5e5;

        }

    </style>

</head>

<body>

<div class="fixed_div">I am still here!</div>

<div class="virtual_body">

    <div style="height:888px;">

        I am content !

    </div>

</div>

</body>

</html>
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-05-31
首先,我们将目光投向了CSS规范,我想很多人和我一样很快就想到了position属性,说到定位,我们很容易想到这个属性。这个属性一共有四个 选项:static、relative、absolute、fixed。很高兴,我们在阅读了相关的注释后,我们大概能看到fixed是比较符合我们的需 求的:
fixed:
位置被设置为 fixed 的元素,可定位于相对于浏览器窗口的指定坐标。此元素的位置可通过 "left"、"top"、"right" 以及"bottom" 属性来规定。不论窗口滚动与否,元素都会留在那个位置。工作于 IE7(strict 模式)。
于是我们很快就有了以下的代码,不过很遗憾,IE中并不能通过严格的测试,但是FireFox中却可以通过测试!
<html>
<head>
<!--http://volnet.cnblogs.com-->;
<title>Only fit FireFox! :(</title>
<!--Some thing about the fixed style!-->
<style type="text/css">
.fixed_div{
position:fixed;
left:200px;
bottom:20px;
width:400px;
}
</style>
</head>
<body>
<div class="fixed_div" style="border:1px solid #200888;">content, I'm content</div>
<div style="height:888px;"></div>
</body>
</html>
不管上面上面说的IE7的strict模式,很显然,除了IE7,我们的挑战还有包括IE6在内的一大堆未知的因素。很显然,虽然这个方法通过了FireFox,但我们还是宣告失败了。
难道我们只能使用JavaScript让这一切继续“卡”下去么?(我指的是用JavaScript的时候效果很卡)
当然不行,我们的症结究竟在哪?我们该如何去解除它呢?带着这样的郁闷,我们需要开始新的探险。
HTML究竟是啥?
这个问题换在别的地方问,您可能要搬出一大堆的文档来告诉我HTML的定义,但这里我并不需要那么完整的答案。我们知道HTML是由一大堆 的<tag></tag>组成的,而这一大堆的<tag></tag>组合在一起,它们的结构就像一棵 树,是的,HTML的代码就是被解释为了一棵树被浏览器所认识。它有一个根,那就是<html></html>节(root), 在根节点下常见的节点中,我们通常能见到<head></head>和<body></body>两个 节点,它们之下又有……
现在回顾一下我们的问题,我们的问题是我们滚动滚动条的时候我们希望其中的一个指定的div不会跟着滚动条滚动。
那么下面让我们来回答另一个问题,啥是滚动条?
滚动条,顾名思义,就是可以滚动的条(ScrollBar)(废话)。准确地说,滚动条通常是我们在页面的内容超过了浏览器显示框的范围的时候,为了能够让有限的空间展示无限的内容所作出的一个妥协的元素,使用它可以让我们查看当前页面内容之外部分的内容。
说到这里您估计都还很清楚,但既然我说滚动条也是一个元素,那么它是不是也在我们的HTML中呢?又或者它是浏览器的固有的一部分?
如果您觉得它是HTML中的一部分,那么您就对了,因为它是依附容器而存在的,而默认产生滚动条的容器 是<body></body>或者<html></html>节,它并不是浏览器固有的一部分,浏览器 只是默认完整展示了一整个html文档,并不知道它中间的内容究竟是否需要滚动条的支持。
那么让我们回顾上面的那几行代码吧,假设fixed对您当前(失败)的浏览器无效的话,那么我们来看看它们的结构,外面是html标签,向内是 body标签,再向内则是div标签,div标签很明显是它们的一部分,这样假设我们的div标签所设置的定位属性无论如何(四个可能的属性皆没起到什么 作用)改变不了自身显示状况。我们能否更换一个思路呢?
刚才我说了,滚动条是容器所固有的,不管是外面那个滚动条,还是里面那个滚动条。那么我能否让这个需要固定的div和那个body或者html容器脱离关系呢?
看到滚动条的控制可以通过CSS的overflow的几个属性来控制,想必大家都不陌生了。(陌生的朋友点击相关链接即可进入查看)
那么我是否可以自己设置两个完全隔离的div来模拟这种场景呢?(虽说是模拟,但是效果一模一样噢~)
<html>
<head>
<title></title>
<style type="text/css">
html,body {
overflow:hidden;
margin:0px;
width:100%;
height:100%;
}
.virtual_body {
width:100%;
height:100%;
overflow-y:scroll;
overflow-x:auto;
}
.fixed_div {
position:absolute;
z-index:2008;
bottom:20px;
left:40px;
width:800px;
height:40px;
border:1px solid red;
background:#e5e5e5;
}
</style>
</head>
<body>
<div class="fixed_div">I am still here!</div>
<div class="virtual_body">
<div style="height:888px;">
I am content !
</div>
</div>
</body>
</html>
分析:
html,body:将默认可能会随机出现的滚动条,完全地隐藏了,这样不管您放了啥内容,它们都不会出来了。
.virtual_body:顾名思义,就是一个假的body了,它被设置为长宽都为100%的,意思就是它利用了所有可视的浏览器窗体显示所有的内容,并垂直允许出现滚动条。
.fixed_div:这下它可以利用绝对值进行定位了,因为在这个场景下,这个页面100%地被那个假冒的body给独霸了,而滚动条反正也出不来,您就可以自认为是在某个点蹲坑了,绝对安全。本回答被网友采纳
第2个回答  2016-06-03
可以给一个定位的样式:
方法如下:
<html>
<head>
<!--http://volnet.cnblogs.com-->
<title>Only fit FireFox! :(</title>
<!--Some thing about the fixed style!-->
<style type="text/css">
.fixed_div{
position:fixed;
left:200px;
bottom:20px;
width:400px;
}
</style>
</head>
<body>
<div class="fixed_div" style="border:1px solid #200888;">content, I'm content</div>
<div style="height:888px;"></div>
</body>
</html>

<html>
<head>
<title></title>
<style type="text/css">
html,body {
overflow:hidden;
margin:0px;
width:100%;
height:100%;
}
.virtual_body {
width:100%;
height:100%;
overflow-y:scroll;
overflow-x:auto;
}
.fixed_div {
position:absolute;
z-index:2008;
bottom:20px;
left:40px;
width:800px;
height:40px;
border:1px solid red;
background:#e5e5e5;
}
</style>
</head>
<body>
<div class="fixed_div">I am still here!</div>
<div class="virtual_body">
<div style="height:888px;">
I am content !
</div>
</div>
</body>
</html>

如何让DIV固定在页面而不随着滚动条随意滚动
1、首先我们新建一个web项目,主要用到了html文件和css文件。2、然后在html文件中,有图中的代码,引入css文件和设置一个div标签。3、然后这里是css样式文件,主要看图中红框中内容,使用fixed定位方式。4、然后运行项目后,可以看到div在右下角。5、然后滑动滚动条,即使到达底部后,div的位置依旧没有...

如何让div滚动时页面不跟着滚动?
滚动条是容器所固有的,不管是外面的滚动条,还是里面的滚动条,只要让固定的div和body或者html容器脱离关系,即可实现DIV固定在页面而不随着滚动条随意滚动。1.html,body,将默认出现的滚动条,完全地隐藏,这样不管什么内容都不会出现了。2.virtual_body,写一个假的body,设置它的长宽为100%,这样利...

怎么让DIV固定在页面的某个位置而不随着滚动条随意滚动?
1、html,body:将默认可能会随机出现的滚动条,完全地隐藏了,这样不管您放了啥内容,它们都不会出来了。2、.virtual_body:顾名思义,就是一个假的body了,它被设置为长宽都为100%的,意思就是它利用了所有可视的浏览器窗体显示所有的内容,并垂直允许出现滚动条。3、.fixed_div:这下它可以利用...

js或者jquery实现div不随滚动条滚动
试试这样的吧<body><div id="box" style="height:2000px;width:3000px;"><div id="div1" style="width:500px;height:500px;background:green;position:absolute;"> <div id="div2" style="width:200px;height:100px;background:lightblue;position:fixed;">里面的div<\/div><\/div><\/div...

如何让DIV固定在页面而不随着滚动条随意滚动
你可以对div设置css属性,相对于页面定位:position:fixed;position属性再搭配top、bottom、right、left确定div位于页面的具体位置,比如:top:10px; right:20px;另外,因为div是相对与页面定位,在滚动条滚动时,其他的html元素可能因为在它之上而将它遮挡上(如果你的这个div先写的,后又写很多div什么...

如何让DIV固定在页面的某个位置而不随着滚动条随意滚动
设置div为固定位置。如:1 <div style="width:100px; height:100px; border:1px solid red; position:fixed; left:300px; top:300px;"><\/div> 这样就会固定在left:300px;top:300px;的位置,不会随着滚动条的滚动而滚动

如何让DIV固定在页面而不随着滚动条随意滚动
首先建一个DIV,起个id叫nav,然后把下面这段代码写进style标签里,里面具体的宽高,位置还有背景颜色你自己改一下就行 nav { width: 150px; height: 300px; position: fixed; right: 0; top: 20%; background-color: #f7f7f7;} ...

如何让DIV固定在页面而不随着滚动条随意滚动
添加css style="position:fixed"

网页设计如何设置网页部分内容不随着滚动条而移动移动?
在IE6中是不能直接使用 position:fixed; 。你需要一些 CSS Hack 来解决它 相同的还是让 <div id="top">...<\/div> 元素固定在浏览器的底部和距离右边的20个像素,这次的代码是:#top{ position:fixed;bottom:0;right:20px;_position:absolute;_top:expression(eval(document.documentElement.scroll...

我有一个大div,里面有很多个小div,大div设置了滚动条,我想第一个小div...
设置滚动条的话只要是div内部的内容都会随着滚动条而移动;所以你想内容不受影响,那么就让它不要在div里面不就行了?比如设置绝对定位让div移动到位置,又或者是这个小div本来是与大div是同级的,你设置负值的外边距margin-bottom:-30px;就可以移动到下面去 ...

相似回答