2017-06-02 56 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