项目作者: Franslee

项目描述 :
一款实现inline-block元素两端对齐布局的javascript插件(a javascript plug-in implementation inline-block elements full-justified layout)
高级语言: JavaScript
项目地址: git://github.com/Franslee/Justify.git
创建时间: 2015-05-26T10:16:37Z
项目社区:https://github.com/Franslee/Justify

开源协议:MIT License

下载


Justify

license

Justify 是一个实现元素两端自适应对齐、均分宽度布局的javascript控件。控件对最后一行对齐做了处理,使最后一行的元素能居左依次与上一行的元素垂直对齐,并支持去除部分DOCTYPE下最后一行产生的空隙。控件为移动web编写,支持移动设备旋转事件。暂不支持桌面IE浏览器低版本。效果图如下:

" class="reference-link">github

元素均分宽度、两端自适应对齐的布局在移动web项目中的需求还是挺多的,使用inline-block元素,配合text-align:justify,再注意处理好一些细节问题,便可以在现代浏览器上实现两端对齐,但是最后一行的处理却是个难题。很多时候我们希望最后一行元素不是两端对齐,而是居左排列,并且依次与上一行的元素垂直对齐。CSS3中有一个属性叫text-align-last,可以用来设置最后一行的对齐方式,遗憾的是它的备选值中并没有上面提到的这种方式,另一方面这个属性大部分浏览器还不支持,尤其在移动端,尚存在严重的兼容性问题。本控件就是为处理这些问题而生。

DEMO

请用手机扫描以下二维码,以访问DEMO页面。

github

用法

HTML结构,本组件目前只支持对无序列表ul应用:

  1. <ul class="justify-list" id="test">
  2. <li></li>
  3. <li></li>
  4. <li></li>
  5. <li></li>
  6. <li></li>
  7. <li></li>
  8. <li></li>
  9. <li></li>
  10. <li></li>
  11. <li></li>
  12. <li></li>
  13. <li></li>
  14. <li></li>
  15. </ul>

在页面中引入组件所需样式表文件justify.css

  1. <link rel="stylesheet" href="../dist/justify.css">

引入justify.min.js或justify.js文件

  1. <script src='../dist/justify.js'></script>

在确保页面DOM加载完毕之后,初始化组件, 比如写在DOMContentLoaded事件处理函数中:

  1. window.addEventListener("DOMContentLoaded",function(){
  2. //取得ul标签对应的DOM对象
  3. var oUl = document.getElementById('test');
  4. //应用Justify,将ul标签对应的DOM对象传入
  5. Justify.apply(oUl);
  6. },false);

如果页面已经引入了jquery或zepto等类库,也可以写在$(document).ready()中:

  1. $(function() {
  2. //取得ul标签对应的DOM对象
  3. var oUl = document.getElementById('test');
  4. //应用Justify,将ul标签对应的DOM对象传入
  5. Justify.apply(oUl);
  6. });

当然您还可以直接在页面底部初始化组件。

设置 options

初始化Justify组件时,支持传入两个参数,第一个参数是ul的DOM对象,必传。第二个参数是一个对象,可以通过它对组件的一些功能进行配置。

  1. Justify.apply(ul,options);
  • 参数ul是将要应用本组件的ul标签对应的DOM对象,必传
  • 参数options也可以是一个json对象,可选,通过它对组件的一些功能进行配置, 允许的keys见下表













key 类型 默认值 描述
removeBtmGap boolean false 在html5的doctype下,ul列表的底部会产生空隙,本选项用以设置是否移除这些空隙,默认不启用。本组件是通过将ul的font-size值置为0来清除这些空隙的。如果ul中的li元素的font-size值是从该ul继承来的,那么ul原来的font-size值会通过js直接设置到该li元素的style属性里。由于内联样式优先级比较高,有可能给之后的开发带来不便,建议小伙伴们直接在css中处理这个问题。
  1. var oUl = document.getElementById('test');
  2. Justify.apply(oUl,{removeBtmGap:true});