如何使用在两个方向上渐变的渐变图像作为边框图像?
How do I use gradient image which gradates in both directions as border-image?
我希望我的 <div>
有一个底部边框,它从左边一段距离开始。就像:
abc
^^^^^^^^^^
其中^
代表一块边框。
我使用 border-image
实现了这一点。我将 border-image
设置为 linear-gradient()
图像,该图像开始时是透明的,然后从某些像素变为灰色。
<style>
div {
width: 200px;
border-top-style: none;
border-bottom-style: solid;
border-width: 1px;
border-image: linear-gradient(to right,
transparent 0,
transparent 1em,
lightgray 1em,
lightgray 100%) 100% 1;
}
</style>
<div>abc</div>
现在的新要求是在现有线条的正下方添加一条 1px 的白线,以模拟 3d 效果。我以为我可以简单地在边框图像上添加一个垂直渐变,但我不知道该怎么做。
您可以通过 box-shadow
实现
如果您对 div 使用 display: flex
,则应使用 position: absoute
定位伪 after
元素
看这个例子:
body {
background-color: lightgreen;
}
div {
display: flex;
position: relative;
}
div:after {
content: "";
position: absolute;
bottom: 0;
left: 0;
display: block;
width: 200px;
height: 1px;
box-shadow: 10px 1px 0 0 lightgray, 10px 2px 0 0 white;
}
<div>abc</div>
<div>edf</div>
考虑多背景而不是边框。我使用了不同的颜色以更好地查看结果:
.box {
width: 200px;
background:
linear-gradient(blue, blue) 1em 100%/ 100% 1px no-repeat,
linear-gradient(red, red) 1em 100%/ 100% 2px no-repeat;
}
<div class="box">abc</div>
我希望我的 <div>
有一个底部边框,它从左边一段距离开始。就像:
abc
^^^^^^^^^^
其中^
代表一块边框。
我使用 border-image
实现了这一点。我将 border-image
设置为 linear-gradient()
图像,该图像开始时是透明的,然后从某些像素变为灰色。
<style>
div {
width: 200px;
border-top-style: none;
border-bottom-style: solid;
border-width: 1px;
border-image: linear-gradient(to right,
transparent 0,
transparent 1em,
lightgray 1em,
lightgray 100%) 100% 1;
}
</style>
<div>abc</div>
现在的新要求是在现有线条的正下方添加一条 1px 的白线,以模拟 3d 效果。我以为我可以简单地在边框图像上添加一个垂直渐变,但我不知道该怎么做。
您可以通过 box-shadow
如果您对 div 使用 display: flex
,则应使用 position: absoute
after
元素
看这个例子:
body {
background-color: lightgreen;
}
div {
display: flex;
position: relative;
}
div:after {
content: "";
position: absolute;
bottom: 0;
left: 0;
display: block;
width: 200px;
height: 1px;
box-shadow: 10px 1px 0 0 lightgray, 10px 2px 0 0 white;
}
<div>abc</div>
<div>edf</div>
考虑多背景而不是边框。我使用了不同的颜色以更好地查看结果:
.box {
width: 200px;
background:
linear-gradient(blue, blue) 1em 100%/ 100% 1px no-repeat,
linear-gradient(red, red) 1em 100%/ 100% 2px no-repeat;
}
<div class="box">abc</div>