zoukankan      html  css  js  c++  java
  • 用js实现的对css的一些操作方法

    用js实现的对css的一些操作方法,集合,方便需要用js控制css的朋友

    //获取元素的真实的,最终的CSS样式属性值的函数
    function getStyle(elem,name){
    if(elem.style[name]){
    return elem.style[name];
    }else if(elem.currentStyle){
    return elem.currentStyle[name];
    }else if(document.defaultView && document.defaultView.getComputedStyle){
    name = name.replace(/([A-Z])/g,"-$1");
    name = name.toLowerCase();
    var s = document.defaultView.getComputedStyle(elem,"");
    return s && s.getPropertyValue(name);
    }else{
    return null;
    }
    }
    //两个确定元素相对于整个文档的X和Y位置的辅助位置
    function pageX(elem){
    return elem.offsetParent?
    elem.offsetLeft+pageX(elem.offsetParent):
    elem.offsetLeft;
    }
    function pageY(elem){
    return elem.offsetParent?
    elem.offsetTop+pageY(elem.offsetParent):
    elem.offsetTop;
    }
    //确定元素相对于父亲的位置的两个函数
    function parentX(elem){
    return elem.parentNode == elem.offsetParent?
    elem.offsetLeft:
    pageX(elem)-pageX(elem.parentNode);
    }
    function parentY(elem){
    return elem.parentNode==elem.offsetParent?
    elem.offsetTop:
    pageY(elem)-pageY(elem.parentNode);
    }
    //确定元素相对于它的CSS容器的位置
    function posX(elem){
    return parseInt(getStyle(elem,"left"));
    }
    function posY(elem){
    return parseInt(getStyle(elem,"top"));
    }
    //设置元素x和y位置(与当前位置无关)的函数
    function setX(elem,pos){
    elem.style.left = pos+"px";
    }
    function setY(elem,pos){
    elem.style.top = pos+"px";
    }
    //调整元素相对于当前位置的距离的函数
    function addX(elem,pos){
    setX(posX(elem)+pos);
    }
    function addY(elem,pos){
    setY(posY(elem)+pos);
    }
    //获取元素当前的高度和宽度
    function getHeight(elem){
    return parseInt(getStyle(elem,'height'));
    }
    function getWidth(elem){
    return parseInt(getStyle(elem,'width'));
    }
    //即是元素隐藏,也能分别获取它潜在的完整高度和宽度的两个函数
    function fullHeight(elem){
    if(getStyle(elem,'display')!='none'){
    return elem.offsetHeight||getHeight(elem);
    }
    var old = resetCSS(elem,{
    display:'',
    visibility:'hidden',
    position:'absolute'
    });
    var h = elem.clientHeight||getHeight(elem);
    restoreCSS(elem,old);
    return h;
    }
    function fullWidth(elem){
    if(getStyle(elem,'display')!='none'){
    return elem.offsetWidth || getWidth(elem);
    }
    var old = resetCSS(elem,{
    display:'',
    visibility:'hidden',
    position:'absolute'
    });
    var w = elem.clientWidth || getWidth(elem);
    restoreCSS(elem,old);
    return w;
    }
    function resetCSS(elem,prop){
    var old = [];
    for(var i in prop){
    old[i] = elem.style[i];
    elem.style[i] = prop[i];
    }
    return old;
    }
    function restoreCSS(elem,prop){
    for(var i in prop){
    elem.style[i] = prop[i];
    }
    }
    //使用CSS的display属性来切换元素可见性的一组函数
    function hide(elem){
    var curDisplay = getStyle(elem,'display');
    if(curDisplay != 'none'){
    elem.$oldDisplay= curDisplay;
    }
    elem.style.display = 'none';
    }
    function show(elem){
    elem.style.display = elem.$oldDisplay ||'';
    }
    //设置元素的透明度
    function setOpacity(elem,level){
    if(elem.filters){
    elem.style.filters = 'alpha(opacity='+level+')';
    }else{
    elem.style.opacity = level/100;
    }
    }
    本文来自: 脚本之家(www.jb51.net) 详细出处参考:http://www.jb51.net/article/16344.htm

  • 相关阅读:
    Android Dalvik 虚拟机
    我在北京找工作(二):java实现算法<1> 冒泡排序+直接选择排序
    如何用java比较两个时间或日期的大小
    [安卓破解]听网页浏览器,无需注册即可语音朗读
    (step8.2.4)hdu 1846(Brave Game——巴什博奕)
    Oracle Database 12c Release 1 Installation On Oracle Linux 6.4 x86_64
    HDU2084:数塔(DP)
    MySQL MVCC(多版本并发控制)
    POJ
    网易前端微专业,JavaScript程序设计基础篇:数组
  • 原文地址:https://www.cnblogs.com/aion111/p/1487307.html
Copyright © 2011-2022 走看看