js offset系列属性
offsetParent:返回该元素有定位的父级,如果父级都没有定位则返回body- offsetTop:返回元素相对父级(带有定位的父级)上方的偏移
- offsetLeft:返回元素相对父级(带有定位的父级)左边框的偏移
- offsetWidth:返回自身的宽度,包括padding、border、内容区,返回数值不带单位
- offsetHeight:返回自身的高度,包括padding、border、内容区,返回数值不带单位
- style.width 只能获取行内样式的数据,返回有单位,能用js修改数值
- offsetWidth只能读不能改,返回无单位
注意:<style></style>要放在js代码前面,js中才能正确获取offset系列属性。如果style代码要放在js代码后面,需要使用 window.onload 等待资源加载完毕再执行js代码。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div class="parent">
<div class="child">child</div>
<div id="style" style="width: 88px;height: 66px;background-color: #00FFFF;">
test style
</div>
</div> </body>
<script>
window.onload = function(){
/**
* offsetParent:返回该元素有定位的父级,如果父级都没有定位则返回body
*
* offsetTop:返回元素相对父级(带有定位的父级)上方的偏移
* offsetLeft:返回元素相对父级(带有定位的父级)左边框的偏移
* offsetWidth:返回自身的宽度,包括padding、border、内容区,返回数值不带单位
* offsetHeight:返回自身的高度,包括padding、border、内容区,返回数值不带单位
*
* style.width 只能获取行内样式的数据,返回有单位,能用js修改数值
* offsetWidth只能读不能改,返回无单位
* */
var parent = document.querySelector(".parent");
console.log("parentNode:",parent.parentNode);
var child = document.querySelector(".child");
console.log("offsetParent:", child.offsetParent);
console.log("offsetTop:", child.offsetTop);
console.log("offsetLeft:", child.offsetLeft);
console.log("offsetWidth:", child.offsetWidth);
console.log("offsetHeight:", child.offsetHeight); console.log("--------------------------------");
var style = document.querySelector("#style");
console.log("offsetWidth:",style.offsetWidth);
console.log("style.width:",style.style.width);
style.style.width = 111+"px";//这句生效,注意加单位
console.log(style.style.width);
style.offsetWidth = 222+"px";//这句不生效
console.log(style.offsetWidth);
}
</script> <style>
* {
padding: 0;
margin: 0;
} .parent {
position: relative;
display: inline-block;
width: 200px;
height: 200px;
margin: 50px;
background-color: #008000;
} .child {
display: inline-block;
position: absolute;
width: 50px;
height: 50px;
margin: 10px;
border: 5px solid yellow;
background-color: red;
}
#style{
position: absolute;
bottom: 0;
right: 0;
}
</style>
</html>

style和offsetWidth的区别:
- style.width 只能获取行内样式的数据,返回有单位,能用js修改数值
- offsetWidth只能读不能改,返回无单位

对于“style.width 只能获取行内样式的数据 ”,如果没有行内样式,第一次获取style.width 会是空,但是给style.width 赋值后,再次获取能正常获取到值。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
div{
width: 100px;
height: 100px;
position: absolute;
background-color: #008099;
}
</style>
</head>
<body>
<div></div>
</body>
<script type="text/javascript">
var div = document.querySelector("div");
// div.style.left = 102 + "px";
console.log(div.style.left);
</script>
</html>

div.style.left = 102 + "px";
console.log(div.style.left);

js offset系列属性的更多相关文章
- offset系列属性
offset系列:获取元素的相关的样式属性的值 offsetwidth:获取元素的宽 offsetheight:获取元素的高 offsetleft:获取元素距离左边位置的值 offsettop;获取元 ...
- JavaScript学习笔记5 之 计时器 & scroll、offset、client系列属性 & 图片无缝滚动
一.计时器 setInterval ( 函数/名称 , 毫秒数 )表示每经过一定的毫秒后,执行一次相应的函数(重复) setTimeout ( 函数/名称 , 毫秒数 ) 表示经过一定的毫秒后,只执行 ...
- 系列属性(offset、scroll、client)
一.offset系列属性 <div id="dv"></div> <!-- 已在style标签里设置div宽高各100px --> <sc ...
- JS组件系列——使用HTML标签的data属性初始化JS组件
前言:最近使用bootstrap组件的时候发现一个易用性问题,很多简单的组件初始化都需要在JS里面写很多的初始化代码,比如一个简单的select标签,因为仅仅只是需要从后台获取数据填充到option里 ...
- javascript总结46: JS三大系列-方便的offset 家族
1 offset 家族 offset这个单词本身是--偏移,补偿,位移的意思. js中有一套方便的获取元素尺寸的办法就是offset家族: 2 offset 结构介绍为: 3 offset常用属性 ...
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(四):自定义T4模板快速生成页面
前言:上篇介绍了下ko增删改查的封装,确实节省了大量的js代码.博主是一个喜欢偷懒的人,总觉得这些基础的增删改查效果能不能通过一个什么工具直接生成页面效果,啥代码都不用写了,那该多爽.于是研究了下T4 ...
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查
前言:之前博主分享过knockoutJS和BootstrapTable的一些基础用法,都是写基础应用,根本谈不上封装,仅仅是避免了html控件的取值和赋值,远远没有将MVVM的精妙展现出来.最近项目打 ...
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(二)
前言:上篇 JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(一) 介绍了下knockout.js的一些基础用法,由于篇幅的关系,所以只能分成两篇,望见谅!昨天就 ...
- JS组件系列——表格组件神器:bootstrap table
前言:之前一直在忙着各种什么效果,殊不知最基础的Bootstrap Table用法都没有涉及,罪过,罪过.今天补起来吧.上午博主由零开始自己从头到尾使用了一遍Bootstrap Table ,遇到不少 ...
随机推荐
- exe图标消失的解决方案
步骤 win + r组合键打开运行窗口 输入cmd,回车 在终端窗口右键粘贴即可 taskkill /im explorer.exe /f cd /d %userprofile%\appdata\lo ...
- Win7恢复注册表
前言 安装仿真实验环境的时候,按照指引把杀软关了,然后出现了"不是有效Win32应用程序"的错误,bd了一下解决方案,爬到了一篇文章:删除注册表中的.exe然后重启,然后,所有的e ...
- I/O系统
I/O系统的组成 外部设备 接口部件 总线 相应的管理软件 I/O软件 将用户编制的程序(或数据)输入主机内 将运算结果输出给用户 实现输入输出系统与主机工作的协调 I/O系统的基本功能 完成计算机内 ...
- 浏览器有别_HTTP报文的回车换行
本来以为浏览器HTTP报文的生成应该是完全一致的.但最近在做一个项目的时候,发现Safari和Chrome提交同一份表单,后端的处理结果不一致.看提交结果呢,是因为Safari多了个回车.由于原项目的 ...
- 初始HTML04
HTML 列表标签 无序列表 默认用实心圆点标识列表项 1 <ul> 2 <li>list item 列表项</li> 3 <li>list item ...
- JavaScript中的模式匹配
JavaScript中的模式匹配 模式是用于转换输入数据的规则. 以将数据与一个或多个逻辑结构进行比较,将数据分解为各个构成部分,或以各种方式从数据中提取信息. 安装 JavaScript已经实现模式 ...
- DDD领域驱动设计-案例建模设计-Ⅲ
1. 背景 参考<DDD领域驱动设计-案例需求文档>,本文将构建实体,聚合根详述领域驱动中的建模设计.构建实体,聚合根的一些原则或方法,将在后续文章中说明. 2. 建模设计 2.1. 实体 ...
- 攻防世界 杂项 10.2017_Dating_in_Singapore
题目描述: 01081522291516170310172431-050607132027262728-0102030209162330-02091623020310090910172423-0201 ...
- ASP.NET MVC 中使用 jQuery 实现异步搜索功能
常见的几种异步请求方式: Ajax.BeginForm 异步提交文本的形式 Ajax.ActionLinkk 文本链接的形式 Client Validataion 客户端的认证 一.用jQuer ...
- sort-list leetcode C++
Sort a linked list in O(n log n) time using constant space complexity. C++ /** * Definition for sing ...