浮动 div 布局不正确
Floating divs not laying out properly
我向左浮动了一堆 div,但出于某种原因,它们的布局很奇怪。我试着做 4 行,但它很随机。我将得到第 3 行,然后是 4,然后是 1。第 1 行然后是 4。不确定为什么会这样,希望得到帮助。这是我的代码:
.pdfs {
width: 22%;
margin-right: 10px;
margin-bottom: 10px;
float: left;
}
.pdfs:nth-child(4n+5) {
clear: both
}
.pdfs img {
width: 100%;
}
<div class="pdfs">
<a href="/assets/site/docs/vet.pdf" target="_blank">
<img src="/assets/site/img/vet.png" />
<br />Veterinarian</a>
</div>
<div class="pdfs">
<a href="/assets/site/docs/platform-catalog.pdf" target="_blank">
<img src="/assets/site/img/platform-catalog.png" />
<br />Contact Platform Catalog</a>
</div>
<div class="pdfs">
<a href="/assets/site/docs/brochure.pdf" target="_blank">
<img src="/assets/site/img/brochure.png" />
<br />Portanti Brochure</a>
</div>
<div class="pdfs">
<a href="/assets/site/docs/study.pdf" target="_blank">
<img src="/assets/site/img/diagnostic-equipment/img/study.jpg" />
<br />Pachachu Study</a>
</div>
<div class="pdfs">
<a href="/assets/site/docs/paper.pdf" target="_blank">
<img src="/assets/site/img/diagnostic-equipment/img/paper.jpg" />
<br />AddiPen Paper</a>
</div>
<div class="pdfs">
<a href="/assets/site/docs/presentationubm2015.pdf" target="_blank">
<img src="/assets/site/img/zqmppt.jpg" />
<br />ZQM in Dinners of Exterior Segment Pathing</a>
</div>
<div class="pdfs">
<a href="/assets/site/docs/pen.pdf" target="_blank">
<img src="/assets/site/img/flyer.jpg" />
<br />Pentt Product Flyer</a>
</div>
<div class="pdfs">
<a href="/assets/site/docs/equipment.pdf" target="_blank">
<img src="/assets/site/img/eguipment.jpg" />
<br />Direction Equipment</a>
</div>
基本问题是边距计算...如果您没有完全正确,那么您的浮动就会错位。
您的 parent div 宽度为 860px。
内部divs(每行)占88%(756.8px)。看到已经很乱了。
现在剩下 12% 或 103.2px 在 5 个间隙之间分布(记住 4 divs)但是 侧边距不会折叠所以你实际上是div增加 8 (1 + 2 + 2 +1),因此每个边距应为 103.2px / 8 = 12.9px。
但是,这不允许浏览器处理舍入(而且它们的处理方式各不相同,所以为了安全起见,我们会说 12.75px。
是不是很乱...但是有一个更简单的方法...以 % 为单位设置页边距。
然后它只是 12%/8 = 1.5%...让浏览器做它自己的事情。
选择哪种方式由你决定。
百分比演示
* {
box-sizing: border-box;
}
.wrap {
width: 860px;
margin: auto;
border:1px solid grey;
overflow: hidden;
}
.box {
width: 22%;
height: 50px;
background: red;
float: left;
/* margin calculation */
/* div widths total 756.8px*/
/* room available = 103.2px*/
/* number of gaps = 8 */
margin:10px 1.5%;
}
<div class="wrap">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
像素演示
* {
box-sizing: border-box;
}
.wrap {
width: 860px;
margin: auto;
border:1px solid grey;
overflow: hidden;
}
.box {
width: 22%;
height: 50px;
background: red;
float: left;
/* margin calculation */
/* div widths total 756.8px*/
/* room available = 103.2px*/
/* number of gaps = 8 */
margin:10px 12.75px;
}
<div class="wrap">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
我向左浮动了一堆 div,但出于某种原因,它们的布局很奇怪。我试着做 4 行,但它很随机。我将得到第 3 行,然后是 4,然后是 1。第 1 行然后是 4。不确定为什么会这样,希望得到帮助。这是我的代码:
.pdfs {
width: 22%;
margin-right: 10px;
margin-bottom: 10px;
float: left;
}
.pdfs:nth-child(4n+5) {
clear: both
}
.pdfs img {
width: 100%;
}
<div class="pdfs">
<a href="/assets/site/docs/vet.pdf" target="_blank">
<img src="/assets/site/img/vet.png" />
<br />Veterinarian</a>
</div>
<div class="pdfs">
<a href="/assets/site/docs/platform-catalog.pdf" target="_blank">
<img src="/assets/site/img/platform-catalog.png" />
<br />Contact Platform Catalog</a>
</div>
<div class="pdfs">
<a href="/assets/site/docs/brochure.pdf" target="_blank">
<img src="/assets/site/img/brochure.png" />
<br />Portanti Brochure</a>
</div>
<div class="pdfs">
<a href="/assets/site/docs/study.pdf" target="_blank">
<img src="/assets/site/img/diagnostic-equipment/img/study.jpg" />
<br />Pachachu Study</a>
</div>
<div class="pdfs">
<a href="/assets/site/docs/paper.pdf" target="_blank">
<img src="/assets/site/img/diagnostic-equipment/img/paper.jpg" />
<br />AddiPen Paper</a>
</div>
<div class="pdfs">
<a href="/assets/site/docs/presentationubm2015.pdf" target="_blank">
<img src="/assets/site/img/zqmppt.jpg" />
<br />ZQM in Dinners of Exterior Segment Pathing</a>
</div>
<div class="pdfs">
<a href="/assets/site/docs/pen.pdf" target="_blank">
<img src="/assets/site/img/flyer.jpg" />
<br />Pentt Product Flyer</a>
</div>
<div class="pdfs">
<a href="/assets/site/docs/equipment.pdf" target="_blank">
<img src="/assets/site/img/eguipment.jpg" />
<br />Direction Equipment</a>
</div>
基本问题是边距计算...如果您没有完全正确,那么您的浮动就会错位。
您的 parent div 宽度为 860px。
内部divs(每行)占88%(756.8px)。看到已经很乱了。
现在剩下 12% 或 103.2px 在 5 个间隙之间分布(记住 4 divs)但是 侧边距不会折叠所以你实际上是div增加 8 (1 + 2 + 2 +1),因此每个边距应为 103.2px / 8 = 12.9px。
但是,这不允许浏览器处理舍入(而且它们的处理方式各不相同,所以为了安全起见,我们会说 12.75px。
是不是很乱...但是有一个更简单的方法...以 % 为单位设置页边距。
然后它只是 12%/8 = 1.5%...让浏览器做它自己的事情。
选择哪种方式由你决定。
百分比演示
* {
box-sizing: border-box;
}
.wrap {
width: 860px;
margin: auto;
border:1px solid grey;
overflow: hidden;
}
.box {
width: 22%;
height: 50px;
background: red;
float: left;
/* margin calculation */
/* div widths total 756.8px*/
/* room available = 103.2px*/
/* number of gaps = 8 */
margin:10px 1.5%;
}
<div class="wrap">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
像素演示
* {
box-sizing: border-box;
}
.wrap {
width: 860px;
margin: auto;
border:1px solid grey;
overflow: hidden;
}
.box {
width: 22%;
height: 50px;
background: red;
float: left;
/* margin calculation */
/* div widths total 756.8px*/
/* room available = 103.2px*/
/* number of gaps = 8 */
margin:10px 12.75px;
}
<div class="wrap">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>