javascript - 当元素的显示从 "none"变为 "block"时按钮移动

标签 javascript html css

我试图让一个元素在单击按钮时出现,但当它出现时,按钮向下移动。再次单击该按钮时,它会向上移动。

var p = document.getElementById("p");
function changeDisplay() {
	if (p.style.display == "block") {
		p.style.display = "none";
	} else {
		p.style.display = "block";
	}
}
<p id="p" style="display: none;">Hello World</p>
<button onclick="changeDisplay()">Button</button>

我可以将按钮移到 p 下方,但随后会移动另一个元素。

最佳答案

您可以使用 visibility属性(property)代替。这将隐藏元素 (p),但不会将其从布局中移除:

var p = document.getElementById("p");

function changeDisplay() {
  if (p.style.visibility == "visible") {
    p.style.visibility = "hidden";
  } else {
    p.style.visibility = "visible";
  }
}
<p id="p" style="visibility: hidden;">Hello World</p>
<button onclick="changeDisplay()">Button</button>

并且使用三元(由 @AlexandrVyshnyvetskyi 建议)更短一些:

var p = document.getElementById('p');

function changeDisplay() {
  p.style.visibility = (p.style.visibility === 'visible' ? 'hidden' : 'visible');
}
<p id="p" style="visibility: hidden;">Hello World</p>
<button onclick="changeDisplay()">Button</button>

关于javascript - 当元素的显示从 "none"变为 "block"时按钮移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59010696/

相关文章:

javascript - 模块模式 : function undefined

html - 大量 CSS 适配 IE 7

javascript - 有没有办法像在 asp 或 jsp 中使用 <%%> 标签一样使用 &lt;script&gt; 标签?

html - 需要在 float div 之间创建分隔,但在添加边距时不断打破它们

CSS3 框阴影仅在左上角和右上角

java - 从 Apache Wicket 访问 javascript (Jquery) 变量

javascript - 内联构建工具提示注释而不是在文档上准备好吗?

html - css停止div扩展到整个屏幕

javascript - 我可以在我的 action reducer 中使用条件吗?

javascript - 使用悬停和 Angular 更改 div 的颜色时出错