解决方案 1:使用 Flex
我建议使用它flex
,justify-content: space-between
唯一的缺点是如果您支持旧版浏览器,例如 IE10,那么您可以查看https://caniuse.com/#search=flex了解更多信息。
至于space-between
根据MDN简单
项目沿主轴均匀分布在对齐容器内。每对相邻项目之间的间距是相同的。第一项与主开始边缘齐平,最后一项与主结束边缘齐平。
意思是,它将使第一个孩子与父母的开头对齐,最后一个孩子与结尾对齐,剩余空间在其余孩子之间平均分配(如果存在),如果是,这将为您提供所需的img
布局无论有多少个孩子,总是最后一个孩子div
。
就个人而言,我会发现 usingflex
是在页面上“定位”和“布局”不同元素的最方便和最简洁的方法之一。
你可以找到下面的代码和一个工作小提琴here
HTML
<ol class="step-list">
<li class="step">
<p>Step 1</p>
<img src="https://placehold.it/150x150?text=Step1" alt="">
</li>
<li class="step">
<p>Step 2</p>
</li>
<li class="step">
<p>Step 3</p>
</li>
<li class="step">
<p>Step 4</p>
<img src="https://placehold.it/150x150?text=Step4" alt="">
</li>
</ol>
CSS
.step-list {
list-style: none;
}
.step {
display: flex;
justify-content: space-between;
}
解决方案 2:使用浮点数
您也可以继续使用float
,但在这种情况下,您需要清除p
而不是清除img
并浮动它。
由于包含元素的所有元素都是浮动的,因此clearfix
在标签中添加一个很重要,不要折叠成任何东西,您可以在此处li
找到更多信息。
所以你的代码会喜欢这个,你可以在这里找到一个工作小提琴
HTML
<ol class="step-list">
<li class="step">
<p>Step 1</p>
<img src="http://placehold.it/150x150?text=Step1" alt="">
</li>
<li class="step">
<p>Step 2</p>
</li>
<li class="step">
<p>Step 3</p>
</li>
<li class="step">
<p>Step 4</p>
<img src="http://placehold.it/150x150?text=Step4" alt="">
</li>
</ol>
CSS
.step-list {
list-style: none;
}
.step img {
float: right;
}
.step p {
float: left;
}
/*This is what is called a clearfix solution, for the floating problem*/
.step::after {
content: "";
display: block;
clear: both;
}
如果有任何不清楚的地方,请随时问我更多问题。