如何制作带有 border-image 的自定义 CSS 边框?

How to make a custom CSS border with border-image?

我正在尝试使用 border-image shorthand property.Is 尝试制作这样的自定义 css 边框,但惨遭失败 有没有办法制作部分边框?也许有更好的方法来实现我想要做的事情?我总是可以插入这张图片,但一旦你这样做,它似乎不会很好地调整大小。

你可以用display:flex换行,"play"用border换行到div里面wrap

.wrap{
display:flex;
width:100%;
}
.wrap div{
width:calc(100vw / 3);
}
.header{
    text-align: center;
    border-right: 5px solid black;
    border-left: 5px solid black;
}
.border{
margin-top: 5px;
height:8px;
border-top: 5px solid black;
}
.b-left{
border-left: 5px solid black;
}
.b-right{
border-right: 5px solid black;
}
<div class="wrap">
      <div class="border b-left"></div>
      <div class="header">Header</div>
      <div class="border b-right"></div>
</div>

我们也可以通过直接将 content 定位在 container 中来实现这一点,如下所示。

这里我们使用边距定位content,我们也可以通过绝对定位内容来做到这一点。

.container {
  border: 5px solid #000;
  border-bottom: 0;
  height: 10px;
  margin-top: 15px;
}
.content {
  background: #fff;
  text-align: center;
  border-left: 5px solid #000;
  border-right: 5px solid #000;
  height: 25px;
  line-height: 25px;
  width: 150px;
  margin: -15px auto 0; /* height 25px + 5px border = 30/2 = 15 */
}
<div class="container">
  <div class="content">Header</div>
</div>

这是一个代码更少且透明的响应式解决方案:

.container {
  text-align: center;
  overflow: hidden;
  border:5px solid;
  border-image:linear-gradient(to bottom,transparent 10px,#000 10px,#000 100%) 4;
  height:50px;
  margin:5px;
}

.top {
  display: inline-block;
  position: relative;
  padding: 0 10px;
}

.top::before,
.top::after {
  content: "";
  position: absolute;
  top: calc(50% - 8px);
  width: 100vw;
  height: 15px;
  padding: 5px 0;
  box-sizing: border-box;
  background: #000 content-box;
}

.top::before {
  right: 100%;
  border-right: 5px solid;
}

.top::after {
  left: 100%;
  border-left: 5px solid;
}

body {
 background:pink;
}
<div class="container">
  <div class="top">Hello</div>
</div>

<div class="container">
  <div class="top">More Hello</div>
</div>

<div class="container">
  <div class="top">H</div>
</div>