说到两端对齐,大家并不陌生,在word、powerpoint、outlook等界面导航处,其实都有一个两端对齐(分散对齐)的按钮,平时使用的也不多,我们更习惯与左对齐、居中对齐、右对齐的方式来对齐页面的文本或模块。

响应式网页设计出现以来,更多是使用百分比布自适应布局,特别是在移动端,两端对齐的方式显得越来越重要。那么,如何使用css实现两端对齐,相信很多同学会文本对齐的text-align:justify,这是今天要讲的其中一种方式,另外还有两种更精彩的实现方式,请往下看~

下图是需要实现的demo,取了宽度分别为320px、480px、640px下的截图,也就是说再随浏览器窗口宽度的调整,按钮菜单高度不变,宽度会按比例自动适应,且左右两端对齐:

目录(更新于20161028)

  • 使用text-align:justify

  • 使用justify-content:space-between

  • 使用column(多列布局)

  • 移动端文本两端对齐示例 (new)

方法一:使用text-align:justify

感谢join同学提供的方案,使用该方案可以做到兼容所有的浏览器,不过实现起来会比较复杂,而且带有hack的味道

text-align:justify 属性是全兼容的,使用它实现两端对齐,需要注意在模块之间添加[空格/换行符/制表符]才能起作用,同样,实现文本对齐也是需要在字与字之间添加[空格/换行符/制表符]才能起作用

HTML:

<p>模块内的元素之间为&nbsp;分隔,只支持webkit和Gecko内核浏览器</p>
<br />
<div class="demo"><a class="link" href="#none">10元</a>&nbsp;<a class="link" href="#none">20元</a>&nbsp;<a class="link" href="#none">30元</a>&nbsp;<a class="link" href="#none">50元</a>
</div>
<br />
<p>模块内的元素之间为换行符</p>
<br />
<div class="demo"><a class="link" href="#none">10元</a><a class="link" href="#none">20元</a><a class="link" href="#none">30元</a><a class="link" href="#none">50元</a>
</div>
<br />
<p>模块内的元素之间为空格符</p>
<br />
<div class="demo">
<a class="link" href="#none">10元</a> <a class="link" href="#none">20元</a> <a class="link" href="#none">30元</a> <a class="link" href="#none">50元</a>
</div>
<br />
<p>模块内的元素之间为无分隔符,justify不起作用</p>
<br />
<div class="demo"><a class="link" href="#none">选项1</a><a class="link" href="#none">选项2</a><a class="link" href="#none">选项3</a><a class="link" href="#none">选项4</a></div>
<br />

CSS:

*{margin:0;padding:0;}
/* 说明: 1.IE中要实现块内单行两端对齐需要使用其私有属性text-align-last:justify配合,text-align-last 要生效,必须先定义text-align 为justify2.line-height:0 解决标准浏览器容器底部多余的空白
*/
.demo{text-align:justify;text-align-last:justify;line-height:0;height:44px;
}
/*说明:模块使用[换行符]或[空格符]后,webkit浏览器中会引起最后一个模块有多余空白,使用font-size:0可清除该空格
*/
@media all and (-webkit-min-device-pixel-ratio:0){
.demo{font-size:0;
}
}/* 说明:1.text-align-last:justify 目前只有IE支持,标准浏览器需要使用 .demo:after 伪类模拟类似效果 2.opera浏览器需要添加 vertical-align:top 才能完全解决底部多余的空白*/
.demo:after{display:inline-block;overflow:hidden;width:100%;height:0;content:'';vertical-align:top;
}
.demo a{width:20%;display:inline-block;height:44px;line-height:44px;text-align:center;border:1px solid #428cc8;color:#666;font-size:16px;margin-bottom:5px;border-radius:3px;background-color:#fefefe;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fefefe),color-stop(1,#eee));color:#666;text-decoration:none;
}

 测试地址:

http://jsbin.com/uGetOJE/1

方法二:使用justify-content:space-between

box-pack是css3的新属性,依赖于display:box(旧版弹性布局),受box-orient影响,box-pack决定了子标签水平对齐的方式,可选值有start | end | center | justify。使用box-pack:justify来实现两端对齐非常简单,代码量也少。为了向前看齐,把display:flex(新版弹性布局)也一起写进去~

如果是做基于webkit内核的webapp开发和winphone IE10及以上,那么一切都好办~

关于盒模型布局的介绍,这里有篇文章《CSS box-flex属性,然后弹性盒子模型简介》,写得不错,推荐给大家~

HTML:

<div class="demo"><a class="link" href="#none">10元</a><a class="link" href="#none">20元</a><a class="link" href="#none">30元</a><a class="link" href="#none">50元</a>
</div>

CSS:

*{margin:0;padding:0;}
/*说明:display:box定义布局为盒模型后,可使用盒模型下的box-pack:justify属性
*/
.demo{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;
}.demo a{width:20%;display:block;height:44px;line-height:44px;text-align:center;border:1px solid #428cc8;color:#666;font-size:16px;margin-bottom:5px;border-radius:3px;background-color:#fefefe;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fefefe),color-stop(1,#eee));color:#666;text-decoration:none;
}

测试地址:

http://jsbin.com/qalahihubo

方法三:使用column(多列布局)

column也是是css3的属性,意思是多列布局,使用column来实现两端对齐也十分简单,只需要设置模块的个数跟column的列数一致即可,不过它的自动适应方式跟使用box-pack还有有点差别,并不是很标准,像列与列的间距暂无法定义为百分比。值得高兴的是目前支持所有高级浏览器,对IE10的支持也良好,而IE9及以下版本不支持,webapp开发中,对于不需要兼容winphone7手机(IE9)的需求来说,可以充分发挥column的强大作用~

关于column的使用方法,w3school的有相关教程:http://www.w3school.com.cn/css3/css3_multiple_columns.asp

HTML:

<div class="demo"><a class="link" href="#none">10元</a><a class="link" href="#none">20元</a><a class="link" href="#none">30元</a><a class="link" href="#none">50元</a>
</div>

CSS:

*{margin:0;padding:0;}
/* 说明:1.column-count定义了对象的列数,例子中有4个模块,那么定义为4列2.column-gap定义了对象中列与列的间距,间距不能设置为百分比,显得不够灵活
*/
.demo{-webkit-column-count:4;-moz-column-count:4;column-count:4;-webkit-column-gap:20px;-moz-column-gap:20px;column-gap:20px;
}.demo a{display:block;height:44px;line-height:44px;text-align:center;border:1px solid #428cc8;color:#666;font-size:16px;margin-bottom:5px;border-radius:3px;background-color:#fefefe;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fefefe),color-stop(1,#eee));color:#666;text-decoration:none;
}

转载于:https://www.cnblogs.com/reaf/p/6795863.html

css实现两端对齐的3种方法相关推荐

  1. css+分散,【原】css实现两端对齐的3种方法

    说到两端对齐,大家并不陌生,在word.powerpoint.outlook等界面导航处,其实都有一个两端对齐(分散对齐)的按钮,平时使用的也不多,我们更习惯与左对齐.居中对齐.右对齐的方式来对齐页面 ...

  2. css之文本两端对齐的两种解决方法

    css之文本两端对齐的两种解决方法 参考文章: (1)css之文本两端对齐的两种解决方法 (2)https://www.cnblogs.com/wl0804/p/11265225.html 备忘一下.

  3. html文字图片同一行,CSS控制图片和文字在同一行显示且对齐的3种方法

    CSS控制图片和文字在同一行显示且对齐的3种方法 在 HTML 代码中,有时会需要在文字旁边加上一个图标. 默认情况,是图片置顶对齐,文字置底对齐,所以通常图片高,文字低,不能水平居中对齐. 常见欢思 ...

  4. php中css样式两端对齐,CSS两端对齐

    前面的话 两端对齐在导航Nav的制作中非常常用.本文将详细介绍CSS两端对齐的3种实现方式 flex 弹性盒模型flex作为强大的弹性布局方式,可以hold住大部分的布局效果,当然也包括两端对齐.可以 ...

  5. CSS图片水平垂直居中的三种方法

    CSS图片水平垂直居中的三种方法 设置行高 使用定位和translate 使用弹性盒子 设置行高 我们知道img元素为行内快元素,所以首先设置图片元素的父元素里文字水平居中,行高与整体高度一致. 其次 ...

  6. html文字两端对齐 w3school,CSS实现两端对齐效果

    两端对齐,从概念上来说,其实不难理解.如果不明白什么叫两端对齐,可以玩玩word等办公软件. 下面谈谈如何实现文本的两端对齐.我所知道的大概有以下几种方法 text-align w3school指出, ...

  7. CSS实现水平垂直的几种方法

    title: CSS实现水平垂直的几种方法 categories: CSS tags: - CSS - HTML - 面试题 date: 2021-09-11   在HTMl中分为块级元素和内联元素, ...

  8. html div 居中心,CSS实现DIV居中的三种方法

    下面给大家分享div居中的实现代码,具体代码如下所示: demo .div1{ width: 100px; height: 100px; border: 1px solid #000000;} .di ...

  9. html如何将图片做成六边形,css画正六边形的两种方法

    说下两种css 制作正六边形的方法. 先看一下结果: 在之前要先了解一下正六边形内角和边的关系,正六边形的每个内角是60deg,如图(√3其实是根号3): 方法一:原理把正六边形分成三部分,左中右分别 ...

最新文章

  1. 伯克利AI研究院:强化学习是GPT2等自回归语言模型弥补不足的良方?
  2. 【HDU】5256 系列转换(上涨时间最长的序列修饰)
  3. 【python数据挖掘课程】二十二.Basemap地图包安装入门及基础知识讲解
  4. python中常用的模块二
  5. 2.5.1.1、解析配置
  6. batch入门教程(3)
  7. POJ NOI MATH-7657 连乘积末尾0的个数
  8. 盘点苹果乔布斯憎恨Google的十大原因
  9. python之show、hide、slidedonw、slideup方法实例
  10. c语言dll导出函数举例,DLL中导出函数的两种方式(dllexport与.def文件)
  11. 联想服务器怎么备份系统软件,联想笔记本通过命令进行系统备份的教程
  12. php 验证手机号邮箱,PHP使用正在表达检查是否未手机号码或者邮箱
  13. 圆跳动基础知识(几何公差)
  14. 了解java中暴力反射
  15. 《循序渐进Oracle:数据库管理、优化与备份恢复》一一1.5 案例与实践分析 ...
  16. 调用本地主干的预训练的.pth文件
  17. 抖音火了,但MCN却在毁掉整个行业
  18. a.astype用法
  19. u2硬盘测试软件,Buffalo HD-PET320U2移动硬盘检测报告
  20. Python案例之QQ空间自动登录程序实现

热门文章

  1. mac上的命令行工具
  2. CAutoupdater通用 自动升级组件用户手册
  3. 【原】母版页、皮肤、导航 那点事 Master Pages Themes and Navigation Controls FAQ
  4. Flutter FocusNode输入框焦点控制概述
  5. flutter Toast消息提示框
  6. flutter GestureDetector 手势处理
  7. Mr.J-- jQuery学习笔记(四)--内容选择器
  8. unknow Unknown type name 'NSString'
  9. RHEL5实现YUM本地源的配置
  10. 修改element-ui源码使日期范围date-picker支持年范围选择