2017-06-02 57 views
0

我試圖通過css製作相同的(先驗未知)寬度和高度。CSS:高度=寬度(另一種情況)

有做這件事(12)的多種方法,但任何沒有我的情況下工作:

.cont{height: 150px; width: 300px; background: lightgray;} /*size is unknow*/ 
 
.cont>div:nth-child(odd){background:pink;} 
 
.cont>div:nth-child(even){background:green;} 
 
.bordered{border:1px solid red;} 
 

 
.square{ 
 
\t position: relative; 
 
\t width: auto; \t \t /* desired width */ 
 
} 
 
.square:before{ 
 
\t content: ""; 
 
\t display: block; 
 
\t padding-top: 100%; \t /* initial ratio of 1:1*/ 
 
} 
 
.square>div{ 
 
\t position: absolute; 
 
\t top: 0; 
 
\t left: 0; 
 
\t bottom: 0; 
 
\t right: 0; 
 
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 
<div class="cont"> 
 
    <div class="col-xs-4">a 
 
    <div class="square"><div class="bordered"><img src="http://lorempixel.com/125/100">red bordered SQUARE auto width does not work, content size is unknow!</div> 
 
    </div> 
 
    </div> 
 
    <div class="col-xs-4">b 
 
    </div> 
 
    <div class="col-xs-4">c 
 
    </div> 
 
</div>

前提

  • 的廣場的父母或他們的維度是未知的。
  • 正方形或其尺寸的內容是未知的(我把一些圖像與一些文本里面,只是爲了給容器一些異構內容)。
  • 所以我無法控制任何這些(父母或孩子),也不能修改它的屬性。
  • 我可以控制的唯一東西是元素或/和其直接(和唯一)子元素。

問題:如何實現其在這種情況下,一個CSS (紅色邊框的),而無需指定像素寬度(保持它的「自動」的內容)?

+0

目前還不清楚你在問什麼。你的代碼絕對不是你正面臨的問題的一個完整的,最小的例子。 (請參閱https://stackoverflow.com/help/mcve尋求幫助。) –

+0

@AnthonyHilyard我在編輯中指定了該問題 – Serge

回答

0

我已經調用了平方類內部的img以匹配它的容器的尺寸。只是兩個調整,一個與CSS的IMG元素:

.square img{ 
    height:auto; 
    width:100%; 
} 

我調整了你請求的lorempixel圖像的高度。

<img src="http://lorempixel.com/125/125"></div> 

看看這個jsfiddle

+0

廣場的內容未知。我無法控制它。此外,廣場上所有可能的父母都是未知的......我給出的例子只是爲了能夠形象化無限組合的情況...... – Serge

0

嘗試使類<img>標籤的邊界:

.cont{height: 300px; width: 500px; background: lightgray;} 
 
.cont>div:nth-child(odd){background:pink;} 
 
.cont>div:nth-child(even){background:green;} 
 
.bordered{border:1px solid red;} 
 

 
.square{ 
 
\t position: relative; 
 
\t width: auto; \t \t /* desired width */ 
 
} 
 
.square:before{ 
 
\t content: ""; 
 
\t display: block; 
 
\t padding-top: 100%; \t /* initial ratio of 1:1*/ 
 
} 
 
.square>div{ 
 
\t position: absolute; 
 
\t top: 0; 
 
\t left: 0; 
 
\t bottom: 0; 
 
\t right: 0; 
 
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 
<div class="cont"> 
 
    <div class="col-xs-4">a 
 
    <div class="square"><div><img class="bordered" src="http://lorempixel.com/125/100"></div></div></div> 
 
    <div class="col-xs-4">b 
 
    </div> 
 
    <div class="col-xs-4">c 
 
    </div> 
 
</div>

我也改變了.cont div的大小,使圖像會合適。

+0

由於容器寬度和高度是未知的(我設置它只是爲了設置一些東西)。所以修改它們並不會改變問題... – Serge

+1

尺寸變化看起來更好看,班級變化就是我關注的重點。 –

+0

感謝您的幫助。我需要一個可以包含各種內容的div,使它成爲一個正方形......我把圖像放在裏面,以展示我的廣場可以放在裏面的不同類型的內容,所以不是圖像可能會有另一種東西......類我需要製作廣場是.square的內容,而不是特定的圖片或其他標記... – Serge