zoukankan      html  css  js  c++  java
  • 2013年4月9日星期二

    今天花费时间最长的还是div+css定位问题,页面在不同分辨率下布局显示,定位调试真的很麻烦,效率也很低。晚上回来看了几篇文章感觉又加深了这块的认识:

    真正的DIV高度height自适应

    IE6 IE7中,包含子容器的父容器高度自适应,有个BUG,比如说在这个例子里面,如果没用使用相关的技巧,那么就会把最后个子容器的margin-bottom:10px给忽略了。

    所以这两个是个比较完美的方案。

    方案一,父容器的最后放一个clear:both的子容器。

    方案二,父容器的overflowheight的自动高度"auto"

    代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>div
    自动高度</title>
    <style type="text/css">
    <!--
    .line{ border: 1px dashed #333;}
    .con {margin:auto; background-color:#FFFFCC;}
    .top{ height:200px; 80%; background-color:#eee; margin:0 auto 10px auto;}
    .cl{ clear:both;}

    .con1 { overflow:auto; height:auto;margin:auto; background-color:#FFFFCC;}
    .top1{ height:200px; 80%; background-color:#eee; margin:0 auto;}
    -->
    </style>
    </head>

    <body>
    <h4>
    利用clear自动高度,因为TOP层有下边界</h4>
    <div class="con line">
    <div class="top line"></div>
    <div class="top line"></div>
    <div class="top line"></div>
    <div class="top line"></div>
    <div class="top line"></div>
    <div class="top line"></div>
    <div class="cl"></div>
    </div>
    <h4>
    利用overflow和高度的自动高度实现,无下边界的情况</h4>
    <div class="con1 line">
    <div class="top1 line"></div>
    <div class="top1 line"></div>
    <div class="top1 line"></div>
    <div class="top1 line"></div>
    <div class="top1 line"></div>
    <div class="top1 line"></div>
    </div>
    </body>
    </html>

    另外和这个高度自适应的相关的还有两点:

    1、使用 expression 实现动态属性设置:

    height: expression(this.style.height>=this.scrollHeight?'176px':this.scrollHeight+'px');

    以上代码解释是超过了176px就自动延伸,否则定义为176px.

    2、结合min-height和高度自适应。

    主要代码如下:

    min-height:560px;
    _height: 560px;

    原理:IEHACK
    对于,IE6来说,不识别:min-height,对IE7来说不识别_height。这样的话,在IE6下,把上面的CSS识别为height,有一个固定高度560px并且超出部分会自动延展。对IE7来说,把上面的CSS识别成min-height也能保证一个最小的高度560px。超出最小高度时也会自动延展。

    学习:所有div的属性都定义到css的class中;div的class中可以引用多个css定义的class

    heightclientHeightscrollHeightoffsetHeight区别

    height :其实Height高度跟其他的高度有点不一样,javascript中它是属于对象的style对象属性中的一个成员,它的值是一个字符类型的,而另外三个高度的值是int类型的,它们是对象的属性.因此这样document.body.height就会提示undenifine,而必须写成document.body.style.height

    clientHeight:可见区域的宽度,不包括boder的宽度,如果区域内带有滚动条,还应该减去横向滚动条不可用的高度,正常的是17px,其实就是滚动条的可滚动的部分了,其实clientHeightheight的高度差不多,如果不带滚动条的话他们的值都是一样的,如果带有滚动条的话就会比height值少17px;火狐与IE下均为一致.

    scrollHeight:这个属性就比较麻烦了,因为它们在火狐跟IE下简直差太多了..
    在火狐下还很好理解,它其实就是滚动条可滚动的部分还要加上boder的高度还要加上横向滚动条不可用的高度,clientHeight比起来,多个border的高度跟横向滚动条不可用的高度.

    IE scrollHeight确是指这个对象它所包含的对象的高度加上boder的高度和marging,如果它里面没有包含对象或者这个对象的高度值未设置,那么它的值将为15

    offsetHeight:这个属性好办,因为在测试中IE跟火狐的结果是一样的,均表示是自身的高度,如果有设置boder的话还应该加上boder的值,因为除了test4这个div,其他的div均有设置border=1px,所以552=550+2,其他的均一样.

    嘿嘿,综上所述,clientHeightheight的区别是如果有滚动条时应减去滚动条的17px不可用部分,offsetHeightHeight的区别是增加了boder的高度,ScrollHeihgtHeight的区别是火狐下与offsetHeight一致,IE下如上所述.

    CSS之expression

    IE5及其后续的版本支持css中的expression,expression 可以在css中调用Javascript 表达式. 最简单的应用,例如在设置高度为整个页面的高度:

    例二:利用简单的表达式将屏幕高度控制到725

    Css代码

    1. #container {
    2. expression((documentElement.clientWidth > 725) ? "725px" : "auto" );
    3. }

    #container {
    

      expression((documentElement.clientWidth > 725) ? "725px" : "auto" ); 
    

    } 
    

    expression的作用就是能够调用javascript的一些方法和参数来动态的给CSS的属性赋值,用起来是比较方便的,实现了CSS主动与javascript的互联,以往一直是在JS中通过this.style.XXX="" 来改变CSS的属性。

     

  • 相关阅读:
    Netty实例
    八大排序算法Java实现
    在linux服务器上初步定位java接口耗时
    Manjaro 18.X 配置记录
    Linux下搭建ELK和初步使用
    ubuntu下docker简单安装rabbitmq
    Linux禁启用ping的方法
    ubuntu下docker简单安装mysql
    Ubuntu18优化桌面版的运行速度
    ubuntu下webpack初始化vue项目
  • 原文地址:https://www.cnblogs.com/doit8791/p/3011356.html
Copyright © 2011-2022 走看看