javascript 精确获取样式属性(下)

JavaScript 精确获取样式属性(下)

在上一篇文章中,我们介绍了如何使用 getComputedStyle 方法获取元素的计算样式,但是这个方法有一些局限性,本篇文章会继续探讨如何在 JavaScript 中精确获取元素的样式属性。

获取 transform 中的具体属性

在 CSS3 中,transform 属性可以改变元素的形状、大小和位置等,它有很多子属性,如 translaterotatescale 等等。我们在获取元素的 transform 属性时,有时候需要具体获取其中的某一个子属性。此时,我们可以使用 getComputedStyle 方法和字符串的 match() 方法来匹配我们需要获取的属性。

示例代码:

<div id="demo" style="transform: translate(20px, 30px) scale(2) rotate(45deg)"></div>
let demo = document.getElementById('demo')
let transform = getComputedStyle(demo).transform
let matches = transform.match(/(\d+)/g)
let translateX = parseInt(matches[0]) // 20
let translateY = parseInt(matches[1]) // 30
let scale = parseInt(matches[2]) // 2
let rotate = parseInt(matches[3]) // 45

获取伪元素的样式

有时候,我们需要获取伪元素的样式。比如说,我们想要获取 ::before 元素的 content 属性,我们可能会尝试去使用 getComputedStyle 方法,但是这个方法只能获取到元素本身的计算样式,而无法获取到伪元素的样式。此时,我们可以使用 Window.getComputedStyle() 方法和 Document.createRange() 方法来获取伪元素的样式。

示例代码:

<div id="demo">
  <p>这是一个段落</p>
</div>

<style>
  #demo::before {
    content: 'before文本';
    color: red;
  }
</style>
let range = document.createRange()
range.selectNode(document.getElementById('demo'))

let beforeElement = range.createContextualFragment('<span></span>')
beforeElement.classList.add('demo-before')
document.getElementById('demo').appendChild(beforeElement)

let before = window.getComputedStyle(document.querySelector('.demo-before'), ':before')
console.log(before.content) // "before文本"
console.log(before.color) // "rgb(255, 0, 0)"

扩展阅读:

JavaScript 精确获取样式属性(上)

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript 精确获取样式属性(下) - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • vue使用element-ui的el-date-picker设置样式无效的解决

    问题描述 在使用Vue框架中,我们经常会使用Element UI库来构建界面。其中el-date-picker是一个日期选择器组件,但在使用el-date-picker时,我们可能会遇到设置样式无效的情况。 原因分析 这是因为el-date-picker组件本身使用了格式为scoped的CSS,在组件内部定义的样式只能作用于该组件内的元素。而在设置el-da…

    css 2023年6月9日
    00
  • div背景半透明 覆盖整个可视区域的遮罩层效果

    下面是详细的攻略: 1. 基础实现方法 首先,我们可以用一个 <div> 元素来模拟遮罩层,并在其中添加一个半透明的背景。代码如下: <div class="mask"></div> <style> .mask { position: fixed; top: 0; left: 0; widt…

    css 2023年6月9日
    00
  • 目前比较全的CSS reset重设方法总结

    CSS reset旨在消除浏览器默认样式的影响,更好地保证CSS样式在不同浏览器上一致性和可维护性。以下是目前比较全面的CSS reset重设方法总结。 1. Normalize.css Normalize.css 是一份基于现代浏览器的CSS reset样式集合,对于大多数元素都使用了 box-sizing:border-box; 样式,还提供了良好的注释…

    css 2023年6月11日
    00
  • Angular2整合其他插件的方法

    下面我就对“Angular2整合其他插件的方法”进行详细讲解。 准备工作 在整合其他插件之前,我们需要在项目中安装npm 包管理器和 angular-cli 。执行以下命令: npm install -g @angular/cli 使用第三方插件 Angular 拥有丰富的生态系统,完全覆盖了现代的web 标准。通过下面的步骤可以将第三方库导入您的 Angu…

    css 2023年6月9日
    00
  • JS读写CSS样式的方法汇总

    首先,我们需要了解JS读写CSS样式的相关知识。在HTML中,可以通过内嵌样式或外联样式表来设置页面的样式。而JS可以通过一些方法来读取或修改这些样式。 一、读取CSS样式 1.1 获取样式值 可以通过style对象或window.getComputedStyle()方法来获取元素的样式值。其中,style对象只能获取内嵌样式,而window.getComp…

    css 2023年6月9日
    00
  • 详解css中background-clip属性的作用

    我为你讲解详解 CSS 中 background-clip 属性的作用。 什么是 background-clip 属性? background-clip 属性用于指定背景颜色或图片的绘制范围(裁剪区域),其值可以为 border-box、padding-box 或 content-box。 border-box:绘制的背景会延伸到边框的外侧。 padding…

    css 2023年6月9日
    00
  • Vue入门之animate过渡动画效果

    Vue入门之animate过渡动画效果 在Vue.js中使用过渡动画效果可以使页面更加生动、美观、易于交互。本文将介绍Vue中的animate过渡动画效果的完整攻略。 安装必备依赖 在使用Vue过渡动画效果前,我们需要先安装相关依赖: npm install animate.css 设置组件的过渡动画 组件的过渡动画可以通过Vue提供的过渡类名来实现。在组件…

    css 2023年6月10日
    00
  • React18新增特性released的使用

    React18是React框架的一个重大版本升级,其中新增了一些特性,包括新的渲染器、并发模式、异步渲染、组件模型等。本文将介绍React18新增特性的使用。 1. 安装React18 要使用React18,需要将React升级到18版本。升级React的方式如下: 在项目中安装React18的alpha版本:npm install react@alpha …

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部