首页
站长论坛BBS
救助
投稿
discuz视频教程
discuz技术支持
版块
登录
快速注册

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

建站高手 2015-4-24 [DIVCSS] 来自PC 复制链接
91144
discuz使用视频教程
31idc

马上注册,一起探讨正确快速的建站方法

您需要 登录 才可以下载或查看,没有帐号?快速注册

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

使用text-align:justify

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

HTML代码
  1. <p>模块内的元素之间为&nbsp;分隔,只支持webkit和Gecko内核浏览器</p>
  2. <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>
  3. </div>
  4. <p>模块内的元素之间为换行符</p>
  5. <div class="demo">
  6.     <a class="link" href="#none">10元</a>
  7.     <a class="link" href="#none">20元</a>
  8.     <a class="link" href="#none">30元</a>
  9.     <a class="link" href="#none">50元</a>
  10. </div>
  11. <br />
  12. <p>模块内的元素之间为空格符</p>
  13. <div class="demo">
  14. <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>
  15. </div>
  16. <p>模块内的元素之间为无分隔符,justify不起作用</p>
  17. <br />
  18. <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>
  19. *{margin:0;padding:0;}
  20. /*
  21. 说明:
  22. 1.IE中要实现块内单行两端对齐需要使用其私有属性text-align-last:justify配合,text-align-last 要生效,必须先定义text-align 为justify
  23. 2.line-height:0 解决标准浏览器容器底部多余的空白
  24. */
  25. .demo{
  26.      text-align:justify;
  27.      text-align-last:justify;
  28.      line-height:0;
  29.      height:44px;
  30. }
  31. /*
  32. 说明:
  33. 模块使用[换行符]或[空格符]后,webkit浏览器中会引起最后一个模块有多余空白,使用font-size:0可清除该空格
  34. */
  35. @media all and (-webkit-min-device-pixel-ratio:0){
  36. .demo{
  37.      font-size:0;
  38. }
  39. }
  40. /*
  41. 说明:
  42. 1.text-align-last:justify 目前只有IE支持,标准浏览器需要使用 .demo:after 伪类模拟类似效果
  43. 2.opera浏览器需要添加 vertical-align:top 才能完全解决底部多余的空白
  44. */
  45. .demo:after{
  46.      display:inline-block;
  47.      overflow:hidden;
  48.      width:100%;
  49.      height:0;
  50.      content:'';
  51.      vertical-align:top;
  52. }
  53. .demo a{
  54.      width:20%;
  55.      display:inline-block;
  56.      height:44px;
  57.      line-height:44px;
  58.      text-align:center;
  59.      border:1px solid #428cc8;
  60.      color:#666;
  61.      font-size:16px;
  62.      margin-bottom:5px;
  63.      border-radius:3px;
  64.      background-color:#fefefe;
  65.      background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fefefe),color-stop(1,#eee));
  66.      color:#666;
  67.      text-decoration:none;
复制代码


使用box-pack:justify

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

如果是做基于webkit内核的webapp开发和winphone IE10及以上。

HTML代码
  1. <div class="demo">
  2.     <a class="link" href="#none">10元</a>
  3.     <a class="link" href="#none">20元</a>
  4.     <a class="link" href="#none">30元</a>
  5.     <a class="link" href="#none">50元</a>
  6. </div>
  7. CSS代码
  8. *{margin:0;padding:0;}
  9. /*
  10. 说明:
  11. display:box定义布局为盒模型后,可使用盒模型下的box-pack:justify属性
  12. */
  13. .demo{
  14.     display:-webkit-box;
  15.     display:-webkit-flex;
  16.     display:-ms-flexbox;
  17.     display:flex;
  18.     -webkit-box-pack:justify;
  19.     -webkit-justify-content:space-between;
  20.     -ms-flex-pack:justify;
  21.     justify-content:space-between;
  22. }
  23. .demo a{
  24.      width:20%;
  25.      display:block;
  26.      height:44px;
  27.      line-height:44px;
  28.      text-align:center;
  29.      border:1px solid #428cc8;
  30.      color:#666;
  31.      font-size:16px;
  32.      margin-bottom:5px;
  33.      border-radius:3px;
  34.      background-color:#fefefe;
  35.      background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fefefe),color-stop(1,#eee));
  36.      color:#666;
  37.      text-decoration:none;
  38. }
复制代码


使用column(多列布局)

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

HTML代码

  1. <div class="demo">
  2.     <a class="link" href="#none">10元</a>
  3.     <a class="link" href="#none">20元</a>
  4.     <a class="link" href="#none">30元</a>
  5.     <a class="link" href="#none">50元</a>
  6. </div>
  7. CSS代码
  8. *{margin:0;padding:0;}
  9. /*
  10. 说明:
  11. 1.column-count定义了对象的列数,例子中有4个模块,那么定义为4列
  12. 2.column-gap定义了对象中列与列的间距,间距不能设置为百分比,显得不够灵活
  13. */
  14. .demo{
  15.      -webkit-column-count:4;-moz-column-count:4;column-count:4;
  16.      -webkit-column-gap:20px;-moz-column-gap:20px;column-gap:20px;
  17. }
  18. .demo a{
  19.      display:block;
  20.      height:44px;
  21.      line-height:44px;
  22.      text-align:center;
  23.      border:1px solid #428cc8;
  24.      color:#666;
  25.      font-size:16px;
  26.      margin-bottom:5px;
  27.      border-radius:3px;
  28.      background-color:#fefefe;
  29.      background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fefefe),color-stop(1,#eee));
  30.      color:#666;
  31.      text-decoration:none;
  32. }
复制代码



上一篇:完美兼容ie6,ie7,ie8以及firefox的css透明滤镜
下一篇:css设置背景固定不滚动效果的示例
重头再来 发表于 2015-4-25 12:16:30 来自PC
表示很长啊。
http://www.ningleplay.com
重头再来 发表于 2015-4-25 12:19:13 来自PC
复杂的很
重头再来 发表于 2015-4-25 12:19:35 来自PC
复杂的很
重头再来 发表于 2015-4-25 12:19:42 来自PC
复杂的很
重头再来 发表于 2015-4-25 12:19:58 来自PC
我觉得不错
重头再来 发表于 2015-4-25 12:20:18 来自PC
复杂的很
重头再来 发表于 2015-4-25 12:20:27 来自PC
复杂的很
重头再来 发表于 2015-4-25 12:20:39 来自PC
做到最好就可以了。
http://www.ningleplay.com
莫祺 发表于 2015-4-27 11:11:38 来自PC
强烈支持,站帮网有你更精彩
独家自研高转化产品,寻渠道合作QQ2851538083
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

快速回复 返回顶部 返回列表