当前位置: 首页 > 知识库问答 >
问题:

如何在悬停之前更改样式组件的内容[emotion.js,样式组件]

狄兴业
2023-03-14

在按钮悬停我想做的改变:之前的内容太,我找不到一个答案在官方留档我想知道这是可能的。

.button:hover::before{}

这里是样式组件

import styled from '@emotion/styled'

export const Button =styled.button(props=>{
   return`
    padding: .75rem 2rem ;
    color: #fff;
    background-color: transparent;
    border: 1px solid #000;
    position: relative;
    z-index: 1;
    transition: all .5s cubic-bezier(0.785, 0.135, 0.15, 0.86);
    cursor: pointer;
    width: ${props.width ? props.width:'fit-content'};
    margin-top:  ${props.marginTop ? props.marginTop :0}rem;

    &:before{
         content: '';
         position: absolute;
         z-index: -1;
         height: 100%;
         width: 100%;
         top: 0;
         left: 0;
         ${props.collection?"background-color: #fff;":"background-color: var(--colorGrey);"}
         transition: all .5s cubic-bezier(0.785, 0.135, 0.15, 0.86);
         transform-origin: left center;

         //I want to change style on hover 
    }
    
    &:hover{
      color:var(--colorGrey);
    }
`})

共有1个答案

岳允晨
2023-03-14

只需在:hover伪类中的:之前嵌套一个:伪元素

此外,考虑使用模板文字,而不是使用道具的函数。

import styled from '@emotion/styled';

export const Button = styled.button`
  padding: 0.75rem 2rem;
  color: #fff;
  background-color: transparent;
  border: 1px solid #000;
  position: relative;
  z-index: 1;
  transition: all 0.5s cubic-bezier(0.785, 0.135, 0.15, 0.86);
  cursor: pointer;
  width: ${(props) => (props.width ? props.width : 'fit-content')};
  margin-top: ${(props) => (props.marginTop ? props.marginTop : 0)}rem;

  &:before {
    content: '';
    position: absolute;
    z-index: -1;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    ${(props) => (props.collection ? 'background-color: #fff;' : 'background-color: var(--colorGrey);')}
    transition: all .5s cubic-bezier(0.785, 0.135, 0.15, 0.86);
    transform-origin: left center;
  }

  &:hover {
    color: var(--colorGrey);

    &:before {
      content: 'Hovered';
    }
  }
`;

 类似资料:
  • 我正在开发一个带有样式组件的反应应用程序,我有一个组件“导航”。在这个组件中有更多的组件,如,等。Header例如是这样声明的: 问题是,我在不同的文件中有这个导航组件,对于所有文件,样式都很好,但现在我只想在其中一个文件中更改标题组件的背景色,它位于(?)导航组件。我该怎么做?我知道可以用const NewNav=styled(导航)之类的东西从导航组件更改样式,`但是标题呢? 先谢谢你。

  • 问题内容: 我想将iframe中的内容的背景颜色设为黑色和将文本颜色设为白色,这是因为其默认设置为普通的白色背景和黑色文本。iframe src属性指向我无法访问或无法在该域中放置任何文件或样式表的其他域。因此,考虑到这些条件,是否有可能仅在iframe内容中进行这些样式更改? 问题答案: 唯一的可能性是通过您的代理加载iframe内容并修改HTML内容。您无法通过JavaScript从其他域访问

  • 处理样式组件中悬停的最佳方法是什么?我有一个包装元素,当悬停时会显示一个按钮。 我可以在组件上实现一些状态,并在悬停状态下切换属性,但我想知道是否有更好的方法使用样式化的cmponents来实现这一点。 类似于以下内容的内容不起作用,但非常理想:

  • 问题内容: 我一直在玩这个游戏,而且我认为这很简单。我正在尝试将鼠标悬停在“ NEW”标签上。处于悬停状态后,仅使用CSS将内容从“ NEW”更改为“ ADD”。 这是一个JSFiddle,向您展示我正在使用什么。 问题答案: 为此,引入了CSS 内容属性以及和伪元素。

  • 问题内容: 处理样式化组件中悬停的最佳方法是什么?我有一个包装元素,将鼠标悬停时会显示一个按钮。 我可以在组件上实现某些状态并在悬停时切换属性,但想知道是否有更好的方法可以使用styled-cmponents来做到这一点。 像下面这样的东西不起作用,但是很理想: 问题答案: 从样式组件v2开始,您可以插值其他样式组件以引用其自动生成的类名。在您的情况下,您可能需要执行以下操作: 有关更多信息,请参

  • 我非常喜欢React中的内联CSS模式,并决定使用它。 但是,不能使用和类似的选择器。那么,在使用内联CSS样式时,实现悬停高亮显示的最佳方法是什么? #reactjs的一个建议是使用一个可点击的