css实现两端对齐的3种方法
说到两端对齐,大家并不陌生,在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:
![](/assets/blank.gif)
<p>模块内的元素之间为 分隔,只支持webkit和Gecko内核浏览器</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>模块内的元素之间为空格符</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 />
![](/assets/blank.gif)
CSS:
![](/assets/blank.gif)
*{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; }
![](/assets/blank.gif)
测试地址:
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:
![](/assets/blank.gif)
<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>
![](/assets/blank.gif)
CSS:
![](/assets/blank.gif)
*{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; }
![](/assets/blank.gif)
测试地址:
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:
![](/assets/blank.gif)
<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>
![](/assets/blank.gif)
CSS:
![](/assets/blank.gif)
*{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种方法相关推荐
- css+分散,【原】css实现两端对齐的3种方法
说到两端对齐,大家并不陌生,在word.powerpoint.outlook等界面导航处,其实都有一个两端对齐(分散对齐)的按钮,平时使用的也不多,我们更习惯与左对齐.居中对齐.右对齐的方式来对齐页面 ...
- css之文本两端对齐的两种解决方法
css之文本两端对齐的两种解决方法 参考文章: (1)css之文本两端对齐的两种解决方法 (2)https://www.cnblogs.com/wl0804/p/11265225.html 备忘一下.
- html文字图片同一行,CSS控制图片和文字在同一行显示且对齐的3种方法
CSS控制图片和文字在同一行显示且对齐的3种方法 在 HTML 代码中,有时会需要在文字旁边加上一个图标. 默认情况,是图片置顶对齐,文字置底对齐,所以通常图片高,文字低,不能水平居中对齐. 常见欢思 ...
- php中css样式两端对齐,CSS两端对齐
前面的话 两端对齐在导航Nav的制作中非常常用.本文将详细介绍CSS两端对齐的3种实现方式 flex 弹性盒模型flex作为强大的弹性布局方式,可以hold住大部分的布局效果,当然也包括两端对齐.可以 ...
- CSS图片水平垂直居中的三种方法
CSS图片水平垂直居中的三种方法 设置行高 使用定位和translate 使用弹性盒子 设置行高 我们知道img元素为行内快元素,所以首先设置图片元素的父元素里文字水平居中,行高与整体高度一致. 其次 ...
- html文字两端对齐 w3school,CSS实现两端对齐效果
两端对齐,从概念上来说,其实不难理解.如果不明白什么叫两端对齐,可以玩玩word等办公软件. 下面谈谈如何实现文本的两端对齐.我所知道的大概有以下几种方法 text-align w3school指出, ...
- CSS实现水平垂直的几种方法
title: CSS实现水平垂直的几种方法 categories: CSS tags: - CSS - HTML - 面试题 date: 2021-09-11 在HTMl中分为块级元素和内联元素, ...
- html div 居中心,CSS实现DIV居中的三种方法
下面给大家分享div居中的实现代码,具体代码如下所示: demo .div1{ width: 100px; height: 100px; border: 1px solid #000000;} .di ...
- html如何将图片做成六边形,css画正六边形的两种方法
说下两种css 制作正六边形的方法. 先看一下结果: 在之前要先了解一下正六边形内角和边的关系,正六边形的每个内角是60deg,如图(√3其实是根号3): 方法一:原理把正六边形分成三部分,左中右分别 ...
最新文章
- 伯克利AI研究院:强化学习是GPT2等自回归语言模型弥补不足的良方?
- 【HDU】5256 系列转换(上涨时间最长的序列修饰)
- 【python数据挖掘课程】二十二.Basemap地图包安装入门及基础知识讲解
- python中常用的模块二
- 2.5.1.1、解析配置
- batch入门教程(3)
- POJ NOI MATH-7657 连乘积末尾0的个数
- 盘点苹果乔布斯憎恨Google的十大原因
- python之show、hide、slidedonw、slideup方法实例
- c语言dll导出函数举例,DLL中导出函数的两种方式(dllexport与.def文件)
- 联想服务器怎么备份系统软件,联想笔记本通过命令进行系统备份的教程
- php 验证手机号邮箱,PHP使用正在表达检查是否未手机号码或者邮箱
- 圆跳动基础知识(几何公差)
- 了解java中暴力反射
- 《循序渐进Oracle:数据库管理、优化与备份恢复》一一1.5 案例与实践分析 ...
- 调用本地主干的预训练的.pth文件
- 抖音火了,但MCN却在毁掉整个行业
- a.astype用法
- u2硬盘测试软件,Buffalo HD-PET320U2移动硬盘检测报告
- Python案例之QQ空间自动登录程序实现
热门文章
- mac上的命令行工具
- CAutoupdater通用 自动升级组件用户手册
- 【原】母版页、皮肤、导航 那点事 Master Pages Themes and Navigation Controls FAQ
- Flutter FocusNode输入框焦点控制概述
- flutter Toast消息提示框
- flutter GestureDetector 手势处理
- Mr.J-- jQuery学习笔记(四)--内容选择器
- unknow Unknown type name 'NSString'
- RHEL5实现YUM本地源的配置
- 修改element-ui源码使日期范围date-picker支持年范围选择