html – 如果文本宽度超过90%,则阻止文本从容器中移出

前端之家收集整理的这篇文章主要介绍了html – 如果文本宽度超过90%,则阻止文本从容器中移出前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望将进度文本放在容器进度中,即使宽度是示例100%.就像现在一样,文本固定在容器的右侧,如下面的第一张图所示.

当进度条的宽度为40%时,它看起来像这样(如预期的那样):

但是当进度为90%或100%时,我希望文本卡在进度条的最右边,如下所示:


section#progressish {
  width: 300px;
}

div#text {}

div#text>div {
  margin-bottom: 5px;
  margin-left: 100%;
  min-width: 100px;
  width: auto !important;
  width: 100px;
}

div#progressbar {
  background-color: #d1d1d1;
  height: 10px;
  margin-bottom: 15px;
  width: 100%;
}

div#progressbar>.progress[data="bar"] {
  background-color: #111111;
  height: 10px;
  margin-bottom: 15px;
  width: 100%;
}
<section id="progressish">
  <div id="text">
    <div>100% avklarat</div>
  </div>

  <div id="progressbar">
    <div class="progress" data="bar"></div>
  </div>
</section>

我怎么能做到这一点?你可以在jsFiddle:https://jsfiddle.net/a7buqqkk/看到整个源代码.

解决方法

如果滚动条的宽度是固定的(300px),并且文本的宽度(文本,而不是元素)或多或少是固定的(大约85px – 从1%到100%),请将文本设置为绝对定位的伪元素.progress的子项,并设置它的宽度和最大宽度:
width: calc(100% + 100px);
max-width: 300px;

如果将文本右对齐,它将显示在条形后面,直到达到最大宽度.

/** js to demonstrate changing values **/
var progressBar = document.querySelector('.progress');
function progress() {
  var minmax = [0,100];
  var step = 1;
  
  const iterate = (current) => {
    progressBar.style.width = `${current}%`;
    progressBar.setAttribute('data-percentage',current);
    
    if(current !== minmax[1]) {
      setTimeout(() => iterate(current + step),40);
    } else {
      minmax = minmax.reverse();
      step = -step;
      
      setTimeout(() => iterate(minmax[0]),500);
    }
  }
  
  iterate(minmax[0]);
}

progress();
section#progressish {
  padding: 20px;
  width: 300px;
}

div#progressbar {
  background-color: #d1d1d1;
  height: 10px;
  margin-bottom: 15px;
  width: 100%;
}

div#progressbar>.progress[data="bar"] {
  position: relative;
  background-color: #111111;
  height: 10px;
  margin-bottom: 15px;
  width: 0%;
}

.progress::before {
  position: absolute;
  top: -20px;
  width: calc(100% + 85px);
  max-width: 300px;
  text-align: right;
  white-space: nowrap;
  content: attr(data-percentage)"% avklarat";
}
<section id="progressish">
  <div id="progressbar">
    <div class="progress" data="bar" data-percentage></div>
  </div>
</section>

猜你在找的HTML相关文章