[英]CSS: aligning elements inside a div
我有一个包含三个元素的 div,但我在正确定位最后一个元素时遇到了问题。 左边的 div 必须在左边,中间的 div 需要居中,第三个需要在右边。
所以,我有类似的东西:
#left-element {
margin-left: 9px;
margin-top: 3px;
float:left;
width: 13px;
}
#middle-element {
margin:0 auto;
text-align: center;
width: 300px;
}
#right-element {
float:right;
width: 100px;
}
我的 html 看起来像这样:
<div id="container-div">
<div id="left-element">
<img src="images/left_element.png" alt="left"/>
</div>
<div id="middle-element">
I am the text inside the middle element
</div>
<div id="right-element">
I am the text in right element
</div>
</div>
有任何想法吗?
谢谢!
你没有为你的容器 div 包含 css ,但是每当它包含浮动元素时,你应该像这样隐藏溢出:
#container {
overflow: hidden;
width: 100%; /* for good measure */
}
当您 position 中间 div 时,您正在设置跨越整个容器的边距,因此任何其他元素都将定位在下面的行上。 请注意,至少对于大多数现代浏览器来说,进一步的 . 如果您重新排序元素,如下所示:
<div id="container">
<div id="left-element">
<img src="images/left_element.png" alt="left"/>
</div>
<div id="right-element">
I am the text in right element
</div>
<div id="middle-element">
I am the text inside the middle element
</div>
</div>
你应该会发现它有效。 更好的方法,因为我不太确定这是否应该工作,将使用 css 定位。 应用以下 css:
#container {
overflow: hidden;
width: 100%;
min-height: 36px; /* Remember absolute positioning is outside the page flow! */
position: relative;
}
#left-element {
position: absolute;
left: 9px;
top: 3px;
width: 13px;
}
#middle-element {
margin: 0 auto;
text-align: center;
width: 300px;
}
#right-element {
position: absolute;
right: 0px;
top: 0px;
width: 100px;
}
我认为你的问题是你浮动了左右元素而不是中心元素。 尝试这样的事情:
CSS:
<style>
#container { display:block; margin:0; padding:0; width:640px; height:400px; outline:1px solid #000; }
#left-element { float:left; display:block; margin:10px; padding:0; width:200px; height:380px; background:#ccc; }
#middle-element { float:left; display:block; margin:10px 0; padding:0; width:200px; height:380px; background:#eaeaea; }
#right-element { float:left; display:block; margin:10px; padding:0; width:200px; height:380px; background:#ddd; }
</style>
HTML:
<div id="container">
<div id="left-element">Left Element</div>
<div id="middle-element">Middle Element</div>
<div id="right-element">Right Element</div>
</div>
问题特别是中间 div 设置了宽度但没有浮动,这意味着它仍然是块级元素。 即使 div 本身没有 go 容器的整个宽度,它仍然被视为这样。 您需要做 2 件事 - 浮动中间 div,然后清除浮动,以便容器随着子 div 的高度而增长。 首选 clearfix 方法,因为它不会导致 CSS3 属性出现问题,这些属性自然延伸到它们所应用的元素的边界(框阴影、文本阴影等)之外。
http://perishablepress.com/press/2009/12/06/new-clearfix-hack/
我有完全相同的问题。 我使用了这种方法。 我使中心元素显示内联块。 这样我就不必给元素特定的宽度或主容器特定的高度。 这些块只占用了与里面的内容一样多的空间。 希望这可以帮助。
.main-nav { text-align: center; padding: 2em 3em; background: #f4f4f4; } #logo { margin: 0; width: 50px; float: left; margin-top: 18px; } #logo-link { float: left; display: inline-block; }.name { display: inline-block; }.nav { float: right; margin-top: 18px; }.nav li { float: left; margin-right: 15px; margin-top: 5px; }.nav li:last-child { margin-right: 0; }
<header class="clearfix"> <div class="main-nav"> <a href="index.html" id="logo-link" class="clearfix"><img src="img/site-logo.svg" alt="Munchies" id="logo"></a> <div class="name"> <h1>The Munchies Family Site</h1> <h2>Designer</h2> </div> <nav class="nav clearfix"> <ul> <li><a href="index.html">Gallery</a></li> <li><a href="about.html">About</a></li> <li><a href="contact.html">Contact</a></li> </ul> </nav> </div> </header>
强文本
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.