JS和CSS的交互

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 主写的是js与css怎么样去交互,有什么样式和方法。最后面也写了四大系列接触编程语言第一次发布作品见谅

一、JS与css交互的基本介绍

1、问题引入

css样式设置三种方式: 行内式、内部式和外部式。
JavaScript获取css样式有两种情况:行内样式非行内样式

2、行内样式

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

3、非行内式

因浏览器的不同,一种基于IE浏览器和非IE浏览器

基于IE的非行内获取:element.currentStyle['attr']
基于非IE的非行内获取:getComputedStyle(element.null/伪类)[attr]
【PS】非行内的只能获取不能设置*

//函数封装,方便调用:兼容所有浏览器
function getStyle(obj,name){
   //obj:操作那个标签 name:该标签的属性
if (obj.currentStyle) {
    //兼容IE
        return obj.currentStyle[name];
    } else {
    //兼容非IE
        return getComputedStyle(obj, false)[name];
    }
}

二、JavaScript 四大特效

三大系列:offset、scroll、client 事件对象:event (事件被触动时,鼠标和键盘的状态,通过属性控制)

1、offset 系列

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

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

offsetWidthoffsetHeight

  • 检测盒子自身宽高+padding+border
offsetWidth = width + padding + border;
offsetHeight = Height + padding + border;

offsetLeftoffsetTop

  • 检测距离父盒子有定位的左/上面的距离

返回距上级盒子中带有定位的盒子左边和上边的距离。和盒子本身有无定位无关。
如果父级都没有定位则以 body 为准。
offsetLeft 从父级的 padding 开始算,父级的 border 不算。
在父盒子有定位的情况下,offsetLeft == style.left (去掉px)

offsetLeftstyle.left 区别

  • 最大区别在于offsetLeft 可以返回没有定位盒子的距离左侧的位置。 而 style.left不可以。
  • offsetLeft 返回的是数字,而 style.left 返回的是字符串,除了数字外还带有单位:px。
  • offsetTop只读,而 style.top 可读写。(只读是获取值,可写是赋值)
  • 如果没有给 HTML 元素指定过 top 样式,则style.top 返回的是空字符串。(style.left在等号的左边和右边还不一样。左边的时候是属性,右边的时候是值。)

2、client系列

client 客户端,使用 client 系列的相关属性来获取元素可视区的相关信息。通过 client 系列的相关属性可以得到元素的边框大小,元素大小。

clientWidthclientHeight

clientWidth:获取网页可视区域宽度
clientHeight:获取网页可视区域高度

//奇怪的浏览器
var w1=document.body.clientWidth;
//标准浏览器
var w2=document.documentElement.clientWidth;
//IE9+
window.innerWidth;

clienetXclientY

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

clientTopclientLeft

获取盒子的border的宽高,
获取屏幕的可视区兼容的写法

function client(){
   
    if(window.innerWidth !=null){
   //IE9+ 目前最新的浏览器
        return{
   
        width:window.innerWidth,
        height:window.innerHeight;
        }
    }else if(document.compatMode ==="CSS1Compat"){
   //标准的浏览器
        return{
   
        width:document.documentElement.clientWidth,
        height:document.documentElement.clientHeight;
        }
    }
    return{
   //奇怪的浏览器
        width:document.body.clientWidth,
        height:document.body.clientHeight;
    }
}

未声明DTD时

document.body.scrollTop

声明DTD时

document.documentElement.scrollTop

以上支持的

window.pageYOffset

3、Scroll系列

scroll 滚动的,使用相关属性可得到改元素的大小。滚动距离等。

ScrollWidthScrollHeight(不包border)

检测盒子的宽高。(调用者:节点元素、属性)
盒子内容的宽高。(如有内容超出,显示内容的高度)

4、event事件对象

一个事件中的内置对象,内部装了很多关于鼠标和事件本身的信息。

event的获取

在事件绑定的函数中,加参数,这个参数就是ecent
Box.onclick=function (event){
   }

兼容获取方式

  • 不写参数直接使用event
  • 写参数,但是参数为event
    event ||window.event
    
    scrennX 、pageX 和clientX 的区别

pageY /pageX:鼠标位于整个页面的顶部和左侧部分的距离。(页面)
pcreenY /pcreenX:鼠标位于屏幕的上方和左侧的距离。(屏幕)
clientY /clientX:鼠标位于浏览器的左侧和顶部的距离。(浏览器大小和位置)

pageY 和pageX的兼容写法

页面的位置=看得见+看不见
pageX/Y=event.clientX/Y+scroll().top/scroll().left

5、三大系列区别

  1. Width 和 height

clientWidth=width+padding
clientHeight=height+padding
offsetWidth=width+padding+border
offsetHeight=height+padding+border
scrollWidth=内部宽度(不包含border)
scrollHeight=内部高度(不包含border)

2.top 和 left

`offsetTop`/`offsetleft`:
                    调用者:任意元素。(盒子为主)
                    作用:距离父系盒子中带有定位的距离
    `scrollTop`/`scrollLeft`:(盒子也可以调用,必须有滚动条)
                    调用者:
                        document.body.scrollTop/...(window)
                    作用:浏览器无法显示的部分(被卷去的部分)
    `clientY`/`clientX`:(clientTop/clientLeft 值得是border)
                        调用者:event.clientX(event)
                        作用:鼠标距离浏览器可视区域的距离(左、上)    

6、获取屏幕宽高

window.screen.width
window.screen.Height
【ps】分辨率是屏幕图像的精密度,指显示器的像素有多少。

上一章:DOM编程进阶(JS)
下一章:表单验证(JS)

相关文章
|
6天前
|
JavaScript 前端开发
页面滚动触发css3动画js插件
delighters.js是一款页面滚动触发css3动画js插件。该js插件可以在页面向下滚动时,为进入浏览器视口的元素制作各种炫酷的CSS3动画效果。
33 13
|
15天前
纸屑飘落生日蛋糕场景js+css3动画特效
纸屑飘落生日蛋糕CSS3动画特效是一款js+css3制作的全屏纸屑飘落,生日蛋糕点亮庆祝动画特效。
32 3
|
1月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
43 5
|
1月前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
37 4
|
1月前
|
缓存 前端开发 JavaScript
优化CSS和JavaScript加载
优化CSS和JavaScript加载
|
1月前
|
缓存 前端开发 JavaScript
优化CSS和JavaScript加载
Next.js和Nuxt.js在优化CSS和JavaScript加载方面提供了多种策略和工具。Next.js通过代码拆分、图片优化和特定的CSS/JavaScript优化措施提升性能;Nuxt.js则通过代码分割、懒加载、预渲染静态页面、Webpack配置和服务端缓存来实现优化。两者均能有效提高应用性能。
|
1月前
|
前端开发 JavaScript
用HTML CSS JS打造企业级官网 —— 源码直接可用
必看!用HTML+CSS+JS打造企业级官网-源码直接可用,文章代码仅用于学习,禁止用于商业
130 1
|
27天前
JS+CSS3文章内容背景黑白切换源码
JS+CSS3文章内容背景黑白切换源码是一款基于JS+CSS3制作的简单网页文章文字内容背景颜色黑白切换效果。
17 0
|
移动开发 JavaScript Android开发