Skip to content

useStyleTag

Category
Export Size
474 B
Last Changed
15 minutes ago

<head> 中注入响应式的 style 元素。

Demo

编辑 CSS:

ID:vueuse_styletag_1

已加载:false

用法

基本用法

提供一个 CSS 字符串,然后 useStyleTag 将自动生成一个 id 并将其注入到 <head> 中。

js
import { useStyleTag } from '@vueuse/core'

const {
  id,
  css,
  load,
  unload,
  isLoaded,
} = useStyleTag('.foo { margin-top: 32px; }')

// 以后可以修改样式
css.value = '.foo { margin-top: 64px; }'

这段代码将被注入到 <head> 中:

html
<style id="vueuse_styletag_1">
  .foo {
    margin-top: 64px;
  }
</style>

自定义 ID

如果需要定义自己的 id,可以将 id 作为第一个参数传递。

js
import { useStyleTag } from '@vueuse/core'

useStyleTag('.foo { margin-top: 32px; }', { id: 'custom-id' })
html
<!-- 注入到 <head> 中 -->
<style id="custom-id">
  .foo {
    margin-top: 32px;
  }
</style>

媒体查询

你可以在对象中的最后一个参数中传递媒体属性。

js
useStyleTag('.foo { margin-top: 32px; }', { media: 'print' })
html
<!-- 注入到 <head> 中 -->
<style id="vueuse_styletag_1" media="print">
  .foo {
    margin-top: 32px;
  }
</style>

类型声明

typescript
export interface UseStyleTagOptions extends ConfigurableDocument {
  /**
   * 要应用的样式的媒体查询
   */
  media?: string
  /**
   * 立即加载样式
   *
   * @default true
   */
  immediate?: boolean
  /**
   * 手动控制加载和卸载的时机
   *
   * @default false
   */
  manual?: boolean
  /**
   * 样式标签的 DOM id
   *
   * @default 自动递增
   */
  id?: string
}
export interface UseStyleTagReturn {
  id: string
  css: Ref<string>
  load: () => void
  unload: () => void
  isLoaded: Readonly<Ref<boolean>>
}
/**
 * 在头部注入 <style> 元素。
 *
 * 重载:省略了 id
 *
 * @see https://vueuse.org/useStyleTag
 * @param css
 * @param options
 */
export declare function useStyleTag(
  css: MaybeRef<string>,
  options?: UseStyleTagOptions,
): UseStyleTagReturn

Source

SourceDemoDocs

贡献者

丶远方
Anthony Fu
sibbng
James Wragg
Anthony Fu
mrayi
Jelf

变更日志

v9.7.0 on 12/16/2022
cfcc2 - fix: allow multiline CSS (#2476)
v9.6.0 on 11/22/2022
94413 - fix: allow use of existing node (#2442)

Released under the MIT License.