一道看似简单的面试题
曾经做过一么一题面试题,大体上的要求是这样的:一个新闻列表,日期要紧随标题之后,标题太长时可以自动隐藏,但日期要显示完整。
就这么个题目,看起来似乎很简单,但做起来似乎就没那么简单了。因为这里要求是时间紧随标题之后,如果是时间右对齐的话,相信大多数人片刻就能搞定。有兴趣的朋友不妨先不看下面的源码,自己做做试试。
因为日期是跟在标题后面的,所以这里要用内联标签,但这会在自动隐藏标题的时候出现问题。最后,想到了一种特殊的处理方法。外框的宽度比如说是300px,那么就把ul的宽度定为240px,然后通过绝对定位把日期从文档流中拖出,这时当标题达到ul的宽度的时候将之隐藏,而日期因为浮动而跟随其后,就达到所要的效果了。
PS:原来没有考虑到opera的兼容,现已修正,不过用了hack,暂时没想到好方法了。
提示:你可以先修改部分代码再运行。

15条留言 立即发表评论
@tank
哈哈,欢迎常来!
你都不用兼容opera的吗?
那当然好做了。
多谢这位仁兄的提醒,当初还真是没有考虑到opera的兼容。现已修正了,全都兼容,不过用到了些hack,总感觉不太完美。
看来迅雷这道题出得还是不错滴!
哈哈,被你看出来啦。其实面试题我全都通过了的!
新闻列表
html, body{ width:100%; height:100%; margin:0; padding:0; font-size:12px;}
div, ul, li{ margin:0; padding:0; list-style:none;}
.list_news{ width:400px; height:600px; float:left;}
.list_news ul{ width:400px; height:auto;}
.list_news li{ width:400px; height:22px; overflow:hidden; line-height:22px;}
a{ color:#000000; text-decoration:none; display:block; float:left;}
.d1{ color:#999999; font-family:Arial, Helvetica, sans-serif; font-size:11px; margin-left:5px; display:inherit;}
么个题目,看起来似乎很简单,但做起那么2009-10-11
么个题简单,但做起来似乎就没那么2009-10-11
么个题目,看起来似乎很简单,但做起来似乎就没那么2009-10-11
么个题目,看起来似乎很简单,但那么2009-10-11
么个题目,看起来似乎很简来似乎就没那么2009-10-11
么个题目,看起来似乎很简单,但做起来似乎就没那么2009-10-11
么个题目,单,但做起来似乎就没那么2009-10-11
么个题目,看起来似乎很简单,但做起似乎就没那么2009-10-11
么个题目,看起来似乎就没那么2009-10-11
么个题目,看起来似乎很简单,但做就没那么2009-10-11
这位朋友可能没有理解到题目的意思。
楼上的这种做法,当文字超出长度的时候,时间也会被hidden,而需求是文字超出时,文字隐藏而日期正常显示。
哈哈.用绝对定位
我第一反应是用max-width.想办法让ie6兼容就ok了.
= =刚试了一把..ie6用_width:expression_r(this.scrollWidth > 220 ? 220 + ‘px’ : ‘auto’); 但不支持overflow:hidden; 饿..看来也就你这方法能实现了.我那方法就ie6不支持
body {font: Arial, Helvetica, sans-serif,”宋体”}
ul,li {list-style:none; margin:0; padding:0}
ul {width:300px; padding:5px; border:1px #EEE solid}
li {line-height:25px;list-style:none; height:25px; width:220px; overflow:hidden; padding-right:80px}
a {display:inline-block; margin-right:10px}
span {position:absolute}
确实花了比较长的时间,由于系统是Windows 7,所以设了下字体,无伤大雅。
基本上满足了性要求。
body {font: Arial, Helvetica, sans-serif,”宋体”}
ul,li {list-style:none; margin:0; padding:0; list-style:none}
ul {width:300px; padding:5px; border:1px #EEE solid}
li {width:220px;line-height:25px;height:25px;overflow:hidden}
a {display:inline-block; margin-right:5px}
span {position:absolute}
系统只有 火狐、ie8、测试通过。
我想问下楼主,假如有隐藏的部分加三个下黑点,然后鼠标滑过时可以用另外一个层显示标题全部内容怎么实现?
这个问题困扰我很长时间了
其实也不难,你用em做为宽度单位,然后用js判断超出规定em宽度的加上省略号。显示全标题就用title属性就OK了。