添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

内联元素的右对齐很简单,只需要在其父元素上添加 text-align: right; 即可。

不过值得注意的是, text-align: right; 对于内联块级元素,比如 img 等同样适用。

<div class="out">
    <img src="./img/header1.jpg" alt="" class="in">
复制代码
.out {
    background-color: cornsilk;
    text-align: right;
.in {
    width: 100px;
    height: 100px;
复制代码

效果:

块级元素的水平居右方式就有好几种了。

方式一:右浮动

大家之所以没太关注块级元素水平居右,应该很大程度上也是因为浮动,以为一行 float: right; 便能搞定。

但浮动会造成父元素高度的坍塌,所以在使用 float 属性时,往往我们还需要清楚浮动带来的副作用。

方式二:绝对定位

给元素设置 postion: absolute; right: 0; 也可以实现水平居右,但由于绝对定位,元素脱离了标准文档流。

为了避免给后面元素的位置造成影响,往往还添加一个相对定位的父元素,并且父元素需要知道子元素的高度。

<div class="demo">
    <h3>通过 postion 属性实现:</h3>
    <div class="box2">
        <img src="./img/header1.jpg" alt="girl" class="item">
        <div class="out">
            <img src="./img/header2.jpg" alt="girl" class="item p-right">
        <img src="./img/header3.jpg" alt="girl" class="item">
        <div class="out">
            <img src="./img/header4.jpg" alt="girl" class="item p-right">
复制代码
.demo {
    width: 600px;
    margin: 0 auto;
.box2 {
    background-color: bisque;
.item {
    width: 100px;
    height: 100px;
    margin-bottom: 10px;
.item:last-child {
    margin-bottom: 0;
.out {
    position: relative;
    height: 100px;
.p-right {
    position: absolute;
    right: 0;
复制代码

方式三:flex 布局

以前需要掌握各种技巧才能实现的复杂布局,通过 flex 都可以轻松实现,所以元素水平居右这种需求,对于 flex 来说也是小菜一碟。

<div class="demo">
    <h3>通过 flex 布局实现:</h3>
    <div class="box1">
        <img src="./img/header1.jpg" alt="girl" class="item">
        <img src="./img/header2.jpg" alt="girl" class="item flex-end">
        <img src="./img/header3.jpg" alt="girl" class="item">
        <img src="./img/header4.jpg" alt="girl" class="item flex-end">
复制代码
.demo {
    width: 600px;
    margin: 0 auto;
.box1 {
    display: flex;
    flex-direction: column;
    background-color: bisque;
.item {
    width: 100px;
    height: 100px;
    margin-bottom: 10px;
.item:last-child {
    margin-bottom: 0;
.flex-end {
    align-self: flex-end;
复制代码

效果:

方式四:margin 与 auto

很多人天天都在使用 margin: 0 auto; 来实现块级元素居中,但却不知道 auto 这个值在 margin 属性中的具体表现。

我们将块级元素的某一个水平方向的 margin 值设置为 auto,那么它就会自动填充剩余空间。

如果两个水平方向的 margin 值都为 auto,那么元素就会居中。

<h3>通过 margin 属性实现:</h3>
<div class="box2">
    <img src="./img/header1.jpg" alt="girl" class="item">
    <img src="./img/header2.jpg" alt="girl" class="item ml-auto">
    <img src="./img/header3.jpg" alt="girl" class="item">
    <img src="./img/header4.jpg" alt="girl" class="item ml-auto">
复制代码
.demo {
    width: 600px;
    margin: 0 auto;
.box2 {
    background-color: bisque;
.item {
    display: block;
    width: 100px;
    height: 100px;
    margin-bottom: 10px;
.item:last-child {
    margin-bottom: 0;
.ml-auto {
    margin-left: auto;
复制代码

效果:

方式一和方式二虽然都能实现元素水平居右,但都需要更多的代码去处理其副作用。而 flex 布局和 margin + auto 的方式则更显完美。

在需求比较简单时,推荐使用 margin-left: auto; 的方式,一行代码搞定。

布局要求复杂时,那么更强大的 flex 布局则是最佳选择。