页面需要显示一个table,列数比较多,导致无法一屏无法显示,导致需要左右拖动屏幕,十分不方便~

于是,需要将较长的列分行显示,在td 处用style="width:90px;"结果不起作用了,之前确实是可以的,想起最近刚升级了chrome浏览器。

在网上搜索答案时,大多时隐藏多余内容的方式,在快要放弃,暴利舍弃一些列时,答案出现了

参考:http://www.xuehuile.com/blog/b17e89b84e784f73bbcdaa9280044656.html

方法:

<style>
table{
table-layout:fixed;word-wrap:break-word;
}
</style>

然后在th出设置style="width:90px;"即可~

 

全文:

这个问题呢,是由于我们公司测试的部门测出来的,虽然说测试的内容本身就是个BUG,不过这个也让我学到了一个比较好的归类于布局的一个小技巧,就是将td标签中过长的内容只显示为这个td的width的长度,之后的便以省略号代替。

方式如下:

       这个功能有一个前提,在table中必须设置style:

table-layout: fixed;

 这条属性就是让table的内部布局固定大小。这个时候就用width属性调节td的长度。

之后在添加如下:

<style>

td {

      white-space:nowrap;overflow:hidden;text-overflow: ellipsis;

}

</style>

属性描述

white-space:nowrap;规定段落中的文本不进行换行
overflow:hidden;关闭滚动条
text-overflow: ellipsis;溢出的文字显示为省略号

这个时候你会发现,就算变成了省略号,就会出现不知道内容完整的是什么?

所以这个时候可以考虑使用td的title属性,在title属性中设置内容为显示内容,这样只要光标停留在td处就可以显示全部的内容,如果觉得这个不够劲。可以考虑自己写一个mouseover事件,让内容全部显示,显示的方式是自动换行,如果不换行就会出现很难看的样式。

so:换行也需要table-layout: fixed;

在(IE浏览器)长串英文自动回行

方法1:同时加入word-wrap:break-word;

table{

        table-layout:fixed;word-wrap:break-word;

}

 

方法二:

<style type="text/css">
 /*自动换行,IE,Chrome通用,FireFox连续英文不换行(遇空格换一行)*/
.AutoNewline_break{
  word-wrap:break-word; word-break:break-all; 
}

 .AutoNewline_normal{
   word-wrap:break-word; word-break:normal; 
}
 /*强制不换行,IE,FireFox,Chrome通用*/
 .NoNewline{
    white-space:nowrap
}
/*标签继承*/
div {
  background:red;  word-wrap: break-word;  word-break:break-all;
 }
</style>

上述style中的.*开头的是指html标签中class是*的标签,div就是指所有的div。

如: .NoNewline就是指class为NoNewline的标签样式改为:white-space:nowrap

用js修改style即可。当然最后也要写一个mouseout事件取消mouseover事件。

 

posted on 2015-12-24 10:04  妞溜溜  阅读(12133)  评论(0编辑  收藏  举报