簡體   English   中英

CSS:對齊 div 內的元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM