【问题标题】:Align divs from different parent div at same height将来自不同父 div 的 div 对齐在相同高度
【发布时间】:2016-12-23 23:48:13
【问题描述】:

我试图将两个 div 对齐在同一高度,其中 div 不是行 div 的一部分。

var divh = document.getElementById('copyTarget1').offsetHeight;
document.getElementById('copyTarget2').style.height = divh + 'px';
/* latin-ext */
@font-face {
  font-family: 'Lato';
  font-style: normal;
  font-weight: 300;
  src: local('Lato Light'), local('Lato-Light'), url(http://fonts.gstatic.com/s/lato/v11/dPJ5r9gl3kK6ijoeP1IRsvY6323mHUZFJMgTvxaG2iE.woff2) format('woff2');
  unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Lato';
  font-style: normal;
  font-weight: 300;
  src: local('Lato Light'), local('Lato-Light'), url(http://fonts.gstatic.com/s/lato/v11/EsvMC5un3kjyUhB9ZEPPwg.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
}


body {
    background: hsl(184,65%,49%);
    margin: 0;
    font-family: 'Lato';
    text-align: center;
    color: #fff;
    font: 15px/1.4em;
}

pre {
    background-color: #333;
    padding: 6px;
    font-size: 12px;
    color: #2fbe35;
    line-height: 1.3em;
}
code {
    font-family: "Courier New", Courier, mono;
    color: #2fbe35;
}

blockquote {
    border: none;
    color: #fff;
    padding: 5px 20px 5px 20px;
    margin-right: 30px;
    margin-left: 30px;
}

.content
{
	width: 100%;
    margin: 0;
}

.column1   {
    width: 50%;
    height:auto;
    float: left;
}

.column2  {
    width: 50%;
	height:auto;
    float:left;
}
<!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" debug="true"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>HTML-CSS EDITOR</title>
<meta name="generator" content="Mephisto">
<link href="./main2.css" rel="stylesheet" type="text/css">
<link rel="alternate" type="application/atom+xml" href="http://feeds.feedburner.com/tuupola" title="Atom feed">
<script src="./jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script src="./jquery.jeditable.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="content">
<div class="column1">
<h1>CSS EDITOR</h1>
<div>Replace Header Text Color: </div><input type="text" id='thebox1'>
<div>Replace Header Background Color: </div><input type="text" id='thebox2'>
<div>Replace Logo Section Background Color: </div><input type="text" id='thebox5'>
<div id="copyTarget1">
	<blockquote>
	    <pre>
		    <code>
#topsection {
	background-color: <b class="popup2" style="color:#fff;">#value </b>;
	width:100%;
	height:80px;
	z-index:1;
	position:absolute;
	top:10px;
	left:0;
	color: <b class="popup1" style="color:#fff;">#value </b>;
}
			</code>
		</pre>
	</blockquote>
</div>
<button id="copyButton1">Copy</button><br><br>
</div>
<div class="column2">
<h1></h1>
<h1>HTML EDITOR</h1>
<div>Enter header section text: </div><input type="text" id='thebox3'>
<div>Enter image link: </div><input type="text" id='thebox4'>
<div id="copyTarget2">
	<blockquote>
	    <pre>
		    <code>
			<xmp>
<div id="topsection">
<div id="header1"></xmp><b class="popup3" style="color:#fff;">HEADER TEXT</b><xmp></div>
<div id="header2">1 Jan 2015 - 31 Jan 2015</div>
</div>
</xmp>
			</code>
		</pre>
	</blockquote>
</div>
<button id="copyButton2">Copy</button><br><br>
</div>
</div>

每个 div(copyTarget1copyTarget2)是水平对齐的 2 个不同列的一部分。

现在我正在尝试对齐两个块引用框,如图所示。将来,我可能会更改代码并添加更多输入框。所以,我不想为两个块引用框设置一个固定高度。

这个想法是使用 javascript,但没有任何改变。该网站的链接在这里:LINK

【问题讨论】:

  • 寻求代码帮助的问题必须包含重现它所需的最短代码在问题本身中最好在Stack Snippet 中。见How to create a Minimal, Complete, and Verifiable example
  • 但是,你应该知道没有 CSS 方法可以垂直对齐不共享父元素的元素。
  • @Paulie_D 我知道。这就是为什么我尝试使用 JS 但它不起作用的原因。
  • @Paulie_D 我发布了我使用的代码。代码 sn-p 对我不起作用,因为它说代码太长。
  • 需要一个minimal演示...我们不需要所有代码,只需要显示问题即可。

标签: javascript html css alignment


【解决方案1】:

要对齐块引用部分的顶部,您需要使内容高于两列中的高度相同。

所以我们将该内容包装在一个 div 中(可能使用 .top 类)并使用 JS/JQ 确定哪个 .top 元素最高,并将该高度应用于所有 .top div。

$(document).ready(function() {

  var highestBox = 0;
  $('.top').each(function() {
    if ($(this).height() > highestBox) {
      highestBox = $(this).height();
    }
  });
  $('.top').height(highestBox);

});
body {
  background: hsl(184, 65%, 49%);
  margin: 0;
  font-family: 'Lato';
  text-align: center;
  color: #fff;
  font: 15px/1.4em;
}
pre {
  background-color: #333;
  padding: 6px;
  font-size: 12px;
  color: #2fbe35;
  line-height: 1.3em;
}
code {
  font-family: "Courier New", Courier, mono;
  color: #2fbe35;
}
blockquote {
  border: none;
  color: #fff;
  padding: 5px 20px 5px 20px;
  margin-right: 30px;
  margin-left: 30px;
}
.content {
  width: 100%;
  margin: 0;
}
.column1 {
  width: 50%;
  height: auto;
  float: left;
}
.column2 {
  width: 50%;
  height: auto;
  float: left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="content">
  <div class="column1">
    <div class="top">
      <h1>CSS EDITOR</h1>
      <div>Replace Header Text Color:</div>
      <input type="text" id='thebox1'>
      <div>Replace Header Background Color:</div>
      <input type="text" id='thebox2'>
      <div>Replace Logo Section Background Color:</div>
      <input type="text" id='thebox5'>
    </div>
    <div id="copyTarget1">
      <blockquote>
        <pre>
		    <code>
#topsection {
	background-color: <b class="popup2" style="color:#fff;">#value </b>;
	width:100%;
	height:80px;
	z-index:1;
	position:absolute;
	top:10px;
	left:0;
	color: <b class="popup1" style="color:#fff;">#value </b>;
}
			</code>
		</pre>
      </blockquote>
    </div>
    <button id="copyButton1">Copy</button>
    <br>
    <br>
  </div>
  <div class="column2">
    <div class="top">

      <h1>HTML EDITOR</h1>
      <div>Enter header section text:</div>
      <input type="text" id='thebox3'>
      <div>Enter image link:</div>
      <input type="text" id='thebox4'>
    </div>
    <div id="copyTarget2">
      <blockquote>
        <pre>
		    <code>
			<xmp>
<div id="topsection">
<div id="header1"></xmp><b class="popup3" style="color:#fff;">HEADER TEXT</b><xmp></div>
<div id="header2">1 Jan 2015 - 31 Jan 2015</div>
</div>
</xmp>
			</code>
		</pre>
      </blockquote>
    </div>
    <button id="copyButton2">Copy</button>
    <br>
    <br>
  </div>
</div>

Codepen 演示

如果您想让所有的块引用都具有相同的高度,您也可以这样做。

【讨论】:

  • 谢谢。那行得通。我一开始没有发布 sn-p 并且得到了反对票:P 通常,我收到一个错误,表明我超出了字符限制,所以我不经常使用它。
【解决方案2】:

在第 10 行你不见了:

</script>

使用控制台检查错误

【讨论】:

  • 谢谢。但这并没有引起任何问题。我还是改了,因为它必须是正确的。
【解决方案3】:

试试这个来改变#copyTarget2元素的高度

var divh = document.getElementById('copyTarget1').offsetHeight;
document.getElementById('copyTarget2').style.height = divh + 'px';

你也应该给这个 div 提供背景而不是 &lt;pre&gt; 标签给孔 div 提供黑色背景

另外,&lt;script type="text/javascript" charset="utf-8"&gt; 在第 10 行没有结束 &lt;/script&gt; 标记

这里是截图,你可以看到#copyTarget2#copyTarget1两个div的高度相同255px

CopyTarget1 http://prntscr.com/c6tvxf

CopyTarget2 http://prntscr.com/c6tw8n

脚本http://prntscr.com/c6twb5

【讨论】:

  • 它不起作用 :( 它对齐了两个 div 中的文本。
  • 它可以工作,但就像我说的那样,背景不在 div 中,而是在
     元素中。我将在那里发布一个屏幕截图,以便您可以看到高度实际上与其他 div 相同
猜你喜欢
  • 1970-01-01
  • 2019-02-27
  • 1970-01-01
  • 2014-09-02
  • 1970-01-01
  • 2016-08-27
  • 2014-12-11
  • 2021-04-30
  • 2015-01-24
相关资源
最近更新 更多