js,mui,jq 操作基本的DOM
一。HTML
<ul>
<li>1111111</li>
<li>22222222</li>
</ul>
二。CSS
li{
height: 60px;
line-height: 60px;
text-align: center;
font-size: 14px;
color: red;
padding: 4px;
border: 1px solid black;
}
1.获取宽高:
jq:$("div").height();
js:document.getElementsByTagName("ul")[0].getElementsByTagName("li")[0].offsetHeight;
mui:获取第一个li高度就是mui("ul li")[0].offsetHeight;第二个li就是mui("ul li")[1].offsetHeight;
备注:来看看height,scrollHeight,offsetHeight,clientHeight这几个的区别与联系:
clientHeight:理解为内容可视区域的高度,不包含border,不包含border,不包含border;padding是算在里面的。就是clientHeight=height(设置的高度) + padding - 横向滚动条的高度;
offsetHeight:offsetHeight = clientHeight + border + 横向滚动条(横向,横向,就是overflow-x:scroll出现的那个滚动条的高度,默认应该都是17px);
scrollHeight: 经过测试,我得出:scrollHeight=clientHeight+滚动条滚动的距离(高度就是竖直滚动条滚动的距离,宽度就是横向滚动条滚动的距离);
注意了,注意了:在mui里面,在mui里面,在mui里面,clientHeight,offsetHeight的滚动条是不算高度的,也就是offsetHeight = clientHeight + border。clientHeight=height-border;辣么在mui里面上面的li:offsetHeight=height,clientHeight就是58px;
总结:1.pc端:clientHeight=height(设置的高度) + padding - 横向滚动条的高度,如果没有滚动条就不减;offsetHeight = clientHeight + border + 横向滚动条,如果没有滚动条就不加;
2.移动端:2.1 有mui.css:offsetHeight = clientHeight + border。clientHeight=height-border;滚动条不算宽高。 (火狐浏览器里调试一定要设置成响应式设计模式哦,不然得出的高度会让你怀疑人生的)
2.2 无mui.css,只有<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />;
有无滚动条都是:clientHeight=height(设置的高度) + padding;offsetHeight=clientHeight+border;
其它浏览器版本没测试过,不知道是否是一样的。
高度明白了,宽度就是一样的道理。。。
还有:js操作dom元素什么时候加[0]。document.getElementById("")这种,因为id在页面中是唯一的一个所以,通过id来寻找的是不用加[0]的,但是document.getElementsByTagName或者document.getElementsByClassName("")这种,页面上可能含有多个,是个数组,所以需要用[ 0 ],相当于索引一样来获取。mui类似。
jQuery有时候也会有加[0]的时候,比如$("div")[0].innerHtml = "111",是因为innerHtml是一个DOM对象的属性,需要把jQuery对象转换成DOM对象才能使用innerHtml属性,不然会报错。其实jQuery也有自己的innerHtml方法,就是$("div").html(“111”);
2.添加和删除Class属性(mui的添加和删除感觉和原生的一样)
jq: 添加:$("ul li:nth-child(1) p").addClass("active");
删除:$("ul li").eq(0).find("p").removeClass("active");
js: 添加:document.getElementsByTagName("ul")[0].getElementsByTagName("li")[0].classList.add("active")
删除:document.getElementsByTagName("ul")[0].getElementsByTagName("li")[0].classList.remove("active")
mui: 添加:mui("ul li")[1].classList.add("active")
删除:mui("ul li")[1].classList.remove("active")
3.CSS属性的设置和获取:
jq:设置:$("ul li").css("background","red");
获取:$("ul li").css("background");
js: 设置:js设置css样式有以下几种方式:element是获取到的DOM对象
1.element.style.width="100px" //style对象下面的属性介绍http://www.w3school.com.cn/jsref/dom_obj_style.asp
2.element.style.cssText="width:100px;height:100px";//一次可以设置多个属性
3.element.setAttribute('style', 'height: 100px');
4.element.style.setProperty("background","red");
获取:1.element.style.backgroundColor //只能获取内联样式 ,但是backgroundColor非内联也可获取。注:如果是background-color这种,需要写成驼峰样式即backgroundColor。
2.element.currentStyle.height //IE浏览器获取非内嵌样式
3.在非IE浏览器:window.getComputedStyle(element,null/伪类).height;如果是element本身,那么第二个参数就是null,如果需要伪类的样式,则第二个参数为伪类。document.defaultView.getComputedStyle(element,null/伪类)一样的。
备注:做兼容:var a=element.currentStyle ? element.currentStyle : window.getComputedStyle(element, null)。看是否支持currentStyle,也就是看是否处在ie浏览器下。
mui:
其它的请看我的这篇详细文章
js,mui,jq 操作基本的DOM的更多相关文章
- js和jq文档操作
JS文档操作 一.dom树结构 1.元素节点 2.文本节点 3.属性节点 不属于元素节点的子节点 4.文档节点(document) 二.处理元素节点 method 1.docu ...
- jq选择器(jq 与 js 互相转换),jq操作css样式 / 文本内容, jq操作类名,jq操作全局属性,jq获取盒子信息,jq获取位置信息
jq选择器(jq 与 js 互相转换) // 获取所有的页面元素jq对象 $('css3选择器语法'); var $box = $(".box:nth-child(1)"); 获取 ...
- JS中Float类型加减乘除 修复 JQ 操作 radio、checkbox 、select LINQ to SQL:Where、Select/Distinct LINQ to SQL Count/Sum/Min/Max/Avg Join
JS中Float类型加减乘除 修复 MXS&Vincene ─╄OvЁ &0000027─╄OvЁ MXS&Vincene MXS&Vincene ─╄Ov ...
- jq与js获取值操作
jq与js获取值操作 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...
- mui webview操作
HBuilder的webview操作 webviewAPI文档:http://www.html5plus.org/doc/zh_cn/webview.html 创建新的webview窗口: Webvi ...
- JS与JQ的对比与提高
来吧, 案例1:先上个例子js写的省市二级联动 <!DOCTYPE html><html> <head> <meta charset="UTF-8& ...
- JS、JQ相关小技巧积攒
JS.JQ相关小技巧积攒,以备不时之需. 1.js 获取时间差:时间戳相减.new Date().getTime() 获得毫秒数,除以(1000*60*60*24) 获得天数. 2.重定向操作:页面 ...
- 【转】从Vue.js源码看异步更新DOM策略及nextTick
在使用vue.js的时候,有时候因为一些特定的业务场景,不得不去操作DOM,比如这样: <template> <div> <div ref="test" ...
- html select控件的jq操作
html select控件的jq操作 1.判断select选项中 是否存在Value="paraValue"的Item $("#selectid option[@valu ...
随机推荐
- Finished yeah!
终于到了最后的博客阶段,这时候才知道博客此时此刻是多么的惬意,它成了书写心声的自由平台!耗时一天完成这作业说起来也是蛮辛苦的,编译器需要新装,IDE需要熟悉,当然最主要的是之前浅入浅出的C++功底在此 ...
- 个人作业Week1
一.<构建之法>提问 1.需求是什么?需求的规范需要明确吗? 2.一个人开发效率非常高,多人开发,个人效率随团队人数上升而直线下降,我们一般需要将大项目拆为小项目,使协作耦合产生的效率负影 ...
- python 函数及变量作用域及装饰器decorator @详解
一.函数及变量的作用 在python程序中,函数都会创建一个新的作用域,又称为命名空间,当函数遇到变量时,Python就会到该函数的命名空间来寻找变量,因为Python一切都是对象,而在命名空间中 ...
- shell脚本--文件查找之find命令
首先是通过文件名称来查找,需要使用一个-name参数. 查询以 .txt结尾的文件,和以 t 开头的文件: ubuntu@ubuntu:~/test$ ls one.txt three.txt tw ...
- Docker attach
Description Attach local standard input, output, and error streams to a running container Usage dock ...
- Trouble shooting(问题解决):centos 7 gnome show someting has gone wrong.
centos 7 升级 内核 3.10,startx启动不了了.进界面也是oh,no!someting has gone wrong . 参见帖子:http://bbs.csdn.net/topics ...
- 将ubuntu14.04 从mysql从5.5删除之后安装5.7遇到的一些问题(本篇不讨论热升级)
五一放假实在无聊 继续玩弄新的服务器.发现有台mysql版本实在有点老,估计是akiho直接使用 apt-get install mysql-server ,然后又没有更新到最新的源,然后无脑安装了5 ...
- 关于WrapPanel和RadioButton相互配合使用实WrapPanel现动态添加或删除项
最近在做一个项目的时候,有一个需求就是,通过RadioButton来控制一行内容的显示与不显示,当不显示的时候,下面的项能够占住相应的位置,当增加的时候,又会在原来的位置重新显示,如果使用一般的Gri ...
- Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 7. 条件循环
条件循环能够让程序在条件成立时(即为真时)重复执行循环体中的语句.如果条件一直成立(即永远不会为假),则循环会一直进行下去,不会停止.如果初始时,条件不成立,则循环 1 次也不会执行.Python 中 ...
- 优步加入Linux基金会:支持开源
导读 当地时间11月16日,优步在Uber Open Summit 2018年度峰会上宣布加入Linux基金会,并作为金级会员坚定支持对开源工具的使用和贡献. 优步CEO Thuan Pham将Lin ...