gpt4 book ai didi

javascript - "Opening"/划分一个HTML段落

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

这个问题可能是一个需要解决的有趣问题……在显示文本的网页上,我需要一种特定的行为:当用户点击某些特殊词时,该词的解释会在点击的词下方打开。所有的问题是:它真的应该在单词下面打开,就像将段落一分为二一样“打开”,而不是让后面的文本跳到下一行。

我找到了一个非常有效的解决方案,它使用 CSS float 属性。你可以在那里看到它(比下面的代码更能说明问题):http://jsfiddle.net/3gwzx/3/

这个解决方案的主要问题是它使用了嵌套跨度。而且,由于 span 不是 block 标记,因此填充不适用于它们。因此,在灰色框内,文本永远不会有任何水平填充(垂直填充是可以的)——否则它会改变框本身的大小——或者我错过了什么? - 那很糟糕。有人有解决方案吗?我是否应该以完全不同的方式重新考虑这个问题?

非常非常感谢!

这是 HTML 的样子:

<body onload="putListeners()">

<p>This is the normal text here, you cannot click it. But some words needs long
explanations, like this one : <span class="note">click on me

<span class="noteTxt">The explanation begins here <a class="foo" href="bar.html"> and
could have link</a> that one should be able to click.
And the note can be loooong, long, long, very, very long.
</span>
</span>

And here, the text carry on. It could carry on for a long, long time.
And with all the other solutions I tried, this part of the text "jumps" after the note,
on a new line, when it appears. What I like here is that, when you open the note,
it really "open the paragraphs in two". But i cannot give a padding
to those nested span… I should have a div… but you cannot put a div
inside a span !</p>

</body>

这是 JS

function putListeners() {

//just listens to the text…
var elements = document.getElementsByClassName("note");
for (var i = 0; i < elements.length; i++) {
elements[i].addEventListener("click", showNote, false);
}

};

function showNote()
{
//content to show
var currentTxt;

//finds the nested noteTxt
for (var i = 0; i < this.childNodes.length; i++) {
if (this.childNodes[i].className == "noteTxt") {
currentTxt = this.childNodes[i];
break;
}
}

//displays it or hides it
if(currentTxt.style.display=="none" || currentTxt.style.display=="")
{

currentTxt.style.display="block";

}
else
{
currentTxt.style.display="none";
}

return true;
};

并且,对于信息,CSS 的相关部分(您可能想出了它的样子 - Jfiddle 中的完整代码):

span.note {
position: static;
}

span.note span.noteTxt {
display: none;
float: left;
color: black;
width: 100%;
background-color: #eaeaea;
}

最佳答案

如果你想改变标签的布局行为,在你的例子中是<span>你可以设置 css 属性 display: block将其更改为 div 样式布局。

span.asblock {
display: block;
}

这将为您提供一个行为类似于 div 的跨度。

关于javascript - "Opening"/划分一个HTML段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19190184/

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