gpt4 book ai didi

javascript - 使用 Javascript 添加具有绝对位置的 span 元素会增加高度

转载 作者:行者123 更新时间:2023-11-28 13:29:13 24 4
gpt4 key购买 nike

单击以下代码中的一个圆 Angular 矩形后,需要创建 span 元素的副本并将其放置在原始元素的顶部。代码这样做了,但是新元素的高度增加了。请提出可能出错的地方。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<body>

<div id="phrasesDiv" style="line-height:250%" /></div>

<style type="text/css">
.phrase {
font-size:18pt;
color:blue;
background: palegreen;
border:2px solid green;
padding:2px 10px 2px 10px;
-webkit-border-radius:10px;
}
</style>

<script type="text/javascript">

{
// create the phrase list dynamically
var phraseList = "Apple~Orange~Kiwi~Guava";
var phrasesDiv = document.getElementById("phrasesDiv");
var phrases = phraseList.split('~');
for (var i=0; i<phrases.length; i++)
phrasesDiv.innerHTML += "<span id=\""+phrases[i]+"\" class=\"phrase\" onmousedown=\"phraseTouched('"+phrases[i]+"')\">"+phrases[i]+"</span>&nbsp;&nbsp;&nbsp;\n";
}

function getDim(el) {
var lw = el.offsetWidth;
var lh = el.offsetHeight;
for (var lx=0, ly=0; el != null; lx += el.offsetLeft, ly += el.offsetTop, el = el.offsetParent);
return {x:lx,y:ly,w:lw,h:lh};
}

function phraseTouched(id) {
var elem = document.getElementById(id);
var dim = getDim(elem);
var dragElem = document.createElement('span')
dragElem.id = id+"_copy";
dragElem.innerHTML = id;
dragElem.className += " phrase";
dragElem.style.background = "pink";
dragElem.style.position = "absolute";
dragElem.style.left = dim.x+"px";
dragElem.style.top = dim.y+"px";
elem.parentNode.appendChild(dragElem);
}

</script>

</html>

编辑:以下功能有效......但我仍然很想知道如果我以编程方式添加到 div,为什么我的高度会增加。

function phraseTouched(id) {
var elem = document.getElementById(id);
var dim = getDim(elem);
document.body.innerHTML += "<span id=\"_"+id+"\" class=\"phraseDrag\" style=\"left:"+dim.x+"px;top:"+dim.y+"px;position:absolute;\">"+id+" </span>\n";
}

最佳答案

简而言之,当您将讨厌的“position: absolute”属性添加到您的元素并且它不知道如何表示自己时,您就破坏了标准布局模型。如果您想保留大部分样式,最简单的解决方法是简单地添加:

display: inline-block;

在您的 .phrase 风格中的某处,至少我会这样做。当然,只要您不介意丢失行高属性,Vijay 的解决方案就可以正常工作。

关于javascript - 使用 Javascript 添加具有绝对位置的 span 元素会增加高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12490199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com