将 1 个大图像与 2 个小图像完美对齐,然后将其放入灵活的容器中
Perfectly Align 1 large Image with 2 small ones next two it in a flexible container
我想用三个图像实现一个灵活的容器。一个大的在左边,两个小的(大约四分之一大小)在它的右边对齐:
调整浏览器大小时 window,我希望三张图片在保持原始比例的同时进行相应调整,以便大图片的基线与下方小图片的基线保持对齐。
到目前为止,我已经尝试了以下代码:
<div id="space">
<div id="large">
<img src="http://placehold.it/640x420" />
</div>
<div class="small">
<img src="http://placehold.it/320x200" />
</div>
<div class="small">
<img src="http://placehold.it/320x200" />
</div>
</div>
#space {
width:100%;
}
#large {
width:60%;
float:left;
margin:1% 1%;
padding:0px;
}
.small {
width:30%;
float:left;
margin:1% 1%;
padding:0px;
}
img {
width:100%;
height:auto;
padding:0px;
margin:0px;
}
如果图片略高于允许的比例,图片应在相应容器中垂直居中,隐藏溢出。
您可以在 JSFIDDLE 上找到此代码:https://jsfiddle.net/u8kksgbq/12/
请帮忙 - 我一直在尝试,但没有找到解决方案。
我不知道这个答案有多大,但我试了一下。
您必须在小图像和大图像之间放置一个垂直分隔符,这样您就可以在 width: xx%;
中指定它们之间的 "fake" 边距
至于水平分隔符,我试过了,没搞定。我能看到的唯一解决方案是创建一个透明图像并放在它们之间。设置它的 width: 30%
,就像照片一样,这样它也会保留 height: auto
。
感谢您的回答。这是我的最终解决方案:
<section id="contact-pics">
<div class="pic-large">
<div class="dummy"></div>
<div class="pic-content">
<img src="http://192.168.178.20"/>
</div>
</div>
<div class="v-spacer">
<div class="dummy"></div>
<div class="pic-content">
</div>
</div>
<div class="pic-small">
<div class="dummy"></div>
<div class="pic-content">
<img src="http://192.168.178.20"/>
</div>
</div>
<div class="h-spacer">
<div class="dummy"></div>
<div class="pic-content">
</div>
</div>
<div class="pic-small">
<div class="dummy"></div>
<div class="pic-content">
<img src="http://192.168.178.20"/>
</div>
</div>
</section>
和 CSS:
#contact-pics {
img {
width: 100%;
height: auto;
}
overflow: auto;
.pic-large {
display: inline-block;
position: relative;
width: 65.99%;
float:left;
.dummy {
padding-top: 62%;
}
}
.pic-small {
display: inline-block;
position: relative;
width: 32.8%;
float:left;
.dummy {
padding-top: 62%;
}
}
.v-spacer {
display: inline-block;
position: relative;
width: 1.2%;
float:left;
.dummy {
padding-top: 2535%;
}
}
.h-spacer {
display: inline-block;
position: relative;
width: 32.333333%;
float:left;
.dummy {
padding-top: 2.4%;
}
}
.pic-content {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
}
猜想有更简单的解决方案,但这个绝对有效:-)
感谢您的提问,我已经测试了一些解决方案,发现 @ 的答案是正确的,但代码放置不正确。我编辑了 CSS 如下:
#contact-pics {
overflow: auto;
}
#contact-pics img {
width: 100%;
height: auto;
}
.pic-large {
display: inline-block;
position: relative;
width: 65.99%;
float:right;
}
.pic-large .dummy {
padding-top: 62%;
}
.pic-small {
display: inline-block;
position: relative;
width: 32.8%;
float:right;
}
.pic-small .dummy {
padding-top: 62%;
}
.v-spacer {
display: inline-block;
position: relative;
width: 1.2%;
float:right;
}
.v-spacer .dummy {
padding-top: 2535%;
}
.h-spacer {
display: inline-block;
position: relative;
width: 32.333333%;
float:right;
}
.h-spacer .dummy {
padding-top: 2.4%;
}
.pic-content {
position: absolute;
/*top: 0;*/
bottom: 0;
left: 0;
right: 0;
}
我想用三个图像实现一个灵活的容器。一个大的在左边,两个小的(大约四分之一大小)在它的右边对齐:
调整浏览器大小时 window,我希望三张图片在保持原始比例的同时进行相应调整,以便大图片的基线与下方小图片的基线保持对齐。
到目前为止,我已经尝试了以下代码:
<div id="space">
<div id="large">
<img src="http://placehold.it/640x420" />
</div>
<div class="small">
<img src="http://placehold.it/320x200" />
</div>
<div class="small">
<img src="http://placehold.it/320x200" />
</div>
</div>
#space {
width:100%;
}
#large {
width:60%;
float:left;
margin:1% 1%;
padding:0px;
}
.small {
width:30%;
float:left;
margin:1% 1%;
padding:0px;
}
img {
width:100%;
height:auto;
padding:0px;
margin:0px;
}
如果图片略高于允许的比例,图片应在相应容器中垂直居中,隐藏溢出。
您可以在 JSFIDDLE 上找到此代码:https://jsfiddle.net/u8kksgbq/12/
请帮忙 - 我一直在尝试,但没有找到解决方案。
我不知道这个答案有多大,但我试了一下。
您必须在小图像和大图像之间放置一个垂直分隔符,这样您就可以在 width: xx%;
至于水平分隔符,我试过了,没搞定。我能看到的唯一解决方案是创建一个透明图像并放在它们之间。设置它的 width: 30%
,就像照片一样,这样它也会保留 height: auto
。
感谢您的回答。这是我的最终解决方案:
<section id="contact-pics">
<div class="pic-large">
<div class="dummy"></div>
<div class="pic-content">
<img src="http://192.168.178.20"/>
</div>
</div>
<div class="v-spacer">
<div class="dummy"></div>
<div class="pic-content">
</div>
</div>
<div class="pic-small">
<div class="dummy"></div>
<div class="pic-content">
<img src="http://192.168.178.20"/>
</div>
</div>
<div class="h-spacer">
<div class="dummy"></div>
<div class="pic-content">
</div>
</div>
<div class="pic-small">
<div class="dummy"></div>
<div class="pic-content">
<img src="http://192.168.178.20"/>
</div>
</div>
</section>
和 CSS:
#contact-pics {
img {
width: 100%;
height: auto;
}
overflow: auto;
.pic-large {
display: inline-block;
position: relative;
width: 65.99%;
float:left;
.dummy {
padding-top: 62%;
}
}
.pic-small {
display: inline-block;
position: relative;
width: 32.8%;
float:left;
.dummy {
padding-top: 62%;
}
}
.v-spacer {
display: inline-block;
position: relative;
width: 1.2%;
float:left;
.dummy {
padding-top: 2535%;
}
}
.h-spacer {
display: inline-block;
position: relative;
width: 32.333333%;
float:left;
.dummy {
padding-top: 2.4%;
}
}
.pic-content {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
}
猜想有更简单的解决方案,但这个绝对有效:-)
感谢您的提问,我已经测试了一些解决方案,发现 @ 的答案是正确的,但代码放置不正确。我编辑了 CSS 如下:
#contact-pics {
overflow: auto;
}
#contact-pics img {
width: 100%;
height: auto;
}
.pic-large {
display: inline-block;
position: relative;
width: 65.99%;
float:right;
}
.pic-large .dummy {
padding-top: 62%;
}
.pic-small {
display: inline-block;
position: relative;
width: 32.8%;
float:right;
}
.pic-small .dummy {
padding-top: 62%;
}
.v-spacer {
display: inline-block;
position: relative;
width: 1.2%;
float:right;
}
.v-spacer .dummy {
padding-top: 2535%;
}
.h-spacer {
display: inline-block;
position: relative;
width: 32.333333%;
float:right;
}
.h-spacer .dummy {
padding-top: 2.4%;
}
.pic-content {
position: absolute;
/*top: 0;*/
bottom: 0;
left: 0;
right: 0;
}