一行文字的时候,文字在整个盒子中垂直水平居中,超过一行之后,文字在盒子中垂直水平居中,文字左对齐...

在现实工作中,很多时候会有一些比较奇怪的需求,但即使是奇怪,但还是需要去实现。最近,在工作中,遇到一个需求,是这样的:

  1、标题只有一行文字的时候,整个标题在一个div中需要垂直水平居中,文字也是居中对齐

      2、当标题超过一行的时候,那么标题在这个div中需要垂直水平居中,但是文字变成了左对齐

   根据如上描述,其实所用到的知识点也就那么几个:

      1、未知高度的盒子在已知宽高的盒子中垂直水平居中

      2、通过媒体查询或者js判断当文字的这个容器超过了一定的高度的时候,文字左对齐

   多行标题显示效果如下图所示:

  单行文字显示效果如下图所示:

 

 

   具体实现方法,我是这样来做的,代码如下:    

  <div class="box">
    <div class="wrap">
      <p class="text">
        我是单行标题我是单行标题我是单行标题我是单行标题
        我是单行标题我是单行标题我是单行标题我是单行标题
        我是单行标题我是单行标题我是单行标题我是单行标题我是单行标题我是单行标题我是单行标题我是单行标题
      </p>
    </div>
  </div>

  页面结构由三个块元素嵌套组成,最外层的box的css属性要点在于display:table;overflow:hidden;子容器wrap的css属性要点在于 vertical-align:middle;display:table-cell;
      针对ie6的hack,wrap容器的 _position:absolute;_top:50%; 和text容器的 _position:relative; _top:-50%;
如果不需要水平居中的话,需要注释掉wrap容器的text-align:center;_left:50%;以及text的display:inline-block;_left:-50%;

<style>
*{margin: 0;padding: 0;}


.box{width: 300px;height: 300px;display:table; overflow:hidden;background-color:#000;  margin:0 auto; _position:relative;}

.wrap {vertical-align:middle; display:table-cell; text-align:center; _position:absolute; _top:50%; _left:50%;}

.text{color:#fff; border:1px solid #fff; display:inline-block; _position:relative; _top:-50%; _left:-50%;padding:0 20px;}

</style>

<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>

js代码的话也就是做一下简单的判断就可以了,实现起来还是很简单的
<script>
$(function(){
  var text = $('.text');
  if(parseInt(text.css('height')) > 40){
    text.css('text-align','left');
  }
})
</script>

 

转载于:https://www.cnblogs.com/xiaofang-FE/p/6696325.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值