html中新闻标题字数的限制,CSS排版——新闻标题自适应宽度

就是常见的新闻列表,左边是标题,最右是时间,一个ul li列表。像下面这种:

06b7fca788e8139f70735b6b91c59933.png

HTML也灰常简单:

我想做到这样的效果:ul的宽度是自适应也就是不固定的,li占ul 100%宽度,标题靠左,时间靠右。时间span的宽度可以固定,标题a则不固定,随着ul宽度的变化,当a的文本碰到右边span时就显示省略号不换行不将li撑开!

这里边,要限制元素内文本单行显示溢出添加…省略号,这个元素就必须是指定宽度的,否则它就会将容器撑开!如果在li上限制单行,a一长右边时间就不见了。所以只能在a上限制,这样就必须给a宽度。

首先我们使用的HTML结构如下:

定义基本的CSS:

ul,li {padding: 0;width: 600px}

.text-oneline {

overflow: hidden;

white-space: nowrap;

text-overflow: ellipsis;

}

.date {

float: right;

}

这时的效果是这样的,虽然ul,li定了宽度,但由于限制a不换行,给撑开了:

db0c09a7194302d6e314dc29b5efda4b.png

下边来给a添加宽度,由于要自适应,想到如下方案:

1、使用百分比

.title {

display: inline-block;

width: 90%;

}

这样子基本可以满足。a标题占90%,随着整个ul的缩小,留给右边时间的宽度也会越来越小,有可能造成右边时间宽度不够而换行。

2、使用calc计算

.title {

display: inline-block;

width: calc(100% - 40px);

}

这里使用calc计算左边宽度,保证右边有40px来显示时间,没有任何问题。注意:calc()括号内的运算符号与数值必须有空格!

3、使用flex布局

li {

display: flex;

}

.title {

flex: 1;

}

以上三种方案,方案一兼容IE6,方案2兼容IE9,方案三兼容IE10(猜测)。方案一不完美,方案二、三没任何问题。但我看了几个网站都是将a写死宽度的,那样的话就没什么可说的了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值