水平列表的底部对齐方式的探讨(1、用inline-block+vertical-align 2、用table-cell+vetical-align 3、用flex方式)

实现水平列表的底部对齐有许多种方式:

1、用inline-block+vertical-align

2、用table-cell+vetical-align

3、用flex方式

此外,还可以用变形、绝对定位方式,但是用变形和绝对定位方式太过于复杂。

这里还是只介绍前三种方式,其中前两种的唯一区别就是第二种用了display:table-cell。

HTML代码部分:

 <body>
    <div class="parent">
        <div id="child1" class="child">1</div>
        <div id="child2" class="child">2</div>
        <div id="child3" class="child">3</div>
        <div id="child4" class="child">4</div>
    </div>
</body>

各方案的公共CSS部分:

/* 设置模拟高度 */
.parent{width: 600px; height: 400px;}
.parent{border: 5px dashed red; /* 设置边框,便于观察 */ }
#child1{width: 25%; height: 80%; background-color: #0D6798;}
#child2{width: 25%; height: 60%; background-color: #98050C;}
#child3{width: 25%; height: 40%; background-color: #149818;}
#child4{width: 25%; height: 20%; background-color: #169999;}

第1种:inline-block + vertical-align

  1. /* 方案1:inline-block+vertical-align */
  2. .parent{font-size: 0;  -webkit-text-size-adjust: none; } /* 消除将非inline-block元素强制转成inline-block导致的间隙问题 */
  3. .child{display: inline-block; vertical-align: baseline; } /*所有子元素都设置为inline-block */

注意上面的vertical-align属性是作用在子元素上,而不是在父元素上。因为行内元素是水平排列的,而父元素只能设置他们在水平方向上的对齐方式。

这时你会发现虽然子元素之间对齐了,但是相对于父元素还是没有底部对齐。这个可以通过下面的table-cell方案来解决。

第2种:table-cell + vetical-align

/* 方案2:table-cell */
 .parent{font-size: 0;  -webkit-text-size-adjust: none; }  /*消除将非inline-block元素强制转成inline-block导致的间隙问题  */
.parent{display: table-cell; vertical-align: bottom;}  /*加了table-cell的最大好处就是可以在父元素上设置子元素在垂直方向上的排列 */
.child{display: inline-block;vertical-align: bottom;}

这个例子与上个例子的最大区别就是加了display:table-cell属性,加了这个属性之后,子元素就像表格中的单元格一样,自然也可以在父元素上使用vertical-align属性对子元素进行垂直方向上的对齐方式设定了。父元素上的vertical-bottom是子元素整体对于父元素的对齐方式、子元素上的vertical-align是子元素之间的对齐方式。这样也就解决了第一个方案中存在的缺陷:

第3种:flex

/* 方案3:flex */
.parent{display: flex; align-items: flex-end;}

align-items属性表示辅轴方向对齐方式为从下到上。

本文转载自:网易前端微专业讨论区,陈裕荣编写,本人做了修改和完善

时间: 2024-10-06 00:16:12

水平列表的底部对齐方式的探讨(1、用inline-block+vertical-align 2、用table-cell+vetical-align 3、用flex方式)的相关文章

【IOS】将字体大小不同的文字底部对齐

从WP转IOS了,还是放不下...... 在项目中,要实现如图多个不同大小的文字   底部对齐的效果   像下面这样: (想要的效果) 以为用三个UIFont不同的UILabel  之后让他们底部对齐就可以了,但是效果是下面这样的:  (不想要的效果) 底部完全不对齐呀,为什么"1314"比两边高出了那么多呀!!!!强迫症不能忍呀!!! ---------------------------------------------------------------------------

ListView 基础列表组件、水平 列表组件、图标组件

一.Flutter 列表组件概述 列表布局是我们项目开发中最常用的一种布局方式.Flutter 中我们可以通过 ListView 来定义 列表项,支持垂直和水平方向展示.通过一个属性就可以控制列表的显示方向.列表有一下 分类: 1.垂直列表 2.垂直图文列表 3.水平列表 4.动态列表 5.矩阵式列表 二.Flutter 列表参数 三.Flutter 基本列表 四.Flutter 水平列表 ListView( scrollDirection: Axis.horizontal ) 原文地址:htt

box-align,box-pack实现元素垂直底部对齐

自己写了一个图表样式,利用box-align,box-pack属性end实现了其内部元素垂直底部对齐,在利用该属性前,设置其display属性为box即可. css代码: .tubiao-content{width: 90%;margin: auto;} .tubiao{border-bottom: solid 1px #d0cece; padding-top: 2.4rem;} .time01 { position: relative; float: left; margin-left:12%

CSS布局之div交叉排布与底部对齐--flex实现

最近在用wordpress写页面时,设计师给出了一种网页排布图样,之前从未遇到过,其在电脑上(分辨率大于768px)的效果图如下: 而在手机(分辨率小于等于768px)上要求这样排列: 我想到了两种方法 第一种是用bootstrap的row.col-md配合col-md-push.col-md-pull来实现,代码如下: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8">

在div中使用css让文字底部对齐的方法

css对文字的布局上没有靠容器底部对齐的参数,不过我们可以使用position的相对和绝对定位功能轻松实现文字靠近div底部对齐,并且靠近的距离可以调节,精确到像素,在网上搜集到三段代码如下.由www.169it.com 搜集整理 代码1: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 <!DOCTYPE HTML PUBLIC   "-//W3C//DTD HTML 4.01 Transit

Android中RelativeLayout的字符水平(垂直居中)对齐

[背景] 此处Android中显示出来的TextView中的内容,水平中间不对其. 想要实现水平居中对齐. [折腾过程] 1.搜: android RelativeLayout horizontal center 参考: android – TextView horizontal center in RelativeLayout – Stack Overflow 试过了: android:layout_centerHorizontal="true" 但没用. 2.后来看到: relat

HTML5:footer定位(底部+居中)的探讨+div图片居中问题

初学HTML+CSS布局,尝试自己写一个百度首页,但是footer的定位遇到麻烦并且百度没有好的解决方法,在此记录下逐步的过程.记录之,备忘. 初学,解决方法难免出现不妥之处,也请看到这篇文章的前辈指点一二,在此先谢过. 首先是设置为 footer{     clear: both;     display: block; position: absolute; bottom: 100px; } 时效果为:确实绝对定位到了底部,但是由于是绝对定位,使用 footer{     clear: bo

有关不同实现类的List的三种遍历方式的探讨

我们知道,List的类型有ArrayList和LinkedList两种,而曾经的Vector已经被废弃. 而作为最常用的操作之一,List的顺序遍历也有三种方式:借助角标的传统遍历.使用内置迭代器和显式迭代器. 下面,将首先给出两种种不同类型实现的实验结果,之后,将会通过分析JAVA中List的各种实现,来探讨造成实验结果的原因. 1.随机数据的生成 package temp; import java.io.*; import java.util.Random; public class Dat

iOS-QQ好友列表 iOS 页面间几种传值方式(属性,代理,block,单例,通知)

主要是 点击按钮实现下拉 刷新数据 页面间传值 // // HMFriendsModel.h // QQ好友列表 // // Created by YaguangZhu on 15/9/1. // Copyright (c) 2015年 YaguangZhu. All rights reserved. // #import <Foundation/Foundation.h> @interface HMFriendsModel : NSObject @property(nonatomic,cop