我正在处理Vue中的一个练习问题,其中我必须制作一个 colored颜色 Select 器,然后更改页面的背景以匹配所 Select 的 colored颜色 .问题是,我需要设置动态的背景,但我不知道如何从一个组件改变它的css.以下是我掌握的代码:

<!-- App.Vue -->
<script setup>
import { ColorPicker } from 'vue-accessible-color-picker';
import { ref, computed, watch } from 'vue';
const color = ref('hsl(270 100% 50% / 0.8)');
function updateColor(e) {
  color.value = e.cssColor
}

const setColor = computed(() => {
  return 'background: ' + color.value
})


</script>

<template>
  <div :style="setColor">
    <ColorPicker :color="color" @color-change="updateColor" />
  </div>
</template>

下面我在我的模板中更改div的样式,但它看起来只是这样:

enter image description here

不仅如此,只有当我判断元素时,方块才会出现.

当我try 更改的CSS背景时,我得到的背景:var(--7a7a37b1-COLOR), colored颜色 没有改变.这是我为了时尚而这样做的时候:

<style>
html {
  background: v-bind('color');
}
</style>

如何使整个页面的背景更改以匹配 colored颜色 Select 器的 colored颜色 ?

推荐答案

是的,v-bindin样式的问题是,虽然规则确实适用于外部元素,但变量只在组件内部定义.因此,您基本上是将html.back设置为一个空变量.

我认为这是一个需要直接设置样式的示例:

function updateColor(e) {
  document.body.style.backgroundColor = e.cssColor
}

Html相关问答推荐

使用Scrapy Select 最后一个子文本

如何打破长URL,包含连字符在HTML与CSS

如何增加行背景的宽度而不影响上面的内容?""' HTML CSS

为什么在添加文本时网格区域会调整大小?

如何在将文本垂直居中的同时将文本右对齐?

渐变进度条位置

当文本添加到元素中时,将元素拉到页面上

从html文件中提取元素的Python BeautifulSoup

如何使链接组件内的内容不重新路由Next.js13

如何在CSS中延迟触发2个转换?

实验的响应式屏幕尺寸

用于表行组标题的正确 HTML 标记是什么?

修复 Vue 3 Component 中的 CSS 以显示后面的 Select 器样式而无需 !important

SVG 调整大小而不是溢出

如何使用 CSS 制作蜂窝状网格?

按部分划分的表行带

变换元素以适应高度(Angular,SCSS)

如何在 Tailwind CSS 中创建响应式网格布局?

以 HTML 格式显示的 LaTeX 表格

如何阻止网格项目拉伸?