JS和CSS的交互

本文涉及的产品
性能测试 PTS,5000VUM额度
注册配置 MSE Nacos/ZooKeeper,118元/月
可观测可视化 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)

相关文章
|
16天前
|
JavaScript 前端开发 Go
CSS 与 JS 对 DOM 解析和渲染的影响
【10月更文挑战第16天】CSS 和 JS 会在一定程度上影响 DOM 解析和渲染,了解它们之间的相互作用以及采取适当的优化措施是非常重要的。通过合理的布局和加载策略,可以提高网页的性能和用户体验,确保页面能够快速、流畅地呈现给用户。在实际开发中,要根据具体情况进行权衡和调整,以达到最佳的效果。
|
4天前
|
前端开发 JavaScript
如何在 JavaScript 中访问和修改 CSS 变量?
【10月更文挑战第28天】通过以上方法,可以在JavaScript中灵活地访问和修改CSS变量,从而实现根据用户交互、页面状态等动态地改变页面样式,为网页添加更多的交互性和动态效果。在实际应用中,可以根据具体的需求和场景选择合适的方法来操作CSS变量。
|
4天前
|
设计模式 前端开发 JavaScript
揭秘!前端大牛们如何巧妙利用JavaScript,打造智能交互体验!
【10月更文挑战第30天】前端开发领域充满了无限可能与创意,JavaScript作为核心语言,凭借强大的功能和灵活性,成为打造智能交互体验的重要工具。本文介绍前端大牛如何利用JavaScript实现平滑滚动、复杂动画、实时数据更新和智能表单验证等效果,展示了JavaScript的多样性和强大能力。
15 4
|
4天前
|
前端开发 JavaScript UED
如何使用 JavaScript 动态修改 CSS 变量的值?
【10月更文挑战第28天】使用JavaScript动态修改CSS变量的值可以为页面带来更丰富的交互效果和动态样式变化,根据不同的应用场景和需求,可以选择合适的方法来实现CSS变量的动态修改,从而提高页面的灵活性和用户体验。
|
25天前
|
存储 JavaScript 前端开发
【JavaScript】网页交互的灵魂舞者
本文介绍了 JavaScript 的三种引入方式(行内、内部、外部)和基础语法,包括变量、数据类型、运算符、数组、函数和对象等内容。同时,文章还详细讲解了 jQuery 的基本语法和常用方法,如 `text()`、`html()`、`val()`、`attr()` 和 `css()` 等,以及如何插入和删除元素。通过示例代码和图解,帮助读者更好地理解和应用这些知识。
13 1
【JavaScript】网页交互的灵魂舞者
|
10天前
|
JSON 移动开发 数据格式
html5+css3+js移动端带歌词音乐播放器代码
音乐播放器特效是一款html5+css3+js制作的手机移动端音乐播放器代码,带歌词显示。包括支持单曲循环,歌词显示,歌曲搜索,音量控制,列表循环等功能。利用json获取音乐歌单和歌词,基于html5 audio属性手机音乐播放器代码。
54 6
|
2月前
|
前端开发 JavaScript
HTML+JavaScript+CSS DIY 分隔条splitter
HTML+JavaScript+CSS DIY 分隔条splitter
|
1月前
|
前端开发 JavaScript
JavaScript动态渲染页面爬取——CSS位置偏移反爬案例分析与爬取实战
JavaScript动态渲染页面爬取——CSS位置偏移反爬案例分析与爬取实战
|
3月前
|
前端开发
2s 利用 HTML+css动画实现企业官网效果
2s 利用 HTML+css动画实现企业官网效果
HTML+CSS 实现通用的企业官网页面(记得收藏)
HTML+CSS 实现通用的企业官网页面(记得收藏)