css基础--控制大小

获取大小

<div id="div" style="border:solid;"></div>
        <script type="text/javascript">
            var div=document.getElementsByTagName("div")[0];
//        alert(div.style.width);//空字符串
    function  getStyle(e,n){//e表示元素,n表示属性名,如“width”、“borderColor”
        if(e.style[n]){//若果在style中显式定义
            return e.style[n];
        }else if(e.currentStyle){//否则,在IE
            return e.currentStyle[n]
        }else if(document.defaultView&&document.defaultView.getComputedStyle){//非ie(DOM标准)
            n=n.replace(/([A-Z])/g,"-$1");//转换参数的属性名  borderColor--> border-Color
            n=n.toLocaleLowerCase();//border-Color-->border-color
            var s= document.defaultView.getComputedStyle(e,null);
            if(s){
                return s.getPropertyValue(n)
            }
        }else{
            return null;//如果不支持,返回null
        }
    }
    var w=getStyle(div,"width");
    alert(w);//屏幕可视宽度1350px;若在style设置了width,则显示具体设置的值
        </script>
        <div id="div1" style="width:200px;"></div>
        <script>
            var div1=document.getElementsByTagName("div")[1];
            var w1=getStyle(div1,"width");
             alert(w1);//200px
        </script>
    </body>

获取大小(百分比值时)

<body>
        <div style="width:200px;">
            <div style="width:50%;">
                <div style="width:50%;">
                    <div style="width:50%;">
                       <div id="div" style="border:solid 0px;">
                           
                       </div>
                    </div>
                </div>
            </div>
        </div>
        <script type="text/javascript">
            function  getStyle(e,n){//e表示元素,n表示属性名,如“width”、“borderColor”
                if(e.style[n]){//若果在style中显示定义
                    return e.style[n];
                    }else if(e.currentStyle){//否则,在IE
                        return e.currentStyle[n]
                    }else if(document.defaultView&&document.defaultView.getComputedStyle){//非ie(DOM标准)
                        n=n.replace(/([A-Z])/g,"-$1");//转换参数的属性名  borderColor--> border-Color
                        n=n.toLocaleLowerCase();//border-Color-->border-color
                        var s= document.defaultView.getComputedStyle(e,null);
                        if(s){
                            return s.getPropertyValue(n)
                        }
                    }else{
                        return null;//如果不支持,返回null
                    }
            }
    
    function  fromStyle(e,w,p){//e为元素,w为样式属性值,p为百分号转为小数值
        var p = arguments[2];//获取百分比转换后的小数值
        if(!p){p=1}
        if(/px/.test(w)&&parseInt(w)){//像素值
            return parseInt(parseInt(w)*p);//如果元素尺寸的值为具体的像素值,则直接转换为数字,并乘以百分比值,并返回该值
        }else if(/\%/.test(w)&&parseInt(w)){//若果为%值
            var b=parseInt(w)/100;  
            if((p!=1)&&p){
                b*=p;//如果子元素也是百分比,则乘以转换后的小数值
            }
            e=e.parentNode;//获得父元素的引用指针
            if(e.tagName=="BODY"){//如果父元素是body元素,则抛出异常
                throw new Error("整个文档结构没有固定尺寸,没发计算了,请使用其他方法获取尺寸")
            }
            w=getStyle(e,"width");//获取宽度值
            return arguments.callee(e,w,b);
        }else if(/auto/.test(w)){//默认值时
            var b=1;
            if((p!=1)&&p){
                b*=p;//如果子元素也是百分比,则乘以转换后的小数值
            }
            e=e.parentNode;//获得父元素的引用指针
            if(e.tagName=="BODY"){//如果父元素是body元素,则抛出异常
                throw new Error("整个文档结构没有固定尺寸,没发计算了,请使用其他方法获取尺寸")
            }
            return arguments.callee(e,w,b);
        }else{
            throw new Error("元素或其父元素的尺寸定义了特殊单位")
        }
        
    }
    
    var div=document.getElementById("div");
    var w=getStyle(div,"width");
    w=fromStyle(div,w);
    alert(w);//25,因为style里有border(默认为3px ,设置为0px返回25px),不设定义了border则变成了19
    
        </script>
    </body> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值