使用CSS在顶部和底部的半色边框

RaJ*_*iJo 19 html css

在此输入图像描述

我想设计我的标题如上图所示.这里的问题是关于带两种不同颜色的边框.这是我到目前为止所尝试的代码.提前致谢.

header {
  text-align: center;
  background-color: #7f7f7f;
}

h1 {
  color: #00a2e8;
  font-size: 40px;
  padding: 5px 0;
  display: inline-block;
  border-top: 3px solid #880015;
  border-bottom: 3px solid #880015;  
}
Run Code Online (Sandbox Code Playgroud)
<header>
  <h1>HEADER</h1>
</header>
Run Code Online (Sandbox Code Playgroud)

Dan*_*eld 25

这是不使用伪元素的一种方法:

h1 {
  display: inline-block;
  color: #00a2e8;
  font-size: 40px;
  padding: 5px 0;
  background:linear-gradient(to right, #ccc 50%, maroon 50%) bottom,
    linear-gradient(to right, maroon 50%, #ccc 50%) top;
  background-repeat: no-repeat;
  background-size:100% 2px;
} 
Run Code Online (Sandbox Code Playgroud)

header {
  text-align: center;
  background-color: #7f7f7f;
}

h1 {
  display: inline-block;
  color: #00a2e8;
  font-size: 40px;
  padding: 5px 0;
  background:linear-gradient(to right, #ccc 50%, maroon 50%) bottom,
    linear-gradient(to right, maroon 50%, #ccc 50%) top;
  background-repeat: no-repeat;
  background-size:100% 3px;
}
Run Code Online (Sandbox Code Playgroud)
<header>
  <h1>HEADER</h1>
</header>
Run Code Online (Sandbox Code Playgroud)


只是为了好玩,您可以在文本颜色上产生分色效果 - 使用一个额外的伪元素 - 如下所示:

header {
  text-align: center;
  background-color: #7f7f7f;
  --color1: maroon;
  --color2: #ccc;
}

h1 {
  position: relative;
  display: inline-block;
  font-size: 30px;
  color: var(--color1);
  background: linear-gradient(to right, var(--color1) 50%, var(--color2) 50%) bottom, linear-gradient(to right, var(--color2) 50%, var(--color1) 50%) top;
  background-repeat: no-repeat;
  background-size: 100% 2px;
  padding: 5px 0;
  white-space: nowrap;
}

h1:before {
  content: attr(data-text);
  overflow: hidden;
  position: absolute;
  left: 0;
  top: 5px;
  width: 50%;
  color: var(--color2);
}
Run Code Online (Sandbox Code Playgroud)
<header>
  <h1 data-text="HEADER">HEADER</h1>
</header>

<hr>

<header>
  <h1 data-text="Some text here">Some text here</h1>
</header>
Run Code Online (Sandbox Code Playgroud)

Codepen演示


frn*_*rnt 17

使用伪::before::afteron h1标签linear-gradient作为background使用高度而不是边框​​来获得该样式,

header {
  text-align: center;
  background-color: #7f7f7f;
}

h1{
  color: #00a2e8;
  font-size: 40px;
  padding: 5px 0;
  display: inline-block;
  position:relative;
}
h1:before{
  content:"";
  width:100%;
  height:3px;
  left:0;
  top:0;
  position:absolute;
  z-index:9;
  background:linear-gradient(to right, white 50%, brown 50%);
}
h1:after{
  content:"";
  width:100%;
  height:3px;
  left:0;
  bottom:0;
  position:absolute;
  z-index:9;
  background:linear-gradient(to right, brown 50%, white 50%);
}
Run Code Online (Sandbox Code Playgroud)
<header>
  <h1>HEADER</h1>
</header>
Run Code Online (Sandbox Code Playgroud)


Ter*_*rry 7

与许多其他答案不同,不,您不需要使用伪元素.使用多个渐变可以正常工作:

  • 使用两个渐变:一个旋转90度,另一个旋转-90度.使用两种颜色停止:#88001550%和#fff50%
  • 使用100%宽度和3px高度的背景尺寸,即 background-size: 100% 3px
  • 将两个背景放在元素的左上角和左下角

Voila-见下面的概念验证:

header {
  text-align: center;
  background-color: #7f7f7f;
}

h1 {
  color: #00a2e8;
  font-size: 40px;
  padding: 5px 0;
  display: inline-block;
  
  background-image:
    linear-gradient(90deg, #880015 50%, #fff 50%),
    linear-gradient(-90deg, #880015 50%, #fff 50%);
    
  background-size: 100% 3px;
  
  background-position:
    top left,
    bottom left;
  
  background-repeat: no-repeat;
}
Run Code Online (Sandbox Code Playgroud)
<header>
  <h1>HEADER</h1>
</header>
Run Code Online (Sandbox Code Playgroud)