与样式组件一起使用的 Before 和 After 伪类

IT技术 reactjs pseudo-class styled-components
2021-04-21 00:37:11

什么是应用适当的方式:before:after伪类风格的组成部分?

我知道你可以使用

&:hover {}

:hover伪类应用于样式组件。

这对之前和之后的所有伪元素都有效吗?

我已经尝试在一些相当复杂的例子中使用&:beforeand&:after策略,但我不确定我的尝试是否不起作用,因为我的例子有问题,或者它只是不那样工作。

有人对此有所了解吗?谢谢你。

5个回答

伪选择器styled-components就像在 CSS 中一样工作。(或者更确切地说,Sass)无论什么不起作用,都可能是您的特定代码中的问题,但是如果没有看到实际代码,就很难调试!

以下是如何使用 simple 的示例:after

const UnicornAfter = styled.div`
  &:after {
    content: " 🦄";
  }
`;

<UnicornAfter>I am a</UnicornAfter> // renders: "I am a 🦄"

如果您发布代码,我可能会帮助调试您的特定问题!

@mxstbr 嗨,mxstbr!我在动态呈现 Pseudo-before 内容时遇到问题。我做错了吗?或者它是 styled-components 不支持的东西。stackoverflow.com/questions/46339034/...
2021-05-26 00:37:11
不客气,乐于助人!
2021-06-03 00:37:11
我们可以在任何特定的孩子(即:第一个孩子)之后和之前申请吗?
2021-06-11 00:37:11
那没有必要。谢谢你的澄清!我只需要确定它是我最后的东西...... =)我不确定&:before并且&:after正在工作。我无法通过谷歌找到明确的答案......所以......谢谢!
2021-06-16 00:37:11

这将在 div 的中间打印三角形。

const LoginBackground = styled.div`
  & {
    width: 30%;
    height: 75%;
    padding: 0.5em;
    background-color: #f8d05d;
    margin: 0 auto;
    position: relative;
  }
  &:after {
    border-right: solid 20px transparent;
    border-left: solid 20px transparent;
    border-top: solid 20px #f8d05d;
    transform: translateX(-50%);
    position: absolute;
    z-index: -1;
    content: "";
    top: 100%;
    left: 50%;
    height: 0;
    width: 0;
  }
`;

这是一个很好而简单的答案:

https://stackoverflow.com/a/45871869/4499788 by mxstbr

但对于需要更复杂逻辑的元素,我更喜欢这种方法:

const Figure = styled.div`
  ${Square}:before, 
  ${Square}:after,
  ${Square} div:before, 
  ${Square} div:after {
    background-color: white;
    position: absolute;
    content: "";
    display: block;
    -webkit-transition: all 0.4s ease-in-out;
    transition: all 0.4s ease-in-out;
  }
`;
我无法让它与 @emotion/babel-plugin 11.3.0 github.com/emotion-js/emotion/issues/2354 一起使用
2021-06-21 00:37:11

作为一个对象(注意双引号):

const Div = styled.div({
  '&:before': {
    content: '"a string"',
  },
})
Can try like this.
It works perfectly fine

var setValue="abc";
var elementstyle = '<style>YourClass:before { right:' + abc + 'px;}</style>'
 $(".YourClass").append(setValue);

 var rightMarginForNotificationPanelConnectorStyle = '<style>.authenticated-page.dx-authenticated .dx-notification .dx-notification-dialog.dx-content-frame:before { right:' + rightMarginForNotificationPanelConnectorWithBadge + 'px;}</style>'
                        $(".authenticated-page.dx-authenticated .dx-notification .dx-notification-dialog.dx-content-frame").append(rightMarginForNotificationPanelConnectorStyle);
问题是关于样式组件,而您正在使用普通的 javascript 进行回答。此外,您的解决方案根本不是一个好习惯(使用 jquery、附加到 dom 等)。另外,请考虑改进答案的格式:您将所有内容都放在代码部分中
2021-05-25 00:37:11