首页 > 解决方案 > 停止左边距将元素推离页面

问题描述

这是我的代码:

https://jsfiddle.net/rzcos32n/

我有这个代码:

function isItANumber(el) {

var element1 = document.getElementById("circle").innerHTML;
var percent =  parseFloat(element1)*100;
percent+='%';


  var increased = parseInt(el.innerText);
  var element = document.getElementById("Value");

  if (isNaN(increased) || element1 >= 0) {
    document.getElementById("Result").innerHTML = "KanBan";
    document.getElementById("circle").style.marginLeft = percent;
  };
  if (isNaN(increased) || element1 >= 0.33) {
    document.getElementById("Result").innerHTML = "ScrumBan";
    document.getElementById("circle").style.marginLeft = percent;
  };
  if (isNaN(increased) || element1 >= 0.66) {
    document.getElementById("Result").innerHTML = "Scrum";
    document.getElementById("circle").style.marginLeft = percent;
  }
    if (isNaN(increased) || element1 > 0.9) {
    document.getElementById("Result").innerHTML = "Scrum";
    document.getElementById("circle").style.marginRight = '0%';
  }
}
var element = document.getElementById("circle");
isItANumber(element);
#line {
  width: 100%;
  /* 2 */
  height: 5px;
  background: gray;
  position:relative;
  margin-top: 30px;
}

#circle {
  height: 50px;
  width: 50px;
  border-radius: 50%;
  background: blue;
  text-align: center;
  color: white;
  font-weight: 700;
  line-height: 50px;
  font-size: 14px;
  position:absolute;
  margin-top:-22.5px;
}
<div id="Result"></div>


<div id="line">
  <div id="circle">
    1.0
  </div>
</div>

我根据圆圈中的百分比值在水平线上设置圆圈的位置。因此,如果它是“1”,则表示 100%。

我通过为其分配一个 margin-left 来做到这一点,它对于大多数值都非常有效,除非它像 1 这样的高值会将圆圈完全推离页面。

有没有办法让圆圈始终留在页面上,即使它的左边距为 0% 或 100%?

标签: htmlcss

解决方案


var percent = "calc("+parseFloat(element1)*100+"% - 50px)";以这种方式添加了你得到 100% 但我们必须减去圆圈宽度 (50px)

function isItANumber(el) {

var element1 = document.getElementById("circle").innerHTML;
var percent =  "calc("+parseFloat(element1)*100+"% - 50px)";


  var increased = parseInt(el.innerText);
  var element = document.getElementById("Value");

  if (isNaN(increased) || element1 >= 0) {
    document.getElementById("Result").innerHTML = "KanBan";
    document.getElementById("circle").style.marginLeft = percent;
  };
  if (isNaN(increased) || element1 >= 0.33) {
    document.getElementById("Result").innerHTML = "ScrumBan";
    document.getElementById("circle").style.marginLeft = percent;
  };
  if (isNaN(increased) || element1 >= 0.66) {
    document.getElementById("Result").innerHTML = "Scrum";
    document.getElementById("circle").style.marginLeft = percent;
  }
    if (isNaN(increased) || element1 > 0.9) {
    document.getElementById("Result").innerHTML = "Scrum";
    document.getElementById("circle").style.marginRight = '0%';
  }
}
var element = document.getElementById("circle");
isItANumber(element);
#line {
  width: 100%;
  /* 2 */
  height: 5px;
  background: gray;
  position:relative;
  margin-top: 30px;
}

#circle {
  height: 50px;
  width: 50px;
  border-radius: 50%;
  background: blue;
  text-align: center;
  color: white;
  font-weight: 700;
  line-height: 50px;
  font-size: 14px;
  position:absolute;
  margin-top:-22.5px;
}
<div id="Result"></div>
<div id="line">
  <div id="circle">
    1.0
  </div>
</div>


推荐阅读