在HTML中,三种定位的区别和含义分别是什么?

在HTML中,三种定位的区别和含义分别是什么?,第1张

一、相对定位 relative

1.参照物为自身;

2.相对定位只改变显示的位置,而不会改变占用的空间位置;

3.关于距离的正负值

二、绝对定位 absolute

1.参照物为具有定位属性的父元素

PS:如果距离当前最近的父元素不具有定位属性,则会一层一层向外找,直到找到具有定位属性(这里仅要求三种定位属性任一都可)的父元素而进行定位,如果找到最后未能找到具有定位属性的父元素,de则最终会依照body进行定位。

2.绝对定位不仅会改变显示的位置,而且会改变占用的空间位置。就好比是元素处于一种悬空漂浮的状态,没有“肉体”!

3.关于距离的正负值,和上面的相对定位的性质一样。

三、固定定位 fixed

固定定位是将某个元素固定在浏览器的某个确定的位置,不随滚动条的移动而变化;   

固定定位的位置是  相对当前浏览器窗口  的;

在一般的前端开发中比较常用的定位有三种:相对定位,绝对定位,固定定位。下面简要的说明一下他们的使用特点:相对定位position:relative1.它可以在四个方向分别或者同时进行偏移 2.定义时它的参照物是父元素(没有时为浏览器本身) 3.偏移后元素的原来位置还是被占着,并没有空出来 4.当父元素和子元素同时定义时,他们的参照物是父元素,且占据原来的位置 绝对定位position:absolute1. 它可以在四个方向分别或者同时进行偏移 2.单独定义时它的参照物是浏览器本身,且不占据原来的位置 3.当父元素和子元素同时定义时,他们的参照物是父元素,且不占据原来的位置 4.当子元素绝对定位,父元素相对定位时,他们的参照物是父元素,且还占据原来的位置 5.当子元素相对定位,父元素绝对定位时,他们的参照物是父元素,且不占据原来的位置 固定定位position:fixed 1.它可以在四个方向分别或者同时进行偏移 2.定义时它总是以浏览器为参照物,且不占据原来的位置 3.它不会随着浏览器的滚动而移动,即会固定在所能到观察浏览器界面的固定地方 注:普遍使用方式为子绝父相,即子元素绝对定位,父元素相对定位 可以使用z-index: 来进行优先级显示

可用的方法比较多,比较常见的是使用CSS。

1、使用CSS

CSS让DIV固定位置不随滚动条而滚动,fixed元素的绝对位置是相对于HTML元素来说,滚动条是body元素的。

(1)我们需要做的是,让body保持其原有高度,让html只有一个窗口那么高。代码我们可以这样写:

html{overflow:hidden} 

body{height:100%overflow:auto}

(2)我们可以利用绝对定位来定位我们想要固定在窗口某个位置的模块。假设我们要固定的内容在右上。

html{overflow:hidden}

body{height:100%overflow:auto}

#rightformform{position:absoluteright:30pxtop50px}

(3)页面由左侧菜单和右侧主体内容构成,右侧内容可能会很多,会出现翻屏。现在是要无论页面怎么翻屏滚动,左侧的菜单始终在左侧。请看CSS解决方案。

#site_nav{position:fixedwidth:160pxpadding:6px10pxheight:100%  

background:#ffcoverflow-y:auto} 

#content{padding:10px10px10px190px}

(4)我设置左侧div#site_nav的样式,将其位置固定,即position:fixed,并且设置固定宽度,高度为100%,为了区分右侧内容,我设置了背景颜色background:#ffc。

接着,我将内容部分div#content设置其padding值,注意关键是padding-left:190px,只有大于左侧菜单宽度的padding值,才能使右侧主体内容部分不会与左侧菜单重叠。

2、不使用JS:

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">

<head>

<metahttp-equiv="Content-Type"content="text/htmlcharset=utf-8"/>

<title>无标题文档</title>

<styletype="text/css">

ul{

margin:0

padding:0}

li{

list-style-type:nonefloat:leftmargin-left:10pxline-height:30px}

</style>

</head>

<body>

<divstyle="width:100%height:30pxbackground-color:#093position:fixedleft:0pxtop:0px">

<ul>

<li>sd</li>

<li>dsda</li>

<li>dsa</li>

</ul>

</div>

<divstyle="height:10000pxborder:1pxsolidred"></div>

<divstyle="width:100%height:30pxbackground-color:#093position:fixedleft:0pxbottom:0"></div>

</body>

</html>

3、<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>

分析:

1、html,body:将默认可能会随机出现的滚动条,完全地隐藏了,这样不管您放了啥内容,它们都不会出来了。

2、.virtual_body:顾名思义,就是一个假的body了,它被设置为长宽都为100%的,意思就是它利用了所有可视的浏览器窗体显示所有的内容,并垂直允许出现滚动条。

3、.fixed_div:这下它可以利用绝对值进行定位了,因为在这个场景下,这个页面100%地被那个假冒的body给独霸了,而滚动条反正也出不来,您就可以自认为是在某个点蹲坑了,绝对安全。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7597892.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存