javaScript改变div的位置

JavaScript017

javaScript改变div的位置,第1张

参考如下:

<input type="text">

<div id="divShow" style="display:noneposition:absolute">显示的内容;</div>

display:none,表示此层隐藏;

position:absolute,表示此层的为绝对位置,方便后期进行绝对定位

添加事件,完成效果;

<script type="text/javascript">

function showDiv(obj) {

// 保存元素;

var el = obj

// 获得元素的左偏移量;

var left = obj.offsetLeft

// 获得元素的顶端偏移量;

var top = obj.offsetTop

// 循环获得元素的父级控件,累加左和顶端偏移量;

while (obj = obj.offsetParent) {

left += obj.offsetLeft

top += obj.offsetTop

}

// 设置层的坐标并显示;

document.all.divShow.style.pixelLeft = left

// 层的顶端距离为元素的顶端距离加上元素的高;

document.all.divShow.style.pixelTop = top + el.offsetHeight 

document.all.divShow.style.display = "block"

}

</script>

<style>

#divShow 

{

width:150px

height:180px

border-width:thin

background:yellow

}

</style>

<input type="text" onfocus="showDiv(this)">

<div id="divShow" style="display:noneposition:absolute">显示的内容;</div>

注意:

offsetLeft和OffsetTop不是获得元素和页面的距离,只是获得元素和父元素的的距离,所以要进行while循环一层层累加距离,最后得到元素和页面之间的距离

层次关系:本元素->父元素->……>body->null,当为null时,退出while循环。

最终效果如下:

可以,用创建和插入元素

<!DOCTYPE html>

<html>

<head>

<title>New Document </title>

<meta charset="utf-8" />

<style>

div {border: 1px solid #666padding: 5pxmargin: 5px}

#divs {width: 200px}

#div5 {background: #ccc}

</style>

</head>

<body>

<div id="divs">

<div id="div1">div1</div>

<div id="div2">div2</div>

<div id="div3">div3</div>

<div id="div4">div4</div>

</div>

<script>

var oDivs=document.getElementById('divs')

var oDiv3=document.getElementById('div3')//获取到div3,因为等下要把创建的div插入到div3前面。

var oDiv5=document.createElement('div')//创建一个div元素。

oDiv5.id='div5'//id样式可以先在样式表中写好,然后赋值一个id给创建出来的div元素。

oDiv5.innerHTML='<span>这是被创建出来的div5</span>' //给创建出来的div添加内容,内容中可以有html标签嵌套。

oDivs.insertBefore(oDiv5,oDiv3)//在大的div元素下插入创建出来的元素,第一个参数是创建的div,第二个参数是要插入到哪个div前面。

</script>

</body>

</html>