英文:
Drawing a cross inside a styled-components div?
问题
我尝试在我样式化的 div 内部画一个十字。我正在使用 styled-components。
到目前为止,我的代码如下:
export const StyledCell = styled.div
width: auto;
background: rgba(${props => props.color}, 0.1);
border: ${props => (props.type === 0 ? '0px solid' : '4px solid')};
border-bottom-color: rgba(${props => props.color}, 0.5);
border-right-color: rgba(${props => props.color}, 1);
border-top-color: rgba(${props => props.color}, 1);
border-left-color: rgba(${props => props.color}, 0.7);
position: relative;
我尝试添加了以下内容:
:after{
content:"";
position:absolute;
border-top:1px solid red;
width:40px;
transform: rotate(45deg);
transform-origin: 0% 0%;
}
这对一个对角线来说效果相当不错,但我不太确定如何处理另一个对角线,因为我的最初想法是改变角度,但似乎得到了一个奇怪位置的对角线。
英文:
Im trying to draw a cross inside a div i styled. I'm using styled-components.
So far my code is as follows:
export const StyledCell = styled.div`
width: auto;
background: rgba(${props => props.color}, 0.1);
border: ${props => (props.type === 0 ? '0px solid' : '4px solid')};
border-bottom-color: rgba(${props => props.color}, 0.5);
border-right-color: rgba(${props => props.color}, 1);
border-top-color: rgba(${props => props.color}, 1);
border-left-color: rgba(${props => props.color}, 0.7);
position: relative;
`
i have tried adding:
:after{
content:"";
position:absolute;
border-top:1px solid red;
width:40px;
transform: rotate(45deg);
transform-origin: 0% 0%;
}
to it which works pretty well for one diagonal, but i'm not quite sure how to do the other one as my initial thought was to just change the angle but that seemed to come up with a weirdly placed diagonal
答案1
得分: 0
以下是您要翻译的内容:
另一种选择是使用 `linear-gradient()` 来生成这些线条;因为它支持多个渐变,我们可以这样做:
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-css -->
div {
margin: 2rem;
width: 20rem;
height: 20rem;
position: relative;
/* 画一个渐变,它是:
从透明到比中点少1像素,
然后红色持续几个像素,
然后再次变为透明
*/
/* 首先从左下角到右上角 ... */
background: linear-gradient(to top right,
transparent calc(50% - 1px),
red calc(50% - 1px) calc(50% + 1px),
transparent calc(50% + 1px)),
/* ... 然后从左上角到右下角 */
linear-gradient(to bottom right,
transparent calc(50% - 1px),
red calc(50% - 1px) calc(50% + 1px),
transparent calc(50% + 1px));
}
<!-- language: lang-html -->
<div></div>
<!-- end snippet -->
英文:
An alternative option is to use linear-gradient()
to produce the lines; as this supports multiple gradients, we can do this:
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-css -->
div {
margin: 2rem;
width: 20rem;
height: 20rem;
position: relative;
/* draw a gradient which is:
transparent up to 1px less than the midpoint,
then red for a couple of pixels,
then transparent again
*/
/* first from the bottom left corner to the top right ... */
background: linear-gradient(to top right,
transparent calc(50% - 1px),
red calc(50% - 1px) calc(50% + 1px),
transparent calc(50% + 1px)),
/* ... then from the top left corner to the bottom right */
linear-gradient(to bottom right,
transparent calc(50% - 1px),
red calc(50% - 1px) calc(50% + 1px),
transparent calc(50% + 1px));
}
<!-- language: lang-html -->
<div></div>
<!-- end snippet -->
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论