CSS两端对齐

flex

弹性盒模型flex作为强大的弹性布局方式,可以hold住大部分的布局效果,当然也包括两端对齐。可以使用主轴对齐justify-content的两端对齐属性space-between

justify-content: space-between;

如果要考虑flex三个版本的兼容,则使用如下代码

[注意]IE9-浏览器不支持

.justify-content_flex-justify{
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    -webkit-justify-content: space-between;
    justify-content: space-between;
}<style>body{margin: 0;}    
ul{margin: 0;padding: 0;list-style: none;}.list{width: 200px;overflow: hidden;border: 1px solid gray;background-color: lightgreen;line-height: 30px;}.in{background-color: lightblue;padding: 0 10px;}.display_flex{display: -webkit-box;display: -ms-flexbox;display: -webkit-flex;display: flex;}.display_flex > *{display: block;}.justify-content_flex-justify{-webkit-box-pack: justify;-ms-flex-pack: justify;-webkit-justify-content: space-between;justify-content: space-between;}</style><ul class="list display_flex justify-content_flex-justify">
    <li class="in">内容</li>
    <li class="in">样式</li>
    <li class="in">行为</li></ul>

text-align

水平对齐text-align本身就有一个属性值是两端对齐justify。但是,要注意的是,使用它实现两端对齐,需要注意在元素之间添加空白符(包括空格、换行符、制表符)才起作用。由于HTML结构中,<li>元素之间存在换行,所以不需要额外添加空白符

但仅仅是这样,元素也无法实现两端对齐效果

元素必须占满一行才行,如下所示。占满一行的元素可以实现两端对齐,没有占满的则无法实现

【text-align-last】

显然,上面的情况都不符合要求,这时就需要使用属性text-align-last,该属性用来规定如何对齐文本的最后一行

于是把text-align属性替换成text-align-last。但是,要兼容IE浏览器需要同时设置text-align:justify

[注意]safari浏览器、IOS、androis4.4-浏览器不支持

<style>body{margin: 0;}    
ul{margin: 0;padding: 0;list-style: none;}.list{width: 200px;overflow: hidden;border: 1px solid gray;background-color: lightgreen;line-height: 30px;text-align: justify;text-align-last: justify;}.in{background-color: lightblue;padding: 0 10px;display:inline-block;}</style><ul class="list ">
    <li class="in">内容</li>
    <li class="in">样式</li>
    <li class="in">行为</li>  </ul>

【after伪元素】

使用text-align-last可以实现两端对齐的效果,但是兼容性并不好。通过给父元素设置伪元素:after,并为伪元素设置inline-block,并设置宽度100%,相当于伪元素:after被挤到第二行。从而使原来的元素占满了第一行,触发了两端对齐的效果

这里要注意的是,因为空白会被解析为换行,所以可以通过设置父元素的高度height,并溢出隐藏,来解决多余的换行问题

<style>body{margin: 0;}    
ul{margin: 0;padding: 0;list-style: none;}.list{width: 200px;height: 30px;overflow: hidden;border: 1px solid gray;background-color: lightgreen;line-height: 30px;text-align: justify;}.in{background-color: lightblue;padding: 0 10px;display:inline-block;}.list:after{content:"";width:100%;display:inline-block;}</style><ul class="list ">
    <li class="in">内容</li>
    <li class="in">样式</li>
    <li class="in">行为</li>  </ul>

column

使用多列布局column也可以实现类似的效果。column-count定义了元素的列数,例子中有3个子元素,所以定义为3列。特别要注意的是,这时需要把子元素设置为block元素才会生效

[注意]IE9-浏览器不支持

<style>body{margin: 0;}    
ul{margin: 0;padding: 0;list-style: none;}.list{width: 200px;overflow: hidden;border: 1px solid gray;background-color: lightgreen;line-height: 30px;text-align: center;}.col3{-webkit-column-count:3;-moz-column-count:3;column-count:3;}.in{background-color: lightblue;padding: 0 10px;display:block;}</style><ul class="list col3">
    <li class="in">内容</li>
    <li class="in">样式</li>
    <li class="in">行为</li>  </ul>

如果子元素之间需要使用竖线,且竖线高度与子元素高度相同时,使用column-rule可方便的实现需求

<style>body{margin: 0;}    
ul{margin: 0;padding: 0;list-style: none;}.list{width: 200px;overflow: hidden;border: 1px solid gray;background-color: lightgreen;line-height: 30px;text-align: center;}.col3{-webkit-column-count:3;-moz-column-count:3;column-count:3;}.col-rule{-webkit-column-rule: 1px solid black;-moz-column-rule: 1px solid black;column-rule: 1px solid black;}.in{background-color: lightblue;padding: 0 10px;display:block;}</style><ul class="list col3 col-rule">
    <li class="in">内容</li>
    <li class="in">样式</li>
    <li class="in">行为</li>  </ul>
时间: 2024-10-12 10:49:04

CSS两端对齐的相关文章

css实现两端对齐的3种方法

<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <meta name="author" content="monicaqin"> <meta name="format-detection" content="telephone=no" /> &

实现段落文字两端对齐的css样式

有时候网站中的文字比较多,虽然为父元素设置了宽度,但是总是会出现两端参差不齐的情况,看起来不整齐.其实实现段落的两端对齐,只需要设置两个css 样式即可. .demo{ text-align: justify; text-justify: inter-ideograph;/*IE*/ } text-justify基本语法 语法:text-justify : auto |inter-word | newspaper | distribute | distribute-all-lines | int

css实现两端对齐效果

CSS实现两端对齐效果 两端对齐,从概念上来说,其实不难理解.如果不明白什么叫两端对齐,可以玩玩word等办公软件. 下面谈谈如何实现文本的两端对齐.我所知道的大概有以下几种方法 text-align w3school指出,text-align用于设置块级元素内文本的水平对齐方式.如果想使inline元素或inline-block元素居中对齐,可以使用text-align: center方法,对于block元素无法使用text-align实现居中对齐.如果想让block元素居中对齐,可以使用ma

css实现文本两端对齐

要实现文本两端对齐,自然会想到css属性text-align: justify;但是试过之后才发现这个属性没有起到作用,这是为什么呢?难道这个属性是个摆设吗?那肯定不是!一定是自己的问题. 查看html代码才知道,原来text-align: justify;这个css属性要起作用,那么html中模块之间一定要添加(空格.换行符.制表符),例如 <p> <span>专 场:</span> 东方源创文玩收藏拍卖专场 </p> <p> <span

css 文本两端对齐

在做表单时我们经常遇到让上下两个字段对齐的情况,比如姓名, 手机号码, 出生地.这样我们就要用到 text-align, text-justify样式了. text-align直接设为justify就行了,text-justify的情况就复杂了,可能有人对它还不熟悉.IE的取值如下: auto :允许浏览器用户代理确定使用的两端对齐法则 inter-word :通过增加字之间的空格对齐文本.该行为是对齐所有文本行最快的方法.它的两端对齐行为对段落的最后一行无效 newspaper : 通过增加或

css之文本两端对齐

在进行网页设计时,我们经常会看到这样的样式:文本两端对齐. css为我们提供了一个属性可以实现这样的效果:text-align: justify.不过这个只能用来设置多行文本(除最后一行).如果只有单行的话,是不起效果的.那怎么办呢?这里有两种解决方案: 第一种 借助伪元素或者内联元素使文本不是最后一行.具体代码: <form> <p> <label>用户名</label>: <input type="text"> </

探索发现:CSS实现中文两端对齐

今天在搜索"CSS实现中文两端对齐"的解决方法时,偶然发现了这个hack: 我遇到问题是:看不到效果,无论是英文还是中文,在IE和chrome下都不起作用.还好在StackOverflow上找到了解决方法 :) 样式: div.justify { text-align: justify; width:200px; font-size:15px; color:red; border:1px solid blue; height:18px; } div.justify > span

可用的CSS文字两端对齐

最近在工作项目中接触到Web界面设计的问题,要实现文字两端对齐的效果.在网上搜索了一下,用的都是类似的技巧: text-align:justify;text-justify:inter-ideograph; 我遇到问题是:看不到效果,无论是英文还是中文,在IE和chrome下都不起作用.还好在StackOverflow上找到了解决方法 :) 样式: 1 div.justify 2 { 3 text-align: justify; width:200px; font-size:15px; colo

css实现两端对齐~

今天做表单时遇到让上下两个字段对齐的情况,手机号码.用户名. 然后今天在网上找了找相关方法,发现确实是没有什么好的方法解决,特别是当需要兼容的时候.找到了两个我觉得相对还不错的方法: 方法一.是在司徒正美的博客上看到的—— text-align, text-justify: 需要设置 text-align为justify就行了,text-justify的情况复杂些.IE的取值如下: auto :允许浏览器用户代理确定使用的两端对齐法则 inter-word :通过增加字之间的空格对齐文本.该行为