IE显示侧栏过渡不正确

时间:2017-05-30 14:29:47

标签: css css3 internet-explorer cross-browser

我有一个侧边栏,可以通过buttonclick进行扩展和缩回。所有动画都是css-transitions。在Firefox和Chrome中它可以工作,但(一如既往)IE 11看起来并不好看。这是因为菜单项中的文本在转换结束前一刻就会突然变成一条尖锐的行。Here is the jsfiddle 和片段(没有图标)。

$('#button').click(function() {
  $('.sidebaritem > span').css('width', '0px');
  $('.sidebaritem > span').css('padding-left', '0px');
  $('.sidebaritem > span').css('padding-right', '0px');
  $('.sidebar').css('width', '35px');
  $('.content').css('margin-left', '35px');
});
$('#button2').click(function() {
  $('.sidebaritem > span').css('width', '80%');
  $('.sidebaritem > span').css('padding-left', '5px');
  $('.sidebaritem > span').css('padding-right', '5px');
  $('.sidebar').css('width', '250px');
  $('.content').css('margin-left', '250px');
});
.sidebar {
  position: fixed;
  width: 250px;
  height: 100%;
  border: 1px solid #273238;
  background: #273238;
  -webkit-transition: all 0.5s ease;
  -moz-transition: all 0.5s ease;
  -ms-transition: all 0.5s ease;
  -o-transition: all 0.5s ease;
  transition: all 0.5s ease;
  display: inline-block;
  overflow: hidden;
}

.sidebaritem {
  cursor: pointer;
  height: 35px;
}

.sidebaritem:hover,
.sitebaritemhover {
  background: #212a2f;
}

.sidebaritem > * {
  display: inline-block;
  overflow: hidden;
  color: #AAA;
  padding: 0 5px 0px 5px;
  position: relative;
  top: 50%;
  transform: translateY(-50%);
}

.sidebaritem > .fa {
  font-size: 20px;
}

.sidebaritem > span {
  color: #AAA;
  width: 80%;
  white-space: nowrap;
  line-height: 20px;
  -webkit-transition: all 0.5s ease;
  -moz-transition: all 0.5s ease;
  -ms-transition: all 0.5s ease;
  -o-transition: all 0.5s ease;
  transition: all 0.5s ease;
}

.content {
  display: inline-block;
  margin-left: 250px;
  -webkit-transition: all 0.5s ease;
  -moz-transition: all 0.5s ease;
  -ms-transition: all 0.5s ease;
  -o-transition: all 0.5s ease;
  transition: all 0.5s ease;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet"/>
<div class="sidebar noselect" id=sidebar>
  <div class="sidebaritem">
    <i class="fa fa-home fa-fw" aria-hidden="true"></i>
    <span>Item1</span>
  </div>
  <div class="sidebaritem">
    <i class="fa fa-bar-chart fa-fw" aria-hidden="true"></i>
    <span>Item2</span>
  </div>
  <div class="sidebaritem">
    <i class="fa fa-wrench fa-fw" aria-hidden="true"></i>
    <span>Item3</span>
  </div>
  <div class="sidebaritem">
    <i class="fa fa-cog fa-fw" aria-hidden="true"></i>
    <span>Item4</span>
  </div>
</div>
<div class="content">
  <h1>CONTENT</h1>
  <button id="button">-
  </button>
  <button id="button2">+
  </button>
</div>

有人可以找到防止这种情况的方法吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

在你的js脚本中改变这一行

$('#button').click(function() {
$('.sidebaritem > span').css('width', '0px');

为:

$('#button').click(function() {
$('.sidebaritem > span').css('width', '0%');

它应该有用。

这是片段:

$('#button').click(function() {
  $('.sidebaritem > span').css('width', '0%');
  $('.sidebaritem > span').css('padding-left', '0px');
  $('.sidebaritem > span').css('padding-right', '0px');
  $('.sidebar').css('width', '35px');
  $('.content').css('margin-left', '35px');
});
$('#button2').click(function() {
  $('.sidebaritem > span').css('width', '80%');
  $('.sidebaritem > span').css('padding-left', '5px');
  $('.sidebaritem > span').css('padding-right', '5px');
  $('.sidebar').css('width', '250px');
  $('.content').css('margin-left', '250px');
});
.sidebar {
  position: fixed;
  width: 250px;
  height: 100%;
  border: 1px solid #273238;
  background: #273238;
  -webkit-transition: all 0.5s ease;
  -moz-transition: all 0.5s ease;
  -ms-transition: all 0.5s ease;
  -o-transition: all 0.5s ease;
  transition: all 0.5s ease;
  display: inline-block;
  overflow: hidden;
}

.sidebaritem {
  cursor: pointer;
  height: 35px;
}

.sidebaritem:hover,
.sitebaritemhover {
  background: #212a2f;
}

.sidebaritem > * {
  display: inline-block;
  overflow: hidden;
  color: #AAA;
  padding: 0 5px 0px 5px;
  position: relative;
  top: 50%;
  transform: translateY(-50%);
}

.sidebaritem > .fa {
  font-size: 20px;
}

.sidebaritem > span {
  color: #AAA;
  width: 40%;
  white-space: nowrap;
  line-height: 20px;
  -webkit-transition: all 0.5s ease;
  -moz-transition: all 0.5s ease;
  -ms-transition: all 0.5s ease;
  -o-transition: all 0.5s ease;
  transition: all 0.5s ease;
}

.content {
  display: inline-block;
  margin-left: 250px;
  -webkit-transition: all 0.5s ease;
  -moz-transition: all 0.5s ease;
  -ms-transition: all 0.5s ease;
  -o-transition: all 0.5s ease;
  transition: all 0.5s ease;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>

<div class="sidebar noselect" id=sidebar>
  <div class="sidebaritem">
    <i class="fa fa-home fa-fw" aria-hidden="true"></i>
    <span>Item1</span>
  </div>
  <div class="sidebaritem">
    <i class="fa fa-bar-chart fa-fw" aria-hidden="true"></i>
    <span>Item2</span>
  </div>
  <div class="sidebaritem">
    <i class="fa fa-wrench fa-fw" aria-hidden="true"></i>
    <span>Item3</span>
  </div>
  <div class="sidebaritem">
    <i class="fa fa-cog fa-fw" aria-hidden="true"></i>
    <span>Item4</span>
  </div>
</div>
<div class="content">
  <h1>CONTENT</h1>
  <button id="button">-
  </button>
  <button id="button2">+
  </button>
</div>