javascript(JS与css交互)详细介绍

简介: javascript(JS与css交互)详细介绍

一,JS与css交互基本概述

  • css有三种设置样式:行内样式,内部样式及外部样式
  • JavaScript获取css样式分两种情况:行内样式获取法非行内样式获取法

行内样式

通过element.style.attr(元素.style.属性) 即可获取设置

非行内样式

  • 因浏览器的不同又分为两种,即基于IE浏览器的

和 非IE浏览器的如谷歌火狐等。

  • 基于IE浏览器的非行内获取法:通过 element.currentStyle['attr']
  • 基于非IE如火狐谷歌等非行内获取法:通过 getComputedStyle(element.null/伪类)[attr]

【注意事项】非行内样式获取法,只能获取不能设置。

二,javaScript四大特性家族(offset/scroll/client/event )

三大系类:offset,scroll,client

事件对象:event系类(事件被触发时,鼠标和键盘的状态) (通过属性控制)

2.1 offset系类

offset:偏移量使用offset系列相关属性可以动态的得到该元素的位置(偏移)、大小等。

  • .获得元素距离带有定位父元素的位置
  • .获得元素自身的大小(宽度高度)

(1) offsetWidth 和 offsetHeight (检测盒子自身宽高+padding+border)

** offsetWidth = width + padding + border;

** offsetHeight = Height + padding + border;

(2) offsetLeft 和 offsetTop (检测距离父盒子有定位的左/上面的距离)

返回距上级盒子中带有定位的盒子左边和上边的距离。和盒子本身有无定位无关。

如果父级都没有定位则以 body 为准。

offsetLeft 从父级的 padding 开始算,父级的 border 不算。

在父盒子有定位的情况下,offsetLeft == style.left (去掉px)

(3) offsetLeft 和 style.left 区别

① 最大区别在于offsetLeft 可以返回没有定位盒子的距离左侧的位置。 而 style.left不可以。

② offsetLeft 返回的是数字,而 style.left 返回的是字符串,除了数字外还带有单位:px。

③ offsetTop 只读,而 style.top 可读写。(只读是获取值,可写是赋值)

④ 如果没有给 HTML 元素指定过 top 样式,则style.top 返回的是空字符串。

(style.left在等号的左边和右边还不一样。左边的时候是属性,右边的时候是值。)

//获取div标签距离父标签的距离。
             console.log(oDiv.offsetLeft);
            console.log(oDiv.offsetTop);
            // offsetWidth|offsetHeight  宽度:width+边框+内填充
            console.log(oDiv.offsetWidth);
            console.log(oDiv.offsetHeight);
            // style属性:只能调用行内样式
            console.log(oDiv.style.width);
            //通过currentStyle或者getComputedStyle解决非行内式样式的获取
            var width = getStyle(oDiv,"width");
            console.log(width);

2.2 client系类

client 翻译过来就是客户端,我们使用 client 系列的相关属性来获取元素可视区的相关信息。通过 client 系列的相关属性可以动态的得到该元素的边框大小、元素大小等。

(1)clientWidth 和 clientHeight

clientWidth:获取网页可视区域宽度(两种用法)

clientHeight:获取网页可视区域高度(两种用法)

调用者不同,意义不同:

盒子调用,指盒子本身;body/html调用,指可视区域大小。

(2)clientX 和 clientY

clientX:鼠标距离可视区域左侧距离(event调用)

clientY:鼠标距离可视区域上侧距离(event调用)

(3) clientTop 和 clientLeft

获取盒子的 border 宽高

(4)获取屏幕的可视区

var width = (document.documentElement.clientWidth || document.body.clientWidth)

var height = (document.documentElement.clientHeight || document.body.clientHeight)

//获取指定元素的父级元素对象,如果父级对象没有定位直接指向body
            console.log(oDiv.offsetParent);
            console.log("-------------------------------------------------");
            //clientTop获取上边框的大小
            console.log(oDiv.clientTop);
            //clientLeft获取左边框的大小
            console.log(oDiv.clientLeft);
            //获取指定元素的宽度(width+内填充)
            console.log(oDiv.clientWidth);
            //获取指定元素的宽度(width+内填充)
            console.log(oDiv.clientHeight);//200
2.3 Scroll系类

scroll翻译过来就是滚动的,我们使用scroll系类的相关属性可以

动态得到该元素的大小滚动距离等

(1) scroll Width和scroll Height(不包括border)

检测盒子的宽度。(调用者:节点元素。属性)

盒子内容的宽度。(如果有内容超出了,显示内容的高度)

IE567可以比盒子小。IE8+火狐谷歌不能比盒子小

2)scrollTop 和 scrollLeft

网页,被浏览器遮挡的头部和左边部分。

被卷去的头部和左边部分。

(3)有兼容性问题

① 未声明 DTD 时(谷歌只认识他)

document.body.scrollTop

② 已经声明DTD 时(IE678只认识他)

document.documentElement.scrollTop

③ 火狐/谷歌/ie9+以上支持的

//获取被滚动条滚去的距离
             window.onscroll = function(){
                var scrollDemo = scroll();
                console.log(scrollDemo.left)
                console.log(scrollDemo.top)
            };
            //div的实际高度
            console.log("width: "+oDiv.scrollHeight);
            console.log("width: "+oDiv.scrollWidth);
2.4 event 事件对象

(1)概述

在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的 信息。

所有浏览器都支持event对象,但支持的方式不同。

比如鼠标操作时候,会添加鼠标位置的相关信息到事件对象中。(类似Date)

普通浏览器支持 event(带参,任意参数)

ie 678 支持 window.event(无参,内置)

(2) 事件对象 event 的获取

IE678中,window.event

在火狐谷歌中,event或者,在事件绑定的函数中,加参,这个参数就是event.

Box.onclick = function (aaa){ aaa就是event }

(3) 兼容获取方式有两种:

不写参数直接使用event;

写参数,但是参数为event

var event = event || window.even

目录
相关文章
|
17天前
|
JavaScript 前端开发 Go
CSS 与 JS 对 DOM 解析和渲染的影响
【10月更文挑战第16天】CSS 和 JS 会在一定程度上影响 DOM 解析和渲染,了解它们之间的相互作用以及采取适当的优化措施是非常重要的。通过合理的布局和加载策略,可以提高网页的性能和用户体验,确保页面能够快速、流畅地呈现给用户。在实际开发中,要根据具体情况进行权衡和调整,以达到最佳的效果。
|
5天前
|
前端开发 JavaScript
如何在 JavaScript 中访问和修改 CSS 变量?
【10月更文挑战第28天】通过以上方法,可以在JavaScript中灵活地访问和修改CSS变量,从而实现根据用户交互、页面状态等动态地改变页面样式,为网页添加更多的交互性和动态效果。在实际应用中,可以根据具体的需求和场景选择合适的方法来操作CSS变量。
|
5天前
|
前端开发 JavaScript 数据处理
CSS 变量的作用域和 JavaScript 变量的作用域有什么不同?
【10月更文挑战第28天】CSS变量和JavaScript变量虽然都有各自的作用域概念,但由于它们所属的语言和应用场景不同,其作用域的定义、范围、覆盖规则以及与其他语言特性的交互方式等方面都存在明显的差异。理解这些差异有助于更好地在Web开发中分别运用它们来实现预期的页面效果和功能逻辑。
|
5天前
|
设计模式 前端开发 JavaScript
揭秘!前端大牛们如何巧妙利用JavaScript,打造智能交互体验!
【10月更文挑战第30天】前端开发领域充满了无限可能与创意,JavaScript作为核心语言,凭借强大的功能和灵活性,成为打造智能交互体验的重要工具。本文介绍前端大牛如何利用JavaScript实现平滑滚动、复杂动画、实时数据更新和智能表单验证等效果,展示了JavaScript的多样性和强大能力。
17 4
|
5天前
|
前端开发 JavaScript UED
如何使用 JavaScript 动态修改 CSS 变量的值?
【10月更文挑战第28天】使用JavaScript动态修改CSS变量的值可以为页面带来更丰富的交互效果和动态样式变化,根据不同的应用场景和需求,可以选择合适的方法来实现CSS变量的动态修改,从而提高页面的灵活性和用户体验。
|
26天前
|
存储 JavaScript 前端开发
【JavaScript】网页交互的灵魂舞者
本文介绍了 JavaScript 的三种引入方式(行内、内部、外部)和基础语法,包括变量、数据类型、运算符、数组、函数和对象等内容。同时,文章还详细讲解了 jQuery 的基本语法和常用方法,如 `text()`、`html()`、`val()`、`attr()` 和 `css()` 等,以及如何插入和删除元素。通过示例代码和图解,帮助读者更好地理解和应用这些知识。
13 1
【JavaScript】网页交互的灵魂舞者
|
11天前
|
JSON 移动开发 数据格式
html5+css3+js移动端带歌词音乐播放器代码
音乐播放器特效是一款html5+css3+js制作的手机移动端音乐播放器代码,带歌词显示。包括支持单曲循环,歌词显示,歌曲搜索,音量控制,列表循环等功能。利用json获取音乐歌单和歌词,基于html5 audio属性手机音乐播放器代码。
55 6
|
1月前
|
人工智能 JavaScript 前端开发
使用Node.js模拟执行JavaScript
使用Node.js模拟执行JavaScript
|
1月前
|
消息中间件 JavaScript 前端开发
用于全栈数据流的 JavaScript、Node.js 和 Apache Kafka
用于全栈数据流的 JavaScript、Node.js 和 Apache Kafka
40 1
|
22天前
|
Web App开发 JavaScript 前端开发
Node.js:JavaScript世界的全能工具
Node.js:JavaScript世界的全能工具

热门文章

最新文章