【发布时间】:2014-11-20 00:19:15
【问题描述】:
我正在尝试在 Javascript/CSS 中创建动画条形图。
它可以在 Chrome、Firefox、Safari 和移动设备上完美运行。但是,它在任何版本的 IE 中都不起作用(包括 IE11,这真的很奇怪)。
我尝试为每个栏指定一个特定的 ID,并使用 .getElementById 和 .getAttribute 来定位它,但这不起作用。
通过谷歌搜索,数据属性、.css() 和 .animate() 应该可以在 IE11 中使用。所有关于错误的问题似乎都是针对旧版本的。
我真的很感激多一双眼睛。
谢谢你,
附上小提琴:http://jsfiddle.net/828s8Lvx/
我的代码如下:
HTML:
<div id="platform-chart">
<ul class="bars">
<li><div data-percentage="1.6" class="bar"></div><span>1</span></li>
<li><div data-percentage="1.3" class="bar"></div><span>2</span></li>
<li><div data-percentage="0.8" class="bar"></div><span>3</span></li>
<li><div data-percentage="5.2" class="bar"></div><span>4</span></li>
<li><div data-percentage="9.4" class="bar"></div><span>5</span></li>
<li><div data-percentage="17.0" class="bar"></div><span>6</span></li>
<li><div data-percentage="14.9" class="bar"></div><span>7</span></li>
<li><div data-percentage="14.4" class="bar"></div><span>8</span></li>
<li><div data-percentage="13.6" class="bar"></div><span>9</span></li>
<li><div data-percentage="13.6" class="bar"></div><span>10</span></li>
<li><div data-percentage="6.5" class="bar"></div><span>11</span></li>
<li><div data-percentage="1.3" class="bar"></div><span>12</span></li>
<li><div data-percentage="0.3" class="bar"></div><span>13</span></li>
</ul>
</div>
Javascript:
$(".bars li div").each( function( key, bar ) {
var self = this;
setTimeout (function() {
$(self).css({ 'opacity' : 1 });
var percentage = ($(self).attr('data-percentage') * 3.8);
$(self).animate({ 'height' : percentage + '%' }, 1500);
}, key * 300);
});
SASS:
#platform-chart {
position: relative;
left: 50%;
.bars {
display: inline-block;
height: 300px;
width: 950px;
li {
display: table-cell;
width: 100px;
height: 300px;
text-align: center;
position: relative;
.bar {
position: absolute;
bottom: 0;
display: block;
background: #f4804b;
width: 50px;
margin-left: 20px;
&:after {
position: relative;
bottom: 20px;
color: #f4804b;
content: attr(data-percentage) '%';
}
}
span {
position: absolute;
color: #000;
width: 100%;
bottom: -2em;
left: 7px;
}
}
}
【问题讨论】:
-
parseFloat($(self).attr('data-percentage'))默认为字符串。有可能浏览器不会自动转换,而 IE 只是将其保留为字符串并感到困惑。我没有链接可以证明这一点,所以这只是一个理论 -
这是因为你强制LI元素显示
table-cell,这意味着它们在IE中没有高度,并且将DIV内部设置为百分比高度不起作用作为父级没有高度。删除table-cell的东西,找到更好的方法来获得你想要的布局。 -
这是一个有效的方法-> jsfiddle.net/adeneo/828s8Lvx/2
-
谢谢,我没有意识到表格单元格在 IE 中是这样工作的。这真是太好了。我将 ul 切换为 display:flex 并将 li 切换为 display:inline-block (这是唯一可行的方法)。现在它可以在 Chrome、Firefox、IE 等上运行,但在 iOS 上会中断。打算尝试定位这些设备并更改 JS 中的显示模式。
标签: jquery html internet-explorer custom-data-attribute