我在一个div中有多个元素。
我想将一个元素对齐为“text-align:right”,另一个元素为“text-align:left”
检查以下代码:
<div class="image_meaning" style="display: none; background-color: white; height: 35px; margin-left: 1px;">
<input type="checkbox" id="points" value="Temporal Filter" style="text-align: left; "/>
<label for="tempral_filter" style="text-align: left; ">Points</label>
<img style="text-align: right;" src="{{ STATIC_URL }}img/cross.png"/>-abc
<img style="text-align: right;" src="{{ STATIC_URL }}img/blue_triangle.png"/>-cde
</div>
但是当我运行代码时,它会将元素放在左边。
任何想法怎么做?
答案 0 :(得分:13)
有几种方法可以解决您的问题,最常见的方法是使用css float
属性(截至2016年)。更现代的方式是使用flexbox或网格。
flexbox
您可以使用display: flex
执行此操作。
Flexbox仅为supported by newer browsers,如果IE(9及以下)是您的朋友,请远离此方法。
示例html:
<div class="wrapper">
<div class="block"></div>
<div class="block"></div>
</div>
示例css:
.wrapper { display: flex; }
.block { width: 50%; }
grid
您可以使用新的display: grid
来执行此操作。
网格布局仅为supported by the most modern browsers(2017年9月),如果您正在使用前沿技术,那么很好,如果不使用flex
。
示例html:
<div class="wrapper">
<div class="block"></div>
<div class="block"></div>
</div>
示例css:
.wrapper {
display: grid;
grid-template-columns: 1fr 1fr;
}
float
css float
属性是执行此操作的经典方式,可以追溯到史前时代,因此它基本上支持每个浏览器。唯一需要注意的是clearfix问题(见下文)。
示例html:
<div class="wrapper">
<div class="block-left"></div>
<div class="block-right"></div>
</div>
示例css:
.block-left { float: left; }
.block-right { float: right; }
请注意浮动元素会导致父母在身高时忽略它们。如果这是一个问题(通常是这样),您可以使用clearfix hack来解决这种情况。
您可以这样定义:
.cf:before,
.cf:after {
content: " ";
display: table;
}
.cf:after { clear: both; }
然后在你的父元素上:
<div class="wrapper cf">
这将允许父级正确接收浮动元素高度。
详细了解what is the clearfix hack。
inline-block
您也可以使用inline-block属性将元素并排放置。
请注意,inline-block
选项需要考虑块之间html中的空格。要解决此问题,请删除下面的空格,添加负边距或将父级font-size
定义为0。
示例html:
<div class="wrapper">
<div class="block"></div><div class="block"></div>
</div>
示例css:
.block { display: inline-block; }
/* Optional zero font for wrapper
Then reset blocks to normal font-size */
.wrapper { font-size: 0; }
.block { font-size: 16px; }
/* Optional negative margin if you can't
remove space manually in the html.
Note that the number is per use case. */
.block { margin-left: -.25em; }
position: absolute
另一种方法是使用相对容器绝对定位元素。在构建响应式布局等方面时,此方法的灵活性略低于其他方法。
示例html:
<div class="wrapper">
<div class="block block-left"></div>
<div class="block block-right"></div>
</div>
示例css:
.wrapper { position: relative; }
.block { position: absolute; }
.block-left { left: 0; }
.block-right { right: 0; }
您使用的text-align
css属性会影响内联元素和文本,但不能像使用float
属性那样使用它来移动元素。
text-align
属性会影响它所应用元素的子元素。
答案 1 :(得分:1)
使用float: left
和float: right
代替text-align