首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >底部边框中的部分颜色以显示进度条

底部边框中的部分颜色以显示进度条
EN

Stack Overflow用户
提问于 2020-10-24 13:35:37
回答 1查看 132关注 0票数 0

有没有一种方法可以使用线性渐变来设置双色底部边框,以便将其用作进度条?想想Safari在网站加载时显示进度条的方式。

我们可以使用background来实现:

代码语言:javascript
复制
    background-image: linear-gradient(90deg, green 10%, red 0%, red 100%);

这将生成一个10%绿色和90%红色的div。是否可以在div的底部边框上使用类似的技术?另外,这个底部边框的宽度是否可以控制为3px?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-24 14:02:25

我更愿意为它创建一个元素,但您可以这样做:

请不要使用绿色和红色,因为色盲问题。

代码语言:javascript
复制
body {
  margin: 0;
  padding: 0;
}

header {
  --progress: 10%;

  background-color: khaki;
  height: 3rem;
  border-bottom: 3px solid;
  
  border-image: linear-gradient(90deg, green var(--progress), red 0%, red 100%) 1;
}
代码语言:javascript
复制
<header></header>

编辑我可以添加如何设置带有伪元素的进度条。我更喜欢使用两个(一个作为背景,另一个作为进程),这样更容易将进程动画化。

添加了一个范围输入,使其更具交互性。

代码语言:javascript
复制
let headerElements = document.querySelectorAll('header');

function updateHeaders(value) {
  headerElements.forEach((header) => {
    header.style.setProperty('--progress', value + "%");
  });
}
代码语言:javascript
复制
body {
  --primary-color: lightblue;
  
  margin: 0;
  padding: 0;
}

header {
  --progress: 30%;

  background-color: var(--primary-color);
  display: flex;
  align-items: center;
  
  /* RELEVANT CSS */
  position: relative;
}

  /* RELEVANT CSS */
header.progressbar::before,
header.two.pseudo-elements.progressbar::after {
  content: '';
  position: absolute;
  bottom: 0px;
  left: 0px;
  right: 0px;
  height: 3px;
}

header.one.pseudo-element.progressbar::before {
  background-image: linear-gradient(90deg, green var(--progress), red 0%, red 100%);
}

header.two.pseudo-elements.progressbar::before {
  z-index: 2;
  right: initial;
  width: var(--progress);
  background-color: green;
  transition: width 300ms linear;
}

header.two.pseudo-elements.progressbar::after {
  z-index: 1;
  background-color: red;
}

/* PLACEHOLDER CSS BELOW */
input[type="range"] {
  margin: 1rem 0px;
  width: 100%;
}

div[title="Logotype"] {
  width: 35px;
  height: 35px;
  display: flex;
  justify-content: center;
  align-items: center;
  font-family: "Verdana";
  font-size: 36px;
  padding: 0.25rem;
  margin: 0.5rem;
  background-color: white;
  border-radius: 50%;
}

header > a {
  padding: 0px 0.5rem;
  color: #121212;
}
代码语言:javascript
复制
<h3>One pseudo-element</h3>
<header class="one pseudo-element progressbar">
  <div title="Logotype">L</div>
  <a href="#">Link 1</a>
  <a href="#">Link 2</a>
</header>

<h3>Two pseudo-elements</h3>
<header class="two pseudo-elements animate progressbar">
  <div title="Logotype">L</div>
  <a href="#">Link 1</a>
  <a href="#">Link 2</a>
</header>

<input type="range" oninput="updateHeaders(this.value)" value="30" />

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64510335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档