2015-07-05 277 views
1

我有一個簡單的問題,CSS破壞我的週末的大師。 基本上我有一個div,左邊是圖片,右邊是一些文字。 我需要盒子的高度與內容文本相同,例如最後一行下面的圖片在盒子外面,而我需要盒子的高度與內容一樣。Div高度100%的內容

我不能使用固定高度,因爲文本可以在框內改變,我只需要一個已經定義的最小高度。

有些古茹能幫助我嗎?

<a href="#" class="myClass"> 
    <div class="postImageUrl" style="overflow:hidden; z-index: 10; max-width: 100%;"> 
     <div class="imgUrl" style="background-image:url(http://cdn8.openculture.com/wp-content/uploads/2015/03/17231820/Lorem-Ipsum.jpg);"> 
     </div> 
    </div> 
    <div class="centered-text-area clearfix"> 
     <div class="centered-text"> 
      <div class="myClass-content"> 
       <div class="ctaText" style="float:left;"> 
        UpNeXt 
       </div> 
       <div style="clear:both;"></div> 
       <div class="postTitle" style="float:left;"> 
        Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat 
       </div> 
      </div> 
     </div> 
    </div> 
</a> 

這是<風格>

.myClass 
, .myClass .postImageUrl 
, .myClass .imgUrl 
, .myClass .centered-text-area { 
    min-height: 100px; 
    position: relative; 
} 
.myClass 
, .myClass:hover 
, .myClass:visited 
, .myClass:active { 
    border:0!important; 
} 
.myClass { 
    display: block; 
    transition: background-color 250ms; 
    webkit-transition: background-color 250ms; 
    width: 100%; 
    opacity: 1; 
    transition: opacity 250ms; 
    webkit-transition: opacity 250ms; 
    background-color: #eaeaea; 
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); 
    -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); 
    -o-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); 
    -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); 
} 
.myClass:active 
, .myClass:hover { 
    opacity: 1; 
    transition: opacity 250ms; 
    webkit-transition: opacity 250ms; 
    background-color: #FFFFFF; 
} 
.myClass .postImageUrl 
, .myClass .imgUrl { 
    background-position: center; 
    background-size: cover; 
    float: left; 
    margin: 0; 
    padding: 0; 
} 
.myClass .postImageUrl { 
    width: 30%; 
} 
.myClass .imgUrl { 
    width: 100%; 
} 
.myClass .centered-text-area { 
    float: right; 
    width: 70%; 
} 
.myClass .centered-text { 
    display: table; 
    min-height: 100px; 
    left: 0; 
    position: absolute; 
    top: 0; 
} 
.myClass .myClass-content { 
    display: table-cell; 
    margin: 0; 
    padding: 0 74px 0 18px; 
    position: relative; 
    vertical-align: middle; 
    width: 100%; 
} 
.myClass .ctaText { 
    border-bottom: 0 solid #fff; 
    color: #34495E; 
    font-size: 13px; 
    font-weight: bold; 
    letter-spacing: .125em; 
    margin: 0; 
    padding: 0; 
    text-decoration: underline; 
} 
.myClass .postTitle { 
    color: #000000; 
    font-size: 18px; 
    font-weight: 600; 
    margin: 0; 
    padding: 0; 
} 
.myClass .ctaButton { 
    background-color: #FFFFFF; 
    margin-left: 10px; 
    position: absolute; 
    right: 0; 
    top: 0; 
} 
.myClass:hover .imgUrl { 
    -webkit-transform: scale(1.2); 
    -moz-transform: scale(1.2); 
    -o-transform: scale(1.2); 
    -ms-transform: scale(1.2); 
    transform: scale(1.2); 
} 
.myClass .imgUrl { 
    -webkit-transition: -webkit-transform 0.4s ease-in-out; 
    -moz-transition: -moz-transform 0.4s ease-in-out; 
    -o-transition: -o-transform 0.4s ease-in-out; 
    -ms-transition: -ms-transform 0.4s ease-in-out; 
    transition: transform 0.4s ease-in-out; 
} 

您可以在這裏找到問題http://jsfiddle.net/L26s1vc5/

這是我現在看到 enter image description here

雖然這是我所期望有: enter image description here

最小高度是100px。 我已經與高度測試:100%,溢出-Y:自動,高度:汽車沒有成功:(

感謝您的幫助,亞歷克斯

回答

4

你造成您的問題兩個問題你有一個結算問題,和一個絕對定位問題。 .myClass裏面有兩個浮動div。僅此一項就會導致你遇到的問題。你甚至試圖在兩個地方修復它。你在一個地方添加了一個clearfix類(這隻有在你有一個css規則匹配的情況下才會起作用)。你也有一個空的div,其內嵌樣式爲clear: both;,但爲了工作,你需要將它作爲鏈接中的第三個div。

即使上述任何一項工作正常,問題也不會得到解決。這是因爲你在.centered-text上的絕對定位。當你絕對定位某件事物時,你將它從文檔流中取出。這意味着它的父母不知道它內部的大小。你所有的尺寸都來自你自由使用的min-height: 100px。如果你刪除了絕對定位.centered-text並正確使用clearfix,那麼你的代碼工作得很好。

.myClass, 
 
.myClass .postImageUrl, 
 
.myClass .imgUrl, 
 
.myClass .centered-text-area { 
 
    min-height: 100px; 
 
    position: relative; 
 
} 
 
.myClass, 
 
.myClass:hover, 
 
.myClass:visited, 
 
.myClass:active { 
 
    border: 0!important; 
 
} 
 
.myClass { 
 
    display: block; 
 
    transition: background-color 250ms; 
 
    webkit-transition: background-color 250ms; 
 
    width: 100%; 
 
    opacity: 1; 
 
    transition: opacity 250ms; 
 
    webkit-transition: opacity 250ms; 
 
    background-color: #eaeaea; 
 
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); 
 
    -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); 
 
    -o-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); 
 
    -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); 
 
} 
 
.myClass:active, 
 
.myClass:hover { 
 
    opacity: 1; 
 
    transition: opacity 250ms; 
 
    webkit-transition: opacity 250ms; 
 
    background-color: #FFFFFF; 
 
} 
 
.myClass .postImageUrl, 
 
.myClass .imgUrl { 
 
    background-position: center; 
 
    background-size: cover; 
 
    float: left; 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
.myClass .postImageUrl { 
 
    width: 30%; 
 
} 
 
.myClass .imgUrl { 
 
    width: 100%; 
 
} 
 
.myClass .centered-text-area { 
 
    float: right; 
 
    width: 70%; 
 
} 
 
.myClass .centered-text { 
 
    display: table; 
 
    min-height: 100px; 
 
    /* Removed absolute positioning*/ 
 
} 
 
.myClass .myClass-content { 
 
    display: table-cell; 
 
    margin: 0; 
 
    padding: 0 74px 0 18px; 
 
    position: relative; 
 
    vertical-align: middle; 
 
    width: 100%; 
 
} 
 
.myClass .ctaText { 
 
    border-bottom: 0 solid #fff; 
 
    color: #34495E; 
 
    font-size: 13px; 
 
    font-weight: bold; 
 
    letter-spacing: .125em; 
 
    margin: 0; 
 
    padding: 0; 
 
    text-decoration: underline; 
 
} 
 
.myClass .postTitle { 
 
    color: #000000; 
 
    font-size: 18px; 
 
    font-weight: 600; 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
.myClass .ctaButton { 
 
    background-color: #FFFFFF; 
 
    margin-left: 10px; 
 
    position: absolute; 
 
    right: 0; 
 
    top: 0; 
 
} 
 
.myClass:hover .imgUrl { 
 
    -webkit-transform: scale(1.2); 
 
    -moz-transform: scale(1.2); 
 
    -o-transform: scale(1.2); 
 
    -ms-transform: scale(1.2); 
 
    transform: scale(1.2); 
 
} 
 
.myClass .imgUrl { 
 
    -webkit-transition: -webkit-transform 0.4s ease-in-out; 
 
    -moz-transition: -moz-transform 0.4s ease-in-out; 
 
    -o-transition: -o-transform 0.4s ease-in-out; 
 
    -ms-transition: -ms-transform 0.4s ease-in-out; 
 
    transition: transform 0.4s ease-in-out; 
 
} 
 

 
/* Added clearfix class here so that it can work properly*/ 
 
.clearfix:after { 
 
    content: ""; 
 
    display: block; 
 
    clear: both; 
 
}
<a href="#" class="myClass clearfix"><<!-- moved clearfix here so it can take effect for the necessary area -->> 
 
    <div class="postImageUrl" style="overflow:hidden; z-index: 10; max-width: 100%;"> 
 
    <div class="imgUrl" style="background-image:url(http://cdn8.openculture.com/wp-content/uploads/2015/03/17231820/Lorem-Ipsum.jpg);"> 
 
    </div> 
 
    </div> 
 
    <div class="centered-text-area"> 
 
    <div class="centered-text"> 
 
     <div class="myClass-content"> 
 
     <div class="ctaText" style="float:left;"> 
 
      UpNeXt 
 
     </div> 
 
     <div class="postTitle" style="float:left;"> 
 
      Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet 
 
      dolore magna aliquam erat volutpat 
 
     </div> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</a>

我所做的一切除去上述絕對定位(它沒有做任何事情,我可以告訴),移動你的clearfix到適當的地方,你去掉多餘的div(也是clearfix嘗試)並將一個clearfix類添加到您的css的末尾。

它看起來像你已經試圖做很多事情來使這個代碼工作。你可能想經歷一下,看看有什麼在做什麼,很多看起來沒有做任何事情。

+0

天啊!非常感謝!現在效果很好,但是還有一種方法可以調整圖像的大小? – ale500

+0

DSMann8你是一名自由職業者嗎?如果是,我可以收到你的電子郵件嗎可能是因爲我需要你在未來項目中的幫助,而你的回覆非常詳細。我解決了其他5個盒子裏的類似問題,謝謝你的解釋:) – ale500

+0

不,我不是一個自由職業者。我只是一個已經研究過這個東西的學生。對於你的形象來說,很難匹配兄弟姐妹的身高。這是因爲除非父母有一個設定的高度(百分比在這裏真的令人困惑),否則你不能告訴孩子匹配父母的高度。而且無法告訴兄弟姐妹與另一個兄弟姐妹的高度相匹配。 –

0

只添加溢出:隱藏;

.myClass .myClass-content { 
    display: table-cell; 
    margin: 0; 
    padding: 0 74px 0 18px; 
    position: relative; 
    vertical-align: middle; 
    width: 100%; 
    overflow:hidden; 
} 

如果沒有設置高度。XXpx;容器將適合的內容

+0

試過...沒有工作 – ale500

1

https://jsfiddle.net/dixalex/ojoevj1k/

小提琴具有使用.height()調用和JavaScript使用setInterval調用通過jQuery做的解決方案。每隔50毫秒,函數將檢查圖像高度是否與具有文本的容器高度相同。如果它們在像素高度上不相等,則直接應用CSS使它們相等。

由於這是動態的,我不必更改任何CSS。

var makeSameHeight = setInterval(function() { 
    var currentTextHeight = $('div.myClass-content').height() + "px"; 
    var imgDivHeight = $('div.imgUrl').height() + "px"; 
    if (currentTextHeight === imgDivHeight) 
    { 
     var doNothing = ""; 
    } else { 
     $('div.imgUrl, div.postImageUrl, a.myClass').css("height", currentTextHeight); 
    } 
}, 50); 
+0

謝謝,但我更喜歡只使用CSS :) – ale500