У меня есть компонент React, в котором я создаю вкладки на основе количества дочерних элементов в моем компоненте Tabs.
У меня CSS настроен базовый стиль вкладок, а также :focus
стилей, но когда компонент загружается, я пытаюсь применить те же стили из :focus
к классу :active
, чтобы вкладка по умолчанию при загрузке меню отображалась как активная вкладка, но по какой-то причине просто передавая стили в класс :active
не работают с моими стилизованными компонентами.
Прямо сейчас, когда меню загружается, вкладки отображаются как неактивные со стандартным стилем.
Мой компонент вкладки:
import React, { useState } from 'react';
import styled from 'styled-components';
type Props = {
children: React.ReactNode;
};
const Tabs = (props: Props) => {
const { children } = props;
const [tab, setTab] = useState(0);
const childrenList = React.Children.toArray(children);
const tabs = childrenList.map((child, idx) => {
const title = (child as any).props.title ?? idx;
return (
<StyledTabs key={title} onClick={() => setTab(idx)}>
{title}
</StyledTabs>
);
});
const current = childrenList[tab];
return (
<div>
<div>{tabs}</div>
<div>{current}</div>
</div>
);
};
export default Tabs;
const StyledTabs = styled.button`
margin: 0 10px;
padding: 0 10px;
padding-bottom: 5px;
border: none;
background: transparent;
display: inline-block;
font-weight: 700;
text-transform: uppercase;
:focus {
color: #1471da;
border-bottom: 1px solid #1471da;
outline: none;
padding-bottom: 5px;
}
/* These Styles don't work */
:active {
color: #1471da;
border-bottom: 1px solid #1471da;
outline: none;
padding-bottom: 5px;
}
`;