我的问题
我正在尝试为每个图像制作一个在其下面带有标题的照相馆。但是我遇到的问题是标题一直浮动在图像旁边。作为参考,请参见此screenshot。
CSS代码段
@media only screen and (max-width: 600px) {
.boxGallery {
margin-left: 50%;
margin-right: 50;
}
}
.GalleryBox {
display: block;
padding-left: 100px;
padding-right: 100px;
width: 100%;
}
.boxGallery {
display: block;
margin-left: auto;
margin-right: auto;
width: 80%;
}
div.gallery {
margin: 5px;
float: left;
width: 250px;
}
div.gallery img {
width: 250px;
height: 190px;
}
div.desc {
padding: 15px;
text-align: center;
}
<div class="boxGallery">
<div class="gallery">
<img src="https://placeimg.com/640/480/any">
</div>
<div class="gallery">
<img src="https://placeimg.com/640/480/any">
</div>
</div>
<div class="desc">
<p>Auvergne, Frankrijk 2018</p>
</div>
<div class="boxGallery">
<div class="gallery">
<img src="https://placeimg.com/640/480/any">
</div>
<div class="gallery">
<img src="https://placeimg.com/640/480/any">
</div>
</div>
有关如何解决此问题的任何帮助。
答案 0 :(得分:0)
您已经<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [['$','$'], ['\\(','\\)']]
},
"HTML-CSS": {
linebreaks: { automatic: true }
},
SVG: {
linebreaks: { automatic: true }
}
});
</script>
浮动了,所以它弹出了正常的HTML流程,并且父级不知道子元素的实际高度。您的.gallery
需要“ clear-fix”来清除浮动元素的高度:
.boxGallery
有关它的更多信息here
.boxGallery:after {
visibility: hidden;
display: block;
content: "";
clear: both;
height: 0;
}
@media only screen and (max-width: 600px) {
.boxGallery {
margin-left: 50%;
margin-right: 50;
}
}
.boxGallery {
display: block;
margin-left: auto;
margin-right: auto;
width: 80%;
}
.boxGallery:after {
display: block;
content: "";
clear: both;
position: relative;
}
div.gallery {
margin: 5px;
float: left;
width: 250px;
}
div.gallery img {
width: 250px;
height: 190px;
}
div.desc {
padding: 15px;
text-align: center;
}
答案 1 :(得分:0)
因为您正在浮动.boxGallery
中的元素,所以父项目失去了尺寸(因为它不再考虑浮动内容了)。由于子项是浮动的,因此标题将定位为浮动项的“填充符”。
您可以通过所谓的clearfix解决此问题。这些天,一个clearfix很简单:
.clearfixme::after {
content: '';
clear: both;
display: table;
}
@media only screen and (max-width: 600px) {
.boxGallery {
margin-left: auto;
margin-right: auto;
}
}
.GalleryBox {
display: block;
padding-left: 100px;
padding-right: 100px;
width: 100%;
}
.boxGallery {
display: block;
margin-left: auto;
margin-right: auto;
width: 80%;
}
.boxGallery::after {
content: '';
clear: both;
display: table;
}
div.gallery {
margin: 5px;
float: left;
width: 250px;
}
div.gallery img {
width: 250px;
height: 190px;
}
div.desc {
padding: 15px;
text-align: center;
}
<div class="boxGallery">
<div class="gallery">
<img src="https://placeimg.com/640/480/any">
</div>
<div class="gallery">
<img src="https://placeimg.com/640/480/any">
</div>
</div>
<div class="desc">
<p>Auvergne, Frankrijk 2018</p>
</div>
<div class="boxGallery">
<div class="gallery">
<img src="https://placeimg.com/640/480/any">
</div>
<div class="gallery">
<img src="https://placeimg.com/640/480/any">
</div>
</div>
或者,我将为此使用flex。我会怎么做:
.boxGallery {
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;
}
.gallery {
min-width: 120px;
width: 25%;
margin: 12px;
}
.gallery img {
width: 100%;
height: auto;
}
.desc {
padding: 15px;
text-align: center;
}
<div class="boxGallery">
<div class="gallery">
<img src="https://placeimg.com/640/480/any">
</div>
<div class="gallery">
<img src="https://placeimg.com/640/480/any">
</div>
</div>
<div class="desc">
<p>Auvergne, Frankrijk 2018</p>
</div>
<div class="boxGallery">
<div class="gallery">
<img src="https://placeimg.com/640/480/any">
</div>
<div class="gallery">
<img src="https://placeimg.com/640/480/any">
</div>
<div class="gallery">
<img src="https://placeimg.com/640/480/any">
</div>
</div>
答案 2 :(得分:0)
由于您浮动了图像,因此图像被从正常流程中删除,并且.boxGallery
元素的行为就好像它们不再存在了,只承认.desc
元素。要解决此问题,您需要添加一个明确的修复程序,如下所示:
.boxGallery::after {
content: "";
display: table;
clear: both;
}
您可以阅读有关'clearfixing' here
的更多信息要使图像居中,请在断点处添加媒体查询,该断点处的视口不够大,不允许图像彼此相邻放置。我发现视口低于666px时就是这种情况,此时请删除使图像浮动并居中对齐。
@media screen and (max-width: 666px) {
div.gallery {
float: none;
margin-left: auto;
margin-right: auto;
}
}
请参见下面的演示
@media only screen and (max-width: 600px) {
.boxGallery {
margin-left: 50%;
margin-right: 50%;
}
}
.GalleryBox {
display: block;
padding-left: 100px;
padding-right: 100px;
width: 100%;
}
.boxGallery {
display: block;
margin-left: auto;
margin-right: auto;
width: 80%;
}
.boxGallery::after {
content: "";
display: table;
clear: both;
}
div.gallery {
margin: 5px;
float: left;
width: 250px;
}
div.gallery img {
width: 250px;
height: 190px;
}
div.desc {
padding: 15px;
text-align: center;
}
@media screen and (max-width: 666px) {
div.gallery {
float: none;
margin-left: auto;
margin-right: auto;
}
}
<div class="boxGallery">
<div class="gallery">
<img src="https://placeimg.com/640/480/any">
</div>
<div class="gallery">
<img src="https://placeimg.com/640/480/any">
</div>
</div>
<div class="desc">
<p>Auvergne, Frankrijk 2018</p>
</div>
<div class="boxGallery">
<div class="gallery">
<img src="https://placeimg.com/640/480/any">
</div>
<div class="gallery">
<img src="https://placeimg.com/640/480/any">
</div>
</div>