使用三点跨度触发 DropDown

Posted

技术标签:

【中文标题】使用三点跨度触发 DropDown【英文标题】:Use Three Dots span to trigger DropDown 【发布时间】:2020-05-24 04:36:02 【问题描述】:

我正在使用 react-bootstrap,并且有一个带有插入符号的按钮可以触发下拉菜单。

但我需要使用垂直的 3 个点,而不是按钮样式。

我有一个跨度为三个点使用 CSS 类,但似乎找不到摆脱按钮和插入符号的方法。

我现在紧张的是:

<Dropdown>
    <Dropdown.Toggle>
      <span className="threedots"></span>
    </Dropdown.Toggle>
    <Dropdown.Menu size="sm" title=""> 
      <Dropdown.Header>Options</Dropdown.Header>
      <Dropdown.Item .... ></Dropdown.Item>
    </Dropdown.Menu>
 </Dropdown>

我只想看到三个点(我将添加鼠标悬停效果)。有没有办法使用快照作为切换>

【问题讨论】:

插入符号是生成的 ::after 伪元素。只需给 Dropdown 一个父类,然后给 display: none 伪元素。同样,覆盖按钮样式。 @Vishal - 听起来不错。但我不是 100% 确定如何做按钮部分。你能帮忙写伪代码吗? 【参考方案1】:

您可以通过传入自定义子组件来自定义 Dropdown。 Custom Dropdown Components

const CustomToggle = React.forwardRef(( children, onClick , ref) => (
  <a
    href=""
    ref=ref
    onClick=e => 
      e.preventDefault();
      onClick(e);
    
  >
    /* custom icon */
    children

  </a>
));

然后作为自定义切换传递

<Dropdown >
    <Dropdown.Toggle as=CustomToggle>
    </Dropdown.Toggle>
    <Dropdown.Menu size="sm" title=""> 
      <Dropdown.Header>Options</Dropdown.Header>
      <Dropdown.Item .... ></Dropdown.Item>
    </Dropdown.Menu>
 </Dropdown>

sample codesandbox,希望对您有所帮助

【讨论】:

优秀的演示@Alex!如果其他人想知道如何摆脱悬停时的下划线,请将其添加到 css 文件中:.dropdown a:hover text-decoration-line: none;

以上是关于使用三点跨度触发 DropDown的主要内容,如果未能解决你的问题,请参考以下文章

带跨度的禁用按钮仍会触发点击功能!角

点击同时触发两个onclick事件[重复]

可配置的计时器触发器 - Azure Web 作业

套接字解析查找后立即触发回调

在 Html 5 验证触发事件之前? [复制]

如何在 vue 中触发没有 $refs 的点击事件?