对于盒模型的宽高获取填坑

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

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title>juke</title>
 5     <style type="text/css">
 6         #box {
 7             width: 300px;
 8             height: 300px;
 9             border: 1px solid #000;
10         }
11     </style>
12 </head>
13 <body>
14 <div id="box"></div>
15
16 <script type="text/javascript">
17     var width = document.getElementById("box").style.width;
18     console.log(width);  // ""
19 </script>
20 </body>
21 </html>

最后输出的是"",很诧异为什么获取不到宽度呢?当我们把第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、bottom
3 //  它是代表和页面上边和左边的距离
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; 

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

时间: 2024-08-16 14:04:58

对于盒模型的宽高获取填坑的相关文章

(前端)html与css,css 8、盒模型、宽高、盒模型内减

盒模型 概述 盒模型:也叫框模型 一个盒子内容包含了五部分:宽度.高度.内边距.边框.外边距. 代码↓ <!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"

JS设置和获取盒模型的宽和高

dom.style.width/height:只能取出内联样式的宽度和高度 dom.currentStyle.width/height:获取即时的计算的样式,但是只有IE支持 window.getComputedStyle(dom).width:获取即时计算的样式,支持其他浏览器,兼容性更好 dom.getBoundingClientRect( ).width/height:计算盒模型在页面中的绝对位置,比较少用. dom.offsetWidth/offectHeight:返回元素实际大小 一.

使用js如何设置、获取盒模型的宽和高

第一种: dom.style.width/height 这种方法只能获取使用内联样式的元素的宽和高. 第二种: dom.currentStyle.width/height 这种方法获取的是浏览器渲染以后的元素的宽和高,无论是用何种方式引入的css样式都可以,但只有IE浏览器支持这种写法. 第三种: window.getComputedStyle(dom).width/height 这种方法获取的也是浏览器渲染以后的元素的宽和高,但这种写法兼容性更好一些. 第四种: dom.getBounding

深入理解CSS盒模型

如果你在面试的时候面试官让你谈谈对盒模型的理解,你是不是不知从何谈起.这种看似简单的题其实是最不好答的. 下面本文章将会从以下几个方面谈谈盒模型. 基本概念:标准模型 和IE模型 CSS如何设置这两种模型 JS如何设置获取盒模型对应的宽和高 实例题(根据盒模型解释边距重叠) BFC(边距重叠解决方案) 基本概念 盒模型的组成大家肯定都懂,由里向外content,padding,border,margin. 盒模型是有两种标准的,一个是标准模型,一个是IE模型. 从上面两图不难看出在标准模型中,盒

CSS盒模型的介绍

CSS盒模型的概念与分类      CSS盒模型就是一个盒子,封装周围的HTML元素,它包括内容content.边框border.内边距padding.外边距margin. CSS盒模型分为标准模型和IE模型: 标准模型和IE模型的区别       标准模型的width是内容content 的宽度:                                                   设置方式: box-sizing:content-box;        IE模型的width是内

安卓获取屏幕宽高/分辨率相关信息的方式

private void getSystemInfo() { //第一种方式获取屏幕的像素宽高在Activity里面可使用 //DisplayMetrics metric = new DisplayMetrics(); //Activity.getWindowManager().getDefaultDisplay().getMetrics(metric); //第二种方式获取屏幕的像素宽高 //获取屏幕的像素高度PIX screenHeight = getResources().getDispl

android获取屏幕宽高与获取控件宽高

获取屏幕宽高 // 获取屏幕宽高(方法1) int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 屏幕宽(像素,如:480px) int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); // 屏幕高(像素,如:800p) Log.e(TAG + " getDefaultDisplay", "screen

css盒模型

css盒子模型是为了让我们充分理解div+css模型的定位功能,盒子模型在学习div+css布局方式中必须要学习的一个模型. 那什么是css盒模型呢? 网页设计中常听到的属性名:内容(content).填充(padding).边框(border).边界(margin).css盒模型都具备这些属性.这些属性和日常生活中盒子的属性是一样的.内容就是盒子里面装的东西,而填充就是像盒子里装的一些反震的材料,边框就是箱子的本身,边界呢就像盒子之间的空隙. 盒子的模型有2种,分别是IE盒子模型和标准盒子模型

什么是CSS盒模型 ?IE盒模型和W3C盒模型是什么?

1.CSS盒模型 盒模型,顾名思义就是一个盒子.生活中的盒子,有长宽高,盒子本身也有厚度,可以用来装东西.页面上的盒模型我们可以理解为,从盒子顶部俯视所得的一个平面图,盒子里装的东西,相当于盒模型的内容(content):东西与盒子之间的空隙,理解为盒模型的内边距(padding):盒子本身的厚度,就是盒模型的边框(border):盒子外与其他盒子之间的间隔,就是盒子的外边距(margin).其中CSS盒模型(图1)分为IE盒模型(图2)和W3C盒模型(图3). 盒模型一共有两种模式,一种是标准