如何通过 CSS 创建带有渐变色条纹边框的矩形?

Sta*_*uck 6 css border sass linear-gradients

我想用渐变色条纹边框创建圆边矩形。

我想使用img标签或div标签来包含图像和渐变条纹边框。

这是它需要的样子: 在此处输入图片说明

我尝试四处搜索,发现(SCSS)示例:https ://jsfiddle.net/rami7250/yujsz7wf/

我得到了这个 SCSS 代码:

.module {
  background: white;
  border: 1px solid #ccc;
  margin: 3%;
  > h2 {
    padding: 1rem;
    margin: 0 0 0.5rem 0;
  }
  > p {
    padding: 0 1rem;
  }
  /*animation: widen 10s linear alternate infinite;*/
}

.stripe-1 {
  color: white;
  background: repeating-linear-gradient(
    45deg,
    #606dbc,
    #606dbc 10px,
    #465298 10px,
    #465298 20px
  );
}
Run Code Online (Sandbox Code Playgroud)

如您所见,该功能仅影响background而不是border

如何通过 CSS/SCSS 使该矩形在其边框中显示渐变色条纹?

Har*_*rry 8

一种选择是linear-gradient在所需模式中使用 a作为background-image并将所需内容放在此背景之上。只要内容,无论是图像还是任何文本或任何不需要透明的内容,这种方法都可以工作。通过将鼠标悬停在元素上可以看到输出也是响应式的。

仅使用条带:(在渐变顶部放置一个白色层以仅显示条带)

div {
  height: 250px;
  width: 400px;
  background: linear-gradient(white, white), 
              linear-gradient(60deg, orange 0%, orange 3.5%, white 3.5%, white 7%, hotpink 7%, hotpink 10.5%, black 10.5%, black 14%, brown 14%, brown 17.5%, aqua 17.5%, aqua 21%, green 21%, green 25%, orange 25%, orange 28.5%, white 28.5%, white 32%, hotpink 32%, hotpink 35.5%, black 35.5%, black 39%, brown 39%, brown 42.5%, aqua 42.5%, aqua 46%, green 46%, green 50%, orange 50%, orange 53.5%, white 53.5%, white 57%, hotpink 57%, hotpink 60.5%, black 60.5%, black 64%, brown 64%, brown 67.5%, aqua 67.5%, aqua 71%, green 71%, green 75%, orange 75%, orange 78.5%, white 78.5%, white 82%, hotpink 82%, hotpink 85.5%, black 85.5%, black 89%, brown 89%, brown 92.5%, aqua 92.5%, aqua 96%, green 96%, green 100%);
  padding: 10px 20px;
  border-radius: 20px;
  background-origin: content-box, padding-box;
  background-clip: content-box, padding-box;
}

/* just for demo */

div {
  transition: all 1s;
}
div:hover {
  height: 300px;
  width: 500px;
}
Run Code Online (Sandbox Code Playgroud)
<div></div>
Run Code Online (Sandbox Code Playgroud)


里面有图像 div

div {
  height: 250px;
  width: 400px;
  background: linear-gradient(white, white), linear-gradient(60deg, orange 0%, orange 3.5%, white 3.5%, white 7%, hotpink 7%, hotpink 10.5%, black 10.5%, black 14%, brown 14%, brown 17.5%, aqua 17.5%, aqua 21%, green 21%, green 25%, orange 25%, orange 28.5%, white 28.5%, white 32%, hotpink 32%, hotpink 35.5%, black 35.5%, black 39%, brown 39%, brown 42.5%, aqua 42.5%, aqua 46%, green 46%, green 50%, orange 50%, orange 53.5%, white 53.5%, white 57%, hotpink 57%, hotpink 60.5%, black 60.5%, black 64%, brown 64%, brown 67.5%, aqua 67.5%, aqua 71%, green 71%, green 75%, orange 75%, orange 78.5%, white 78.5%, white 82%, hotpink 82%, hotpink 85.5%, black 85.5%, black 89%, brown 89%, brown 92.5%, aqua 92.5%, aqua 96%, green 96%, green 100%);
  padding: 10px 20px;
  border-radius: 20px;
  background-origin: content-box, padding-box;
  background-clip: content-box, padding-box;
}
img {
  height: 250px;
  width: 400px;
}
/* just for demo */

div, img {
  transition: all 1s;
}
div:hover, div:hover img {
  height: 300px;
  width: 500px;
}
Run Code Online (Sandbox Code Playgroud)
<div>
  <img src='http://lorempixel.com/400/250/nature/1' />
</div>
Run Code Online (Sandbox Code Playgroud)


使用重复线性渐变:(感谢vals创建演示)

div {
  height: 250px;
  width: 400px;
  background: linear-gradient(white,white), repeating-linear-gradient(60deg, orange 0%, orange 3.5%, white 3.5%, white 7%, hotpink 7%, hotpink 10.5%, black 10.5%, black 14%, brown 14%, brown 17.5%, aqua 17.5%, aqua 21%, green 21%, green 25%);
  background-attachment: padding-box, border-box;
  padding: 10px 20px;
  border-radius: 20px;
  background-origin: content-box, padding-box;
  background-clip: content-box, padding-box;
}

/* just for demo */

div {
  transition: all 1s;
}
div:hover {
  height: 300px;
  width: 500px;
}
Run Code Online (Sandbox Code Playgroud)
<div>
</div>
Run Code Online (Sandbox Code Playgroud)

注意:在使用倾斜渐变时,锯齿状边缘很难避免。可以通过调整颜色停止点来减少它们。

  • 这个背景在我看来还可以:背景:重复线性渐变(60度,橙色 0%,橙色 3.5%,白色 3.5%,白色 7%,hotpink 7%,hotpink 10.5%,黑色 10.5%,黑色 14%,棕色14%、棕色 17.5%、浅绿色 17.5%、浅绿色 21%、绿色 21%、绿色 25%); (2认同)

Nei*_*eil 6

没必要这么复杂,只需要两行CSS:

.module {
    border: 20px solid;
    border-image: repeating-linear-gradient(45deg,#606dbc,#606dbc 10px,#465298 10px,#465298 20px) 20;
}
Run Code Online (Sandbox Code Playgroud)

你的小提琴的一个叉子:https : //jsfiddle.net/5k70jt5f/1/