如何用纯CSS实现自适应布局表格

html-css023

如何用纯CSS实现自适应布局表格,第1张

 /*屏幕宽度小于600px时触发*/

        @media screen and (max-width: 600px){ 

            table{

                 border:0

            }

            table thead{

                 display: none

            }

            table tr{

                margin-bottom: 10px

                display: block/*设置成块级元素实现换行*/

                border-bottom: 2px solid #ddd

            }

            table td{ 

                display: block

                text-align: right

                font-size: 13px

                border-bottom: 1px dotted #ccc

            }

            table td:last-child{

                border-bottom: 0

            }

            table td:before{/*模拟标题的效果*/

                content:attr(data-label)

                float: left

                text-transform: uppercase

                font-weight: bold

            }

        }

这就出现一个问题,如果图片过小,或文字过长,就会出现文字把整个表格撑得很大,即占用了很多空间,显示效果也非常不美观。

网上也有许多解决办法,但要么复杂,要么不能解决跨浏览器问题,要么不能自适应图片大小变化。

在我的这个方法中,解决了: 不需要在代码中指定图片大小、跨浏览器、非常简单。最后的效果如下图所示,当文字过长时,它会自动换行以适应图片宽度:

方法如下:

1)图片及图片说明代码如下:

<table

class="mod_img"

width="10"

align="left"

border="0"

cellpadding="0"

cellspacing="0"><tbody><tr><td

align="center"><a

title="点击查看原图"

href="/upload/20090214135145954.png"

target="_blank"><img

src="http://files.jb51.net/upload/20090214135147104.png"

vspace="0"

border="0"

hspace="0"></a></td></tr><tr><td

align="center"><div

class="mod_img_desc">香港殖民地最后的一面旗帜,由英国蓝旗和代表香港的殖民地徽所组成,1959年-1997年</div></td></tr></tbody></table>2)"mod_img"

的定义如下,它指定了表格及图片边框的CSS样式:

.mod_img

{margin:6px

border:1px

solid

#AAAAAA

padding:

3px

}

.mod_img

img{margin:3px

border:1px

solid

#AAAAAA

padding:0px

}

3)"mod_img_desc"

的定义如下,它指定了说明文本的CSS样式:

.mod_img_desc

{font-size:12pxword-break:break-allwidth:100%

overflow:auto}

这里的关键是上边的

width="10"

这处,这是文本自适应图片宽度的关键,实际上10是个很小的值,一般图片都大于这个值,并且在表格中显示一个图片时,图片会按自己的实际大小把这个表格撑开,因此这个

width

并不会影响图片的显示,而在

3)处指定了文本的

width

为100%,就是说文字按照实际的宽度显示,而不管该宽度是多少,当文字超过宽度时,自动换行。

经过测试,该方法在

IE/Firefox/Safari/Opera等浏览器中均能完美正常工作!祝你愉快。

就我个人经验的话,我觉得用table做布局是比较快的,但是到套用后台的时候,table就没有div+css布局那么直观了,因为用table做的时候,会有很多tr、td之类的代码,看得眼花缭乱的,当然两种布局都可以套后台...如果你会的话,两种布局都可以互相用的,至于你说出现什么挤压之类的,肯定是没有调好大小、位置之类的。我的话,两种布局都一起用,看你个人习惯和掌握程度.....希望能帮到你...呵呵