css常用功能

title: css常用功能 id: c14420b9a4256a01e07704d91c9b9129 tags: [] date: 2000/01/01 00:00:00 updated: 2023/03/04 19:29:12 isPublic: true --#|[分隔]|#--

css常用功能

js 读写 css

获取实时位置信息:getBoundingClientRect() 方法

官方文档

getBoundingClientRect 方法返回元素的大小及其相对于视口的位置,返回的是 DOMRect 对象,此方式获取的元素尺寸和位置信息更方便。

语法:Element.getBoundingClientRect()

let htmlPositionInfo = document.querySelector('.p').getBoundingClientRect()
console.log(JSON.stringify(htmlPositionInfo))

打印以下对象,能清楚的看到某个元素的尺寸和位置信息:

{
  "x": 8,
  "y": 92,
  "width": 1973,
  "height": 44,
  "top": 92,
  "right": 1981,
  "bottom": 136,
  "left": 8
}

获取Dom设置的值:CSSStyleDeclaration 对象

官方文档

CSSStyleDeclaration 对象是一个 CSS 声明块,CSS 属性键值对的集合,它暴露了样式信息和各种与样式相关的方法和属性。

CSSStyleDeclaration 对象中的 css 规则的键名是驼峰命名的写法。

以下三种方式,拿去到的都是 CSSStyleDeclaration 对象:

  • Element.style:只能读取到该 dom 节点的的行内样式声明的属性,可读可写,但写完后,也是写在了行内的样式中。

  • getComputedStyle(Element):获取该 dom 节点的所有 css 样式属性计算后生成的 CSSStyleDeclaration,但是一个只读的对象。

  • CSSStyleSheet API:不常用,比如,document.styleSheets[0].cssRules[0].style 会返回文档中第一个样式表中的第一条 CSS 规则

所以一般情况:

  • 需要写时,使用第一种方法(HTMLElement.style),只有这个才有写的功能。

  • 需要读时:使用上面第二种中方法(getComputedStyle(Element))获取,可以读取到该 Dom 的全部的 css 样式值。

使用css变量功能

css的变量功能,主流浏览器均已经支持。

直接使用

下面这段代码的功能,能够实现和scss变量类似的功能。

而且,使用js是可以读取和设置css变量的。

使用 CSSStyleDeclaration 交互

css 中:

js 中:

css\less\scss的样式穿透写法

使用vue或react时,大多都会使用 scope来限制样式的生效范围,保证不影响全局或子组件的样式,但有时偏偏就需要样式穿透,修改子组件的样式。

而使用 css\less\scss 时,样式穿透的写法是不同的:

  • 使用css:没有使用css预处理器,可以使用 >>>,/deep/,::v-deep 来样式穿透。

  • 使用less或者node-sass:使用/deep/,::v-deep都可以。

  • 使用dart-sass:使用::v-deep来样式穿透。

贝塞尔曲线生成

贝斯尔曲线是使用 js 或 css 制作动画时,很有用的一个工具,但它的使用还是有一定门槛的,看不懂公式和配置。

下面这个网站,可以所见即所得的,拖拽小球配置曲线,然后自动生成贝斯而曲线的配置,复制使用,很有用的工具:https://cubic-bezier.com/

Snipaste_2021-02-24_10-08-53.png

以下是贝塞尔曲线的js实现,把上面网站的参数传入此函数,即可得到一个方法,一个传入进程值就能得到位置的方法

使用实例

设置滚动条样式

reset.css 去除浏览器默认样式

Last updated

Was this helpful?