【问题标题】:How to expand div in a HTML page如何在 HTML 页面中展开 div
【发布时间】:2015-03-30 22:24:35
【问题描述】:

我正在开发浏览器应用程序。我已经阅读了关于 DIV 标签的几十页。我只是无法让它工作。我知道我应该使用 CSS,但我会在完成其他一些事情后将其合并到最后。

基本上我想要页眉和页脚。然后是一个固定宽度的侧边栏,其余的要填充一个内容区域。我几乎明白了,但侧边栏开始太低(它应该与内容的高度相同)并且内容没有扩展以适应浏览器的宽度。

这是我得到的:

<header style='background-color:#013499; height:60'>

  <br>
  <span style='color:white'>&nbsp &nbsp Whole Number</span>
  <select>
    <option value=""></option>
    <option value="1">One</option>
    <option value="2">Two</option>
  </select>
</header>

<div>
  <div style='display:inline-block; background-color:#7690C5; width:200'>
    Task1
    <br>Task2
    <br>
  </div>
  <div style='display:inline-block; background-color:#F2F2F2'>
    Top
    <br>Content
    <br>Bottom
  </div>
</div>

<footer style='background-color:#013499; height:60'>

  <br>
  <form name="Actions" action="test.html" method="post">
    &nbsp &nbsp
    <input type="submit" name="send_button" value="Save">&nbsp &nbsp
    <input type="submit" name="send_button" value="Cancel">
  </form>

</footer>

我找到了this post,这对我很有帮助。但这仍然不对。我似乎找不到任何解释这些东西如何协同工作的文档。

我不知道如何让内容填满剩余空间。它最终太短(根据实际内容调整大小)或超出屏幕大小,因为它 100% 包含侧边栏的宽度。我知道出了什么问题,但我不知道如何改正。

我现在将样式从 HTML 中移出。

html, body {
    height: 100%;
	margin: 0;
}

header {
    width: 100%;
    height: 60px;
    background-color: #013499;
	margin: 0;
}

#wrapper {
    min-height: 100%;
    height: auto !important;
    height: 100%;
    margin: 0 0 -60px 0; /* the bottom margin is the negative value of the footer's height */
    position: relative;
}

#sidebar {
    background-color: #7690C5;
    width: 300px;
    height: auto !important;
    bottom: 60px;
    top: 60px;
	display: inline-block;
	position: absolute;
}

#content {
    background-color: #F2F2F2;
    width: 100%;
    height: auto !important;
    bottom: 60px;
    top: 60px;
    margin-left: 300px;
	display: inline-block;
	position: absolute;
}

footer {
    margin: -60px 0 0 0;
    width: 100%;
    height: 60px;
    background-color: #013499;
}

#buttons {
	margin-right: 20px;
	text-align: right;
}

<!DOCTYPE HTML>
<html>
<head>
<title>Viewer test</title>

	<link rel=Stylesheet Type='text/css' href=ERP.css> 

</head>
<body>

	<div id="wrapper">

		<header>

			<br>
    		<span style='color:white'>&nbsp &nbsp Whole Number</span>
	    	<select>
		    	<option value=""></option>
			    <option value="1">One</option>
				<option value="2">Two</option>
    		</select>

	    </header>

		<div id="sidebar">
    			Task1<br>
	    		Task2<br>
		</div>

    	<div id="content">
	    		Content
		</div>

	</div>

    <footer>

	    <br>
		<form id='buttons' name="Actions" action="test.html" method="post">
    		<input type="submit" name="send_button" value="Save">&nbsp &nbsp
	    	<input type="submit" name="send_button" value="Cancel">
		</form>

    </footer>

</body>
</html>

【问题讨论】:

  • 能否请您在fidle 中重现该问题
  • 为什么最后要加入 CSS? CSS 做了你想做的事情。内容应使用 HTML,样式应使用 CSS。
  • this 你想要什么??
  • 谢谢赖,你解决了一件事。我还希望中间部分的高度相同,并填充浏览器窗口的其余部分。

标签: html


【解决方案1】:

首先,不要使用内联样式。任何接触您的代码的人都会讨厌您,而当您想同时对 100 个相同的元素进行更改时,您也会同样讨厌自己。

另外,HTML 是面包,CSS 是黄油。它们本身就是垃圾,但它们在一起非常棒。

您的“侧边栏”不是全高的唯一原因是因为旁边元素的内容有更多内容。您需要合并 CSS 来阻止这种情况发生。

【讨论】:

  • 好的,所以你说的是我不能让它工作然后创建 CSS。我需要阅读哪些 CSS 属性才能让这些区域填满屏幕?
【解决方案2】:

fiddle

侧边栏有点向下的原因是因为您在样式中使用了inline-block。在我制作的小提琴中,我已将display:inline-block; 替换为float:left;。请看小提琴

新的标记如下

<header style='background-color:#013499; height:60px'>
    <br> <span style='color:white'>&nbsp &nbsp Whole Number</span>

    <select>
        <option value=""></option>
        <option value="1">One</option>
        <option value="2">Two</option>
    </select>
</header>
<div>
    <div style='float:left; background-color:#7690C5; width:200px;'>Task1
        <br>Task2
        <br>
    </div>
    <div style='float:left; background-color:#F2F2F2;'>Top
        <br>Content
        <br>Bottom</div>
</div>
<footer style='clear:both;background-color:#013499; height:60px'>
    <br>
    <form name="Actions" action="test.html" method="post">&nbsp &nbsp
        <input type="submit" name="send_button" value="Save">&nbsp &nbsp
        <input type="submit" name="send_button" value="Cancel">
    </form>
</footer>

【讨论】:

  • 感谢 Lai,感谢您的解释。这将帮助我不再犯同样的错误。但是,我也希望中间部分的高度相同,并填充浏览器窗口的其余部分。
  • 为此,您必须在% 中为px 中的每个div 指定高度。但是要使% 起作用,您必须先设置htmlbody 的高度为 100%。试试看。。
  • 我看不出如何将百分比与静态(硬编码)值进行逻辑组合。页眉和页脚是固定大小的。内容需要扩展。
  • 您是否建议首先加载页面,获取屏幕高度,然后重新加载(并重建)将这些信息传递给 php 代码的页面?
  • 不,我是说例如,页眉的高度应该是 20%,页脚应该是 20%,剩下的就是内容。即100%-20%+20%=60%
【解决方案3】:

也许可以尝试使用固定(或绝对)位置。试试这个,例如:

<header style="background-color:#013499; height:60; right: 0;left: 0;top: 0;position: fixed;">

<div style="display:inline-block; background-color:#F2F2F2;float: right;top: 60px;position: fixed;right: 0;"> 

<footer style="background-color:#013499; height: 62px;position: fixed;width: 100%;left: 0;bottom: 0;">

【讨论】:

  • 而且如上所述,当然最好不要使用内联 CSS。给每个 DIV 一个类或 id 并将 CSS 放在一个单独的文件中。
  • 谢谢。 CSS将在它工作后出现。现在我一直在移动东西。我不知道你所说的固定位置是什么意思。宽度和高度需要更正,它们将根据屏幕/分辨率而有所不同。
  • 我会快速阅读定位 w3schools.com/css/css_positioning.asp 和使用不同屏幕分辨率的媒体查询 developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries
  • 感谢您的链接,但您似乎仍然误解,这不是定位,而是尺寸。
猜你喜欢
  • 1970-01-01
  • 2020-11-17
  • 2018-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
相关资源
最近更新 更多