JavaScript编写css自定义属性的示例代码

 更新时间:2024年12月10日 09:21:18   作者:前端熊猫  
自定义属性(有时候也被称作CSS变量或者级联变量)是由CSS作者定义的,它包含的值可以在整个文档中重复使用,由自定义属性标记设定值,,由var() 函数来获取值,本文就给大家介绍了JavaScript编写css自定义属性,需要的朋友可以参考下

一、自定义属性

是在 CSS 中定义的变量,以 --开头。它们可以存储颜色、尺寸、字体等任何 CSS 值,并且可以在整个文档中重复使用。

:root {
  --primary-color: #3498db;
  --font-size: 16px;
}
 
body {
  color: var(--primary-color);
  font-size: var(--font-size);
}

二、定义自定义属性

自定义属性通常在 :root 选择器中定义,这样它们就可以在整个文档中全局使用。不过,你也可以在任何选择器中定义自定义属性,使其作用域仅限于该选择器及其子元素局部。

/* 全局定义 */
:root {
  --main-bg-color: #f0f0f0;
}
 
/* 局部定义 */
.header {
  --header-height: 60px;
  height: var(--header-height);
}

三、使用自定义属性

使用 var() 函数来引用自定义属性

.button {
  background-color: var(--primary-color);
  padding: var(--padding, 10px); /* 提供默认值 */
}

四、JS动态修改自定义属性

const element = document.querySelector('.container');
element.style.setProperty('--local-color', '#0000ff'); // 修改局部变量
document.documentElement.style.setProperty('--global-color', '#00ffff'); // 修改全局变量

五、应用

<template>
  <div ref="leftBg" class="left-bg"></div>
  <button @click="updateTitleImageClass">切换伪类图片</button>
</template>
 
<script setup>
import { ref, onMounted } from 'vue';
 
const leftBg = ref(null);
const systemTitles = ['cat1', 'cat2', 'cat3'];
let currentTitleIndex = 0;
 
const getBackgroundSize = (title) => {
  // 根据标题返回不同的背景大小
  switch (title) {
    case 'cat1':
      return 'contain';
    case 'cat2':
      return 'cover';
    case 'cat3':
      return 'auto';
    default:
      return 'cover';
  }
};
 
const images = {};
 
const loadImages = async () => {
  for (const title of systemTitles) {
    try {
      const response = await fetch(`/${title}/title.jpg`);
      if (!response.ok) {
        throw new Error(`Failed to fetch image for ${title}`);
      }
      const blob = await response.blob();
      images[`/${title}/title.jpg`] = URL.createObjectURL(blob);
    } catch (error) {
      console.error(`Error loading image for ${title}:`, error);
    }
  }
};
onMounted(
  async () => {
    await loadImages();
    updateTitleImageClass();
  }
);
const updateTitleImageClass = async () => {
  if (!leftBg.value) {
    console.error('没有找到leftBg节点');
    return;
  }
 
  const systemTitle = systemTitles[currentTitleIndex];
  const imagePath = `/${systemTitle}/title.jpg`; // 根据系统标题获取图片路径
  if (!images[imagePath]) {
    console.log(`没有找到对应的图片路径: ${imagePath}`);
    return;
  }
  const imageUrl = images[imagePath]; // 获取图片路径
  // 设置自定义属性
  leftBg.value.style.setProperty('--background-image', `url(${imageUrl})`);
 
  const backgroundSize = getBackgroundSize(systemTitle);
  leftBg.value.style.setProperty('--background-image-size', backgroundSize);
 
  // 切换到下一个标题
  currentTitleIndex = (currentTitleIndex + 1) % systemTitles.length;
};
</script>
 
<style lang="scss" scoped>
.left-bg {
  width: 100%;
  height: 100px;
  position: relative;
 
  &::before {
    content: '';
    display: block;
    background-image: var(--background-image);
    background-size: var(--background-image-size, cover);
    background-position: center;
    background-repeat: no-repeat;
    width: 100px;
    height: 100%;
    position: absolute;
    top: 0rem;
    left: 0rem;
  }
}
</style>

到此这篇关于JavaScript编写css自定义属性的示例代码的文章就介绍到这了,更多相关JavaScript css自定义属性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • js 事件截取enter按键页面提交事件示例代码

    js 事件截取enter按键页面提交事件示例代码

    本篇文章主要是对js 事件截取enter按键页面提交事件示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-03-03
  • js检验密码强度(低中高)附图

    js检验密码强度(低中高)附图

    注册模块中输入密码需要显示密码强度(低中高)本例将做的效果给大家分享下
    2014-06-06
  • Javascript下拉刷新的简单实现

    Javascript下拉刷新的简单实现

    这篇文章主要为大家详细介绍了Javascript下拉刷新的简单实现过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】

    JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】

    这篇文章主要介绍了JavaScript常用正则验证函数,结合实例形式总结分析了javascript针对年龄、数字、Email、手机、URL、日期等格式常用正则验证技巧,需要的朋友可以参考下
    2017-01-01
  • js自定义trim函数实现删除两端空格功能

    js自定义trim函数实现删除两端空格功能

    这篇文章主要介绍了js自定义trim函数实现删除两端空格功能,结合实例形式分析了javascript基于正则替换实现类似trim函数删除字符串两端空格的相关操作技巧,并附带jQuery类似功能函数使用方法,需要的朋友可以参考下
    2018-02-02
  • JS去除iframe滚动条的方法

    JS去除iframe滚动条的方法

    这篇文章主要介绍了JS去除iframe滚动条的方法,涉及javascript操作iframe中属性的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • PHP抓取HTTPS内容和错误处理的方法

    PHP抓取HTTPS内容和错误处理的方法

    这篇文章主要介绍了PHP抓取HTTPS内容的实现方法,以及在抓取的时候遇到的一个HTTPS问题的处理办法,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-09-09
  • 微信小程序开发中var that =this的用法详解

    微信小程序开发中var that =this的用法详解

    这篇文章主要介绍了微信小程序开发中var that =this的用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • JavaScript检测浏览器是否支持css3的属性

    JavaScript检测浏览器是否支持css3的属性

    这篇文章主要为大家详细介绍了如何编写一个 JavaScript 方法来检测浏览器是否支持特定的 CSS3 属性,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-12-12
  • JavaScript脚本延迟加载有哪些方式

    JavaScript脚本延迟加载有哪些方式

    本文主要介绍了JavaScript脚本延迟加载有哪些方式,主要介绍了五种方式,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-04-04

最新评论