博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对于盒模型的宽高获取填坑
阅读量:5010 次
发布时间:2019-06-12

本文共 1041 字,大约阅读时间需要 3 分钟。

        最近,在做一个项目的时候,要获取一个盒模型的宽度,那么当时想到的方法就是el.style.width.我们先看一段代码。

1  2  3  4     juke 5     12 13 14 
15 16 20 21

        最后输出的是"",很诧异为什么获取不到宽度呢?当我们把第14行的代码改动一下,<div id="box" style="width=300px"></div>这时候我们就获取到了宽度值,那么对于这种获取的方法,我们可以看出,只能获取到内嵌样式的宽高,而对于其他的形式是获取不到的。

        现在,我们来思考一下,我们要怎么去获取到不是内嵌样式的宽高呢?看了很多资料,有这些办法使我们能使用的。

 1 el.currentStyle.width; // 但是这个方法有局限性,那就是只有IE才支持 

        那么还有没有其他的办法呢,当然有。window.getComputedStyle(dom),这个方法能获取当前元素css的最终属性值,那么这个方法就没有局限性了吗,答案是当然是有的,这个方法我们只能用来获取,不能用来设置,这就是这个方法的局限性。

        还有一种方法,请看下面的代码:

1 var box=document.getElementById('box');2 //  这个属性有四个值top、right、left、bottom3 //  它是代表和页面上边和左边的距离4 box.getBoundingClientRect().top;  //  元素上边到视窗上边的距离5 box.getBoundingClientRect().right //  元素右边到视窗左边的距离6 box.getBoundingClientRect().bottom; //  元素下边到视窗上边的距离7 box.getBoundingClientRect().left; //  元素左边到视窗左边的距离8 9 //  获得元素的宽高,说一点在标准盒子模型下,他获取到的盒子的宽度是content-width+border+padding  而在IE盒子模型下他获取到的是你设置的宽度,因为在IE盒子模型下padding和border是算在width里的 10 box.getBoundingClientRect().width;

这是对这周工作中遇到的一个小问题的总结。

 

转载于:https://www.cnblogs.com/zhangjuke/p/7353484.html

你可能感兴趣的文章
Deep Learning 9: Performance
查看>>
面试题61 把二叉树打印成多行
查看>>
C#例子 易懂故事 接口 委托 事件 异步通知 好玩.
查看>>
[转]Windows Shell 编程 第十一章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987992】...
查看>>
修改presto新版源码让他支持redash数据库
查看>>
Javascript的书写位置
查看>>
树-线索二叉树
查看>>
JAVA遇见HTML——Servlet篇:Servlet基础
查看>>
第二章 Vue快速入门--20 品牌案例-完成品牌列表的添加功能+ 21 品牌案例-根据Id完成品牌的删除...
查看>>
Java单例模式
查看>>
重温WCF之消息契约(MessageContract)(六)
查看>>
Excel2007制作直方图和正态分布曲线图
查看>>
android adb常用指令
查看>>
Android框架之路——GreenDao3.2.2的使用
查看>>
类方法WCF学习笔记-KnowTypeAttribute用法
查看>>
平台程序微信平台开发应用的签名
查看>>
程序卡OK6410裸板更新程序_update
查看>>
MYSQL用户名:root
查看>>
JavaScript 开发规范要求
查看>>
Devstack 安装OpenStack Pike版本(单机环境)
查看>>