自适应宽度和高度的Panel(html、css篇)

近期的项目过程中,涉及到要做一系列自适应高度和宽度的Panel(注意,是html。不是Flex里的Panel组件,呵呵)。
演示地址:http://www.myliwu.com/xzwBlog/panel/Panel.html

就实现效果本身来说并不难,只是如何选择一套比较简洁清晰的结构以及良好的CSS代码而已。经过几套结构的修改,最终成型的HTML结构如下:

< div  class ="mg10 exhibiton ex01" >
    
< div  class ="exHead" >
        
< div  class ="hTxt" >
            
< div  class ="hTxtContent" >< h2 > 展会直播 </ h2 ></ div >
        
</ div >
        
< div  class ="hLeft" ></ div >
        
< div  class ="hRight" ></ div >
    
</ div >
    
< div  class ="exBody" >
        
< div  class ="content" > 内容区域 </ div >
    
</ div >
    
< div  class ="exFoot" >
        
< div  class ="fLeft" ></ div >
        
< div  class ="fRight" ></ div >
    
</ div >
</ div >

经过多次测试,我觉得这套结构相对来说非常适合做有圆角的自适应。当然,如果万恶的“哀抑X”浏览器都支持border-radius的时候,就不用这么麻烦了。由上代码可以看出,还是有些不足,就是为了达到实现圆角自适应宽度,分别放置了

         < div  class ="hLeft" ></ div >
        
< div  class ="hRight" ></ div >
        
< div  class ="fLeft" ></ div >
        
< div  class ="fRight" ></ div >

这四个空DIV来装圆角背景图片

这套结构的原理其实就是《JS+CSS实现左中右3栏布局先显示中栏内容》里面介绍的。只不过在这里,左右侧的菜单栏变成了放置圆角图片的空白层而已。

接着看CSS代码。整套Panel样式由两部分组成,基础骨架样式+风格样式。基础骨架样式负责整体骨架结构,就相当于造船的龙骨结构。然后风格样式部分就相当于给模型包上外壳,具体是用木头包小木筏,还是塑料包玩具船,或是用钢材包航空母舰,就随你玩咯。首先来看基础骨架:

 1  /* 以下为基础结构代码 */
 2  #exhibition { width : 800px ;  margin : 20px auto }
 3      #exhibition .mg10 { margin : 10px }
 4  .exhibiton  {}
 5      .exHead, .exHead .hLeft, .exHead .hRight { background : url(img/h.gif) no-repeat }
 6      .exFoot, .exFoot .fLeft, .exFoot .fRight { background : url(img/f.gif) no-repeat }
 7      .exHead { height : 40px ;  width : 100% }
 8          .hTxt { float : left ;  height : 40px ;  width : 100% }
 9              .hTxtContent { margin : 0 10px }
10              .hTxtContent h2  { font-size : 14px ;  line-height : 40px }
11          .hLeft, .hRight { width : 10px ;  height : 40px ;  float : left ;  overflow : hidden }
12          .hLeft { margin-left : -100% }
13          .hRight { margin-left : -10px }
14      .exFoot { height : 10px ;  width : 100% }
15          .fLeft, .fRight { height : 10px ;  width : 10px ;  overflow : hidden }
16          .fLeft { float : left }
17          .fRight { float : right }
18      .exBody { min-height : 50px ; _height : 50px }
19      .exBody .content {  line-height : 1.5 ;  font-size : 12px ;  padding : 10px }

接着看具体风格样式代码:

 1  .ex01 .exHead { background-position : 0 -520px ;  background-repeat : repeat-x }
 2      .ex01 .hLeft { background-position : 0 -480px ; }
 3      .ex01 .hRight { background-position : 0 -560px ; }
 4  .ex01 .exFoot { background-position : 0 -130px ;  background-repeat : repeat-x }
 5      .ex01 .fLeft  { background-position : 0 -120px ; }
 6      .ex01 .fRight { background-position : 0 -140px ; }
 7  .ex01 .exBody { border : 3px solid #FFD52F ;  border-top : none ;  border-bottom : none }
 8 
 9  .ex02 .exHead { background-position : 0 -280px ;  background-repeat : repeat-x }
10      .ex02 .hLeft { background-position : 0 -240px ; }
11      .ex02 .hRight { background-position : 0 -320px ; }
12  .ex02 .exFoot { background-position : 0 -40px ;  background-repeat : repeat-x }
13      .ex02 .fLeft  { background-position : 0 -30px ; }
14      .ex02 .fRight { background-position : 0 -50px ; }
15  .ex02 .exBody { border : 1px solid #DADADA ;  background : #F7F7F8 ;  border-top : none ;  border-bottom : none }
16 
17  .ex03 .exHead { background-position : 0 -400px ;  background-repeat : repeat-x }
18      .ex03 .hLeft { background-position : 0 -360px ; }
19      .ex03 .hRight { background-position : 0 -440px ; }
20  .ex03 .exFoot { background-position : 0 -70px ;  background-repeat : repeat-x }
21      .ex03 .fLeft  { background-position : 0 -60px ; }
22      .ex03 .fRight { background-position : 0 -80px ; }
23  .ex03 .exBody { border : 1px solid #DADADA ;  border-top : none ;  border-bottom : none }
24 

因为有了完善的龙骨结构代码在前,风格样式代码也就随之简洁流畅,只要将不同部位的背景图片定位准确就OK了,没有太多的冗余代码,结构一目了然。

当这个模型案例做完后,我当时想如果就这么放个静态页面展示,估计效果不好。虽然很多达人们知道借助firebug能动态测试自适应的效果,但毕竟不直观。而且在“哀抑x”下就没那么方便了,只能贴代码手工测试。万一某些看官工作有比较忙,又怕遇到的是一个枪手文章(我就经常搜到T_T)说得天马行空,溜一圈就不行了。所以我就加个了JS测试代码,有空再贴上来备忘(已完成,地址在这里),这里就只说html+CSS部分了。

演示地址:http://www.myliwu.com/xzwBlog/panel/Panel.html

你可能感兴趣的:(Panel)