Web Developer / Designer 经常需要将一个元素“固定”在页面的某个位置。例如弹出窗口、漂浮广告位等……本文将详细介绍简单CSS实现元素相对于浏览器窗口进行定位的方法。
position:fixed生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。
良好支持 W3C 标准的浏览器实例
在 IE9、Firefox、Chrome等良好支持 W3C 标准的浏览器中,如果我们希望将某元素绝对定位于窗口正中间,我们可以给它指派这样的 CSS样式:
width:336px; height:280px; left:50%; top:50%; margin-left:-168px; margin-top:-140px; position:fixed;
这里 margin-left 、margin-top 的值应该修改为您页面主要区域宽度和高度的一半。
修正IE版本<7不支持position:fixed的bug
IE版本<7的浏览器不支持position:fixed属性,所以并未实现期望的效果,这时就要针对IE<7的浏览器写单独的样式。
(1)利用 Javascript 计算出需要的 top 值
在head中插入:
<!--[if IE lt 7]> <link rel="stylesheet" href="style.css" type="text/css" media="screen" /> <![endif]-->
在style.css样式表中针对目标定位元素样式中写入:
position:absolute; top:expression(eval(document.body.scrollTop + 50));
防止滚动条滚动时的闪动,需要定义HTMl的属性为:
html { background-image: url(about: blank); /*用浏览器空白页面作为背景*/ background-attachment: fixed; /*确保滚动条滚动时,元素不闪动*/ }
在 IE 中特有的 CSS 运算符 expression中我们可以利用 Javascript 计算出需要的 top 值,这样就达到了与 position: fixed 同样的效果。
(2)利用容器对溢出内容的处理方式来实现
定义body内外边距为0,实现html和浏览器窗口相同大小,使body出现滚动条,元素相对于html相对定位。
body { padding: 0; margin: 0; } html { overflow: hidden; } body { height: 100%; overflow: auto; }
针对IE6定义元素属性:
position: absolute; top: 50% ; left: 50% ; margin-top: -140px; margin-left: -168px;
让元素固定于浏览器
分别让元素定位于浏览器左侧、右侧、顶部、底部综合样式演示:
position:absolute; bottom:auto; top:expression(eval(document.documentElement.scrollTop));/* IE6 头部固定 */
position:absolute; right:auto; left:expression(eval(document.documentElement.scrollLeft+document.documentElement.clientWidth-this.offsetWidth)-(parseInt(this.currentStyle.marginLeft, 10)||0)-(parseInt(this.currentStyle.marginRight, 10)||0));/* IE6 固定右侧 */
position:absolute; bottom:auto; top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop, 10)||0)-(parseInt(this.currentStyle.marginBottom, 10)||0)));/* IE6 固定底部 */
position:absolute; right:auto; left:expression(eval(document.documentElement.scrollLeft));/* IE6 左侧固定 */
相关推荐
流体布局利用百分比单位实现页面元素随浏览器窗口大小变化而自适应。而CSS Grid和Flexbox则是现代布局的新标准,能够实现二维布局的简便和高效。 定位是CSS中的另一难点,包括静态、相对、绝对和固定定位。静态定位...
通过设置`position`属性为`relative`、`absolute`或`fixed`,我们可以相对于最近的已定位祖先元素、相对自身初始位置或相对于浏览器窗口来调整元素的位置。同时,`top`、`right`、`bottom`和`left`属性用于指定元素...
3. **布局技术**:流体布局(Fluid Layout)使页面元素随浏览器窗口大小变化而调整,而网格布局(Grid Layout)和Flexbox(弹性盒子布局)则为复杂和响应式的界面设计提供了强大工具。 4. **响应式设计**:利用媒体...
如果没有这样的祖先,那么元素将相对于根元素,即浏览器窗口进行定位。 在CSS中,我们使用`top`、`right`、`bottom`和`left`属性来调整绝对定位元素的位置。这些属性的值可以是像素、百分比或其他长度单位,它们...
- 绝对定位相对于最近的非静态定位祖先元素进行定位,而固定定位始终相对于浏览器窗口。 5. 弹性布局(Flexbox)与网格布局(Grid): - Flexbox提供了一种更加灵活的方式来控制容器内元素的排列和对齐,适用于一...
固定定位类似于绝对定位,不过它是基于视口进行定位,即元素位置是相对于浏览器窗口的。 理解定位的原理是使用它的关键。在CSS中,可以使用top、right、bottom和left(TRBL)属性来控制元素的位置。相对定位元素的...
元素的位置相对于最近的非`static`定位的祖先元素,如果找不到这样的祖先,它将相对于初始包含块(通常是浏览器窗口)。使用`absolute`时,元素会脱离文档流,不再影响周围元素的位置,可以使用`top`、`bottom`、`...
如果找不到这样的祖先,它会相对于浏览器窗口定位。通过`top`、`right`、`bottom`、`left`属性,我们可以指定元素相对于这个起点的位置。注意,即使元素移动,它仍会占据原有的空间,除非我们为它设定边偏移量。 **...
4. 固定定位(fixed):元素相对于视口定位,即使窗口滚动,元素位置仍然不变。在示例中,`#can`的父元素在`position: fixed;`情况下变为视口。 掌握这些概念,尤其是百分比在CSS中的应用,能帮助开发者创建更适应...
- **知识点**: 使用 ActiveX 控件可以实现对浏览器窗口的操作,如最小化、最大化和关闭。 - **应用场景**: - 在需要进行复杂交互的应用中,提供更多的窗口控制选项。 - 注意:这种方法在现代浏览器中可能不再...
- **sessionStorage**:仅在当前浏览器窗口/标签页有效,关闭后数据消失。 - **localStorage**:永久存储数据,除非手动清除。 **应用场景**: - Cookies用于认证、个性化等。 - sessionStorage和localStorage用于...