首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Safari css宽度转换不适用于不同的单位测量

Safari css宽度转换不适用于不同的单位测量
EN

Stack Overflow用户
提问于 2013-09-03 18:43:50
回答 2查看 2.4K关注 0票数 6

我和-webkit-transition在Safari上有个问题。这些转换在Chrome、FF和IE10 (使用非前缀转换属性)中工作得很好。

在我的网站,有3个面板,可以查看。默认情况下,主窗口将打开,其余的2将折叠在窗口的右侧,显示其内容的一个小块。单击折叠面板时,将通过JS向其添加额外的类,并将其转换为100%宽度。

CSS:

代码语言:javascript
复制
.panel-1{
  width: 100%;
}

.panel-2{
    width: 8rem;
    position: absolute;
    top: 0;
    right: 0;
    overflow: hidden;
    z-index: 500;
    transition: all 0.5s;
    -webkit-transition: all 0.5s;
}

.panel-2:hover{
     width: 10rem;
}

.panel-2.panel-open{
     width: 100%;
}

.panel-3{
    width: 4rem;
    position: absolute;
    top: 0;
    right: 0;
    overflow: hidden;
    z-index: 501;
    transition: all 0.5s;
    -webkit-transition: all 0.5s;
}

.panel-3:hover{
     width: 6rem;
}

.panel-3.panel-open{
     width: 100%;
}

问题似乎在于测量单位的差异。悬停转换按预期工作(remrem),但是“面板打开”上的宽度转换(rem%)跳过转换,只需打开即可。如果我将默认宽度切换为百分比而不是rem,则转换再次工作。但是,我不能这样做,因为它是一个流体场地,面板坍塌的宽度需要是静态的,而不是相对的。

我尝试在%中添加一个%,但这并没有帮助。如对此有任何建议,将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2015-07-01 13:53:35

width上的转换是一个问题。试试max-width

票数 2
EN

Stack Overflow用户

发布于 2017-03-27 15:42:23

在我的经验中,转换width是有问题的。您可以将其转换为使用leftright值,而不是使用宽度。width: 20%;将与left: 80%; right: 0;相同,width: 50%;将成为left: 25%; right: 25%;。这是一个代码https://codepen.io/anon/pen/JWaJzN

代码语言:javascript
复制
document.getElementById("wrapper").addEventListener("click", function(){
  if (this.classList.contains('center')) {
    this.classList.remove('center');
  }
  else {
   this.classList.add('center');
  }
});
代码语言:javascript
复制
.container { 
  width: 550px;
  height: 250px;
  position: relative;
  background-color: teal;
}

#wrapper {
  height: 20%;
  top: 0;
  right: 0;
  left: 80%;
  position: absolute;
  transform-origin: top left;
  transition: all 1s ease;
}

#wrapper.center {
  top: 50%;
  left: 25%;
  right: 25%;
  transform: translateY(-50%);
}

#card {
  width: 100%;
  height: 100%;
  position: relative;
  transition: all 1s ease;
}


h3 {
  margin: 0;
  display: block;
  position: absolute;
  width: 100%;
  height: 100%;
  background: red;
}
代码语言:javascript
复制
<section class="container">
  
  <div id="wrapper">
    <div id="card">
      <h3>click here</h3>
    </div>
  </div>
  
</section>

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

https://stackoverflow.com/questions/18599360

复制
相关文章

相似问题

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