如何删除Smelte.js生成的多余CSS类?

时间:2020-06-18 09:04:51

标签: javascript svelte

我正在使用Svelte和材料设计库 Smelte

<script>

const currency = [
    { value: 1, text: "EUR" },
    { value: 2, text: "GBP" },
    { value: 3, text: "USD" }];

</script>

<Smelte.Select label="Currency" class="bg-transparent inline-block">
    <div slot="options" class="elevation-1">
        {#each items as item}
            <div class="p-2">{item.text}</div>
        {/each}
    </div>
</Smelte.Select>

问题在于,Smelte生成了许多HTML元素,并为其添加了许多我不需要的类:

<div class="mt-0 relative text-gray-600 dark:text-gray-100 select ">
  <label class="absolute top-0 label-transition block px-4 pointer-events-none cursor-text svelte-81hn54" bgcolor="white">EUR</label> <input readonly="" class="transition   px-4 -t text-black dark:text-gray-100 w-full border  bg-transparent  transition  caret-primary-500   border-gray-600  border-l-0 border-t-0 border-r-0 pb-1  cursor-pointer  transition   px-4 -t text-black dark:text-gray-100 w-full border  bg-transparent  transition  caret-primary-500   border-gray-600  border-l-0 border-t-0 border-r-0 pb-1  cursor-pointer"> 
  <div class="absolute right-0 top-0 pb-2 pr-4 pt-4 text-gray-700 z-10"><i aria-hidden="true" class="material-icons icon text-xl transition svelte-zzky5a" style="color: default">arrow_drop_down</i></div>
  <div class="line absolute bottom-0 left-0 w-full bg-gray-600 svelte-xd9zs6 hidden">
    <div class="mx-auto w-0 svelte-xd9zs6" style="height: 2px; transition: width 0.2s ease 0s;"></div>
  </div>
</div>

我希望我拥有<div class="absolute right-0 top-0 pr-4 z-10">而不是<div class="absolute right-0 top-0 pb-2 pr-4 pt-4 text-gray-700 z-10">

如何获得所需的结果(对node_modules进行更改)?

1 个答案:

答案 0 :(得分:3)

看看 source of the select smelte component 。您会看到一些可能有用的道具。

不是,请先阅读smelte select code并寻找道具,然后再让眼睛进一步阅读

(关键字:export let



以下是描述组件类的道具:

  export let classes = classesDefault;
  export let optionsClasses = optionsClassesDefault;

select的默认值描述如下

  const optionsClassesDefault = "absolute left-0 bg-white rounded elevation-3 w-full z-20 dark:bg-dark-500";
  const classesDefault = "cursor-pointer relative pb-4";

因此,这是使用那些非常相同的默认值对const默认值的覆盖,但是从父组件的角度来看:

<script>
    import { Select } from "smelte";

    const items = [
    { value: 1, text: "One" },
    { value: 2, text: "Two" },
    { value: 3, text: "Three" },
    { value: 4, text: "Four" },
    ];
</script>

<Select label="My Select List" {items} classes="cursor-pointer relative pb-4" optionsClasses="absolute left-0 bg-white rounded elevation-3 w-full z-20 dark:bg-dark-500" />

您可以根据您的规范调整此想法。让我知道这是否适合您!

与往常一样,引用依赖项的源代码以查看它们真正具有的功能超级有帮助。精巧的组件,具有直截了当的语法,绝不会给您提供很好的机会来练习代码阅读,以寻找可以利用的道具。


友好的提示

  • 您的问题,“我如何删除Smelte.js生成的多余CSS类?” 没有描述您要做什么。它描述您的问题。您的标题描述了您的思考过程。它描述了您建议的解决方案。*

  • 当您开始使用该组件并遇到问题时,您脑海中的第一个念头不是 ,“嘿,我这里的CSS特别多!我该如何解决?”,

  • 相反,您看着屏幕说:“嘿,我的眼睛告诉我,这两件事之间的间距不正确!我希望它们在垂直方向上靠得更近。我必须更改这些内容的顶部和底部填充。如何更改其填充?

  • “如何更改smeltejs组件的边距或填充?”描述您要解决的问题

  • 只是花了很多时间来撰写有关如何检查CSS树摇是否有效以及如何进行配置的答案。我刚刚删除了60分钟的工作和验证,并增加了30分钟,以便为您提供通用的斯威夫特方法

  • 摘要:提出问题,而不是解决方案。希望这也有帮助!?