属性选择器可以与样式组件一起使用吗?
can attribute selectors be used with styled-components?
经过一些研究,我找不到有关样式组件中属性选择器(即 [attr=value]
)用法的信息。但是,我仍然认为 styled-components 很有可能支持属性选择器......但如果不应该,它有哪些等价物?
例如,如果我有下面的代码
.squares li[data-level='1'] {
background-color: var(--light);
}
.squares li[data-level='2'] {
background-color: var(--medium);
}
.squares li[data-level='3'] {
background-color: var(--dark);
}
.squares li[data-level='4'] {
background-color: var(--darkest);
}
如何通过 styled-components
实现?
非常简单,需要创建样式组件,例如“Squares”,并为具有属性“data-value='N'”的嵌套列表项定义样式
const Squares = styled.div`
li[data-level='1'] {
background-color: var(--light);
}
li[data-level='2'] {
background-color: var(--medium);
}
li[data-level='3'] {
background-color: var(--dark);
}
li[data-level='4'] {
background-color: var(--darkest);
}
`
我明白了;这就是我所做的:
const SquareListItem = styled.li`
border-radius: 3px;
border: 1px rgba(27, 31, 35, 0.06) solid;
background-color: ${colour[0]};
&[data-level='1'] {
background-color: ${colour[1]};
}
&[data-level='2'] {
background-color: ${colour[2]};
}
&[data-level='3'] {
background-color: ${colour[3]};
}
&[data-level='4'] {
background-color: ${colour[4]};
}
/* tooltip */
&[data-tooltip] {
position: relative;
cursor: pointer;
}
&[data-tooltip]:before,
&[data-tooltip]:after {
visibility: hidden;
opacity: 0;
pointer-events: none;
}
&[data-tooltip]:before {
position: absolute;
z-index: 999;
bottom: 150%;
left: 100%;
margin-bottom: 5px;
margin-left: -90px;
padding: 7px;
width: 150px;
border-radius: 3px;
background-color: #000;
background-color: hsla(0, 0%, 20%, 0.9);
color: #fff;
content: attr(data-tooltip);
text-align: center;
font-size: 10px;
line-height: 1.2;
}
&[data-tooltip]:after {
position: absolute;
bottom: 150%;
left: 50%;
margin-left: -5px;
width: 0;
border-top: 5px solid hsla(0, 0%, 20%, 0.9);
border-right: 5px solid transparent;
border-left: 5px solid transparent;
content: ' ';
font-size: 0;
line-height: 0;
z-index: inherit;
}
/* show tooltip content on hover */
&[data-tooltip]:hover:before,
&[data-tooltip]:hover:after {
visibility: visible;
opacity: 1;
}
`
经过一些研究,我找不到有关样式组件中属性选择器(即 [attr=value]
)用法的信息。但是,我仍然认为 styled-components 很有可能支持属性选择器......但如果不应该,它有哪些等价物?
例如,如果我有下面的代码
.squares li[data-level='1'] {
background-color: var(--light);
}
.squares li[data-level='2'] {
background-color: var(--medium);
}
.squares li[data-level='3'] {
background-color: var(--dark);
}
.squares li[data-level='4'] {
background-color: var(--darkest);
}
如何通过 styled-components
实现?
非常简单,需要创建样式组件,例如“Squares”,并为具有属性“data-value='N'”的嵌套列表项定义样式
const Squares = styled.div`
li[data-level='1'] {
background-color: var(--light);
}
li[data-level='2'] {
background-color: var(--medium);
}
li[data-level='3'] {
background-color: var(--dark);
}
li[data-level='4'] {
background-color: var(--darkest);
}
`
我明白了;这就是我所做的:
const SquareListItem = styled.li`
border-radius: 3px;
border: 1px rgba(27, 31, 35, 0.06) solid;
background-color: ${colour[0]};
&[data-level='1'] {
background-color: ${colour[1]};
}
&[data-level='2'] {
background-color: ${colour[2]};
}
&[data-level='3'] {
background-color: ${colour[3]};
}
&[data-level='4'] {
background-color: ${colour[4]};
}
/* tooltip */
&[data-tooltip] {
position: relative;
cursor: pointer;
}
&[data-tooltip]:before,
&[data-tooltip]:after {
visibility: hidden;
opacity: 0;
pointer-events: none;
}
&[data-tooltip]:before {
position: absolute;
z-index: 999;
bottom: 150%;
left: 100%;
margin-bottom: 5px;
margin-left: -90px;
padding: 7px;
width: 150px;
border-radius: 3px;
background-color: #000;
background-color: hsla(0, 0%, 20%, 0.9);
color: #fff;
content: attr(data-tooltip);
text-align: center;
font-size: 10px;
line-height: 1.2;
}
&[data-tooltip]:after {
position: absolute;
bottom: 150%;
left: 50%;
margin-left: -5px;
width: 0;
border-top: 5px solid hsla(0, 0%, 20%, 0.9);
border-right: 5px solid transparent;
border-left: 5px solid transparent;
content: ' ';
font-size: 0;
line-height: 0;
z-index: inherit;
}
/* show tooltip content on hover */
&[data-tooltip]:hover:before,
&[data-tooltip]:hover:after {
visibility: visible;
opacity: 1;
}
`