如何将样式应用于组件中 div 内的按钮?

Posted

技术标签:

【中文标题】如何将样式应用于组件中 div 内的按钮?【英文标题】:How to apply style to buttons within div in a component? 【发布时间】:2021-07-13 19:38:22 【问题描述】:

我正在尝试在 div 中创建一个带有按钮的组件,我遇到了问题,因为样式不适用于按钮,我想我不应该在这里使用 slot。有人可以指导我吗?

组件

<template>
  <div :class="[$style.btnGroup]" v-bind="$attrs">
    <slot :class="$style[variant]">/>
  </div>
</template>

我如何使用它

<ButtonGroup variant="warning">
      <button>Test</button>
      <button>Test</button>
      <button>Test</button>
    </ButtonGroup>

我使用 css 模块 &lt;style module&gt;


.btnGroup button 
  position: relative;
  border: none;
  font-weight: 400;
  border-radius: 0.25rem;
  cursor: pointer;
  font-size: 1rem;
  padding: 0.5rem 1rem;
  transition: 0.1s;


.primary
  background: var(--primary-bg);
  border: 1px solid var(--primary-bg);
  color: white;


.warning 
  background: var(--warning-bg);
  border: 1px solid var(--warning-bg);
  font-size: 1rem;
  padding: 0.5rem 1rem;
  transition: 0.1s;
  color: black;

等等。对于每个变体,我都有不同的风格。

【问题讨论】:

【参考方案1】:

您在按钮组上应用类而不是内部按钮,解决这个问题而不是将类绑定到插槽绑定另一个变量并在每个按钮上使用该变量绑定,或者您可以通过 css 解决它,这就是为什么我建议您向我们展示 css 以您正在做的方式为按钮组提供一个类,并且在 css 中这样做:

<slot class="buttongroupclass">/>
.buttongroupclass button
//the css you want to apply

【讨论】:

以上是关于如何将样式应用于组件中 div 内的按钮?的主要内容,如果未能解决你的问题,请参考以下文章

尝试将 :focus 样式应用于样式化组件内的嵌套 SVG

如何将 MDL 按钮样式应用于文件选择器?

将 CSS 样式应用于子元素

我如何将 CSS 应用于 VAADIN 8 中的组件

我可以仅将样式应用于我的应用程序组件吗?

将布局样式应用于站点上不同位置的样式组件和 React 组件的最佳方法是啥?