javascript - 动态添加的具有绝对定位的元素不会随父元素一起流动

标签 javascript css

我正在玩弄 JavaScript。我在调整页面大小和动态创建元素的位置时遇到问题。 Parent div 是相对定位的,附加的子元素相对于它们添加到的父元素是绝对的。当我缩小浏览器窗口时,父级可以正常缩放,但子级的位置不会更新。在现实世界中,你会如何处理这样的情况? 谢谢 PS:请记住,我正在努力学习这一点,而且很多我确定是错误的或不必要的。我也感谢您的更正。

    <html>
    <head>
    <!-- <link rel="stylesheet" type="text/css" href="1.css"> -->
    <script language="javascript"></script>
    <style>
    #div1{
	   postion:relative;
	   margin:auto auto;
	   height:400px;
	   width:400px;
	   background-color: black;
    }
    </style>
    </head>
    <body>
    <!-- Goal; -->
    <!-- I want a js class that will create itself and manage its own properties
    So when I click on the div I fire up a new object button. -->
    <div>
       <label id = "lblID"></label>
       <div id="div1"></div>
    </div>
    <script>
    document.getElementById("div1").addEventListener("click", createchild, false);
    function createchild(e)
    {
		obj1 = new child(this,e);
	}
	function child(el,e)
	{
		this.parent = el;
		this.parentID = el.id;
		// Create the object
		this.child = document.createElement('div');
		this.parent.appendChild(this.child);
		// Set some attributes
		var c = this.parent.childElementCount + 1;
		this.child.id = "child"+c;
		// Set some style
		var l = e.clientX - 20;
		var t = e.clientY - 20;
		var stylestring = "position:absolute;top:"+t+"px;left:"+l+"px;height:40px;width:40px;background-color:red;";
		this.child.style.cssText = stylestring;
		// Add some eventhandling
		this.child.addEventListener("click",getchildcoords,false);
	}
	function getchildcoords(e)
	{
		alert(this.id);
		e.stopPropagation();
	}
</script>

</body>
</html>

最佳答案

  • #div1 css 的 'position' 关键字中缺少 'i'
  • 将新的 div 附加到容器本身以链接它们的位置
  • 使用 offsetX、offsetY 进行正确放置

<html>
    <head>
    <!-- <link rel="stylesheet" type="text/css" href="1.css"> -->
    <script language="javascript"></script>
    <style>
    #div1{
	   position:relative;
	   margin:auto auto;
	   height:400px;
	   width:400px;
	   background-color: black;
    }
    </style>
    </head>
    <body>
    <!-- Goal; -->
    <!-- I want a js class that will create itself and manage its own properties
    So when I click on the div I fire up a new object button. -->
    <div>
       <label id = "lblID"></label>
       <div id="div1"></div>
    </div>
    <script>
    document.getElementById("div1").addEventListener("click", createchild, false);
    function createchild(e)
    {
		obj1 = new child(this,e);
	}
	function child(el,e)
	{
		this.parent = el;
		this.parentID = el.id;
		// Create the object
		this.child = document.createElement('div');
		
		// Set some attributes
		var c = this.parent.childElementCount + 1;
		this.child.id = "child"+c;
		// Set some style
		var l = e.offsetX - 20;
		var t = e.offsetY - 20;
		var stylestring = "position:absolute;top:"+t+"px;left:"+l+"px;height:40px;width:40px;background-color:red;";
		this.child.style.cssText = stylestring;
      el.appendChild(this.child);
		// Add some eventhandling
		this.child.addEventListener("click",getchildcoords,false);
	}
	function getchildcoords(e)
	{
		alert(this.id);
		e.stopPropagation();
	}
</script>

</body>
</html>

关于javascript - 动态添加的具有绝对定位的元素不会随父元素一起流动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42214320/

相关文章:

javascript - react native 键盘避免使用 native 基础的 View

javascript - DateEdit 在客户端设置一个日期值

javascript - Accordion 列表的加/减图片

javascript - Colorbox IFrame 在浏览器中打开一个 URL 而不是一个框

javascript - 使用javascript将base64string转换为可下载文件

javascript - 正确获取元素值(ASP.NET MVC)

javascript - 隐藏 100% 高度的 iPhone 地址栏

javascript - 如何保证一个元素有一个特定的高度

html - Bootstrap Navbar 品牌形象在崩溃时被压低

html - 如何使整个 DIV 成为链接