【问题标题】:Transform not Working on IOS转换在 IOS 上不起作用
【发布时间】:2015-02-02 21:10:37
【问题描述】:

所以我在 iOS 上实现这个代码时遇到了这个小问题,因为我不熟悉 iOS 的工作原理。我有这个圈子,我在我的网站上使用它,它在浏览器和安卓设备上运行完美,但在 iOS 上它崩溃了,所有的学位都集中在了中心。如果有人能帮我解决这个问题,我会很高兴..

HTML

<div class='circle-container'>   
    <div class="center"> Center </div>
    <div class="deg90">1</div>
    <div class="deg315">2</div>
    <div class="deg0">3</div>
    <div class="deg110">4</div>
    <div class="deg135">5</div>
    <div class="deg180">6</div>
    <div class="deg225">7</div>
</div>

CSS:

.circle-container {
    position: relative;
    width: 15em;
    height: 14em;
    padding: 2.8em;
    /*2.8em = 2em*1.4 (2em = half the width of a link with img, 1.4 = sqrt(2))*/
    border: dashed 0px;
    border-radius: 50%;

}
.circle-container > a {
    display: block;
    text-decoration: none;
    position: absolute;
    top: 50%; left: 50%;
    width: 4em; height: 4em;
    margin: -2em;

    text-align: center;
}

.circle-container div {
    display: block;
    text-decoration: none;
    position: absolute;
    top: 50%; left: 50%;
    width: 4em; height: 4em;
    margin: -2em;
    text-align: center;
}
.circle-container img { display: block; width: 100%; height:320px; position:absolute; margin-left:-25px; margin-top:15px;}
.deg0 { transform: translate(5.2em); } /* 12em = half the width of the wrapper */
.deg45 { transform: rotate(45deg) translate(5.4em) rotate(-45deg); }
.deg90 { transform: rotate(-90deg) translate(5em) rotate(90deg); }
.deg110 { transform: rotate(45deg) translate(5em) rotate(-45deg); }
.deg135 { transform: rotate(135deg) translate(5em) rotate(-135deg); }
.deg180 { transform: translate(-5em); }
.deg225 { transform: rotate(225deg) translate(5em) rotate(-225deg); }
.deg315 { transform: rotate(315deg) translate(5em) rotate(-315deg); }

谢谢..

【问题讨论】:

  • 在您的问题中发布您的代码
  • 感谢您的帮助,但我自己解决了。
  • 请不要通过在代码块中放置非代码来规避代码要求。 将代码粘贴到您的问题正文中,如果对您的问题有帮助,请提供链接。
  • 是的,就是这么做的。感谢您的指出..

标签: ios css transform


【解决方案1】:

这里的另一个可能问题(当 iOS 似乎忽略了变换时)是某些 iOS 版本中的错误,其中忽略了 90 度的精确倍数的旋转。

对我有用的解决方案是改用 89.9 度的变换(89.9 度按预期工作;90 度根本不产生旋转)。不理想,但就我而言,差异并不明显。

【讨论】:

    【解决方案2】:

    iOS safari 仍然需要transform 的浏览器前缀

    复制所有转换并在之前添加 -webkit- 前缀版本

    例子

    .deg0 { 
        -webkit-transform: translate(5.2em);
        transform: translate(5.2em);
    }
    

    Working demo

    【讨论】:

      【解决方案3】:

      发现了问题,这是一个愚蠢的问题。我没有使用iOS 支持的-webkit。如果有人需要,以下是已解决的JS Fiddle ..

      .circle-container {
          position: relative;
          width: 15em;
          height: 14em;
          padding: 2.8em;
          /*2.8em = 2em*1.4 (2em = half the width of a link with img, 1.4 = sqrt(2))*/
          border: dashed 0px;
          border-radius: 50%;
      
      }
      .circle-container > a {
          display: block;
          text-decoration: none;
          position: absolute;
          top: 50%; left: 50%;
          width: 4em; height: 4em;
          margin: -2em;
      
          text-align: center;
      }
      
      .circle-container div {
          display: block;
          text-decoration: none;
          position: absolute;
          top: 50%; left: 50%;
          width: 4em; height: 4em;
          margin: -2em;
          text-align: center;
      }
      .circle-container img { display: block; width: 100%; height:320px; position:absolute; margin-left:-25px; margin-top:15px;}
      .deg0 { 
          transform: translate(5.2em); 
          -webkit-transform: translate(5.2em); 
          -ms-transform:  translate(5.2em);
      } /* 12em = half the width of the wrapper */
      .deg45 { 
          transform: rotate(45deg) translate(5.4em) rotate(-45deg);
          -webkit-transform: rotate(45deg) translate(5.4em) rotate(-45deg);
          -ms-transform: rotate(45deg) translate(5.4em) rotate(-45deg); 
      }
      .deg90 { 
          transform: rotate(-90deg) translate(5em) rotate(90deg);
          -webkit-transform: rotate(-90deg) translate(5em) rotate(90deg);
          -ms-transform: rotate(-90deg) translate(5em) rotate(90deg);
      }
      .deg110 { 
          transform: rotate(45deg) translate(5em) rotate(-45deg);
          -webkit-transform: rotate(45deg) translate(5em) rotate(-45deg);
          -ms-transform: rotate(45deg) translate(5em) rotate(-45deg);
       }
      .deg135 {
          transform: rotate(135deg) translate(5em) rotate(-135deg);
          -webkit-transform: rotate(135deg) translate(5em) rotate(-135deg);
          -ms-transform: rotate(135deg) translate(5em) rotate(-135deg); 
      }
      .deg180 { 
          transform: translate(-5em); 
          -webkit-transform: translate(-5em);
          -ms-transform: translate(-5em); 
      }
      .deg225 { 
          transform: rotate(225deg) translate(5em) rotate(-225deg);
         -webkit-transform: rotate(225deg) translate(5em) rotate(-225deg);
         -ms-transform: rotate(225deg) translate(5em) rotate(-225deg); 
      }
      .deg315 { 
          transform: rotate(315deg) translate(5em) rotate(-315deg);
          -webkit-transform: rotate(315deg) translate(5em) rotate(-315deg);
          -ms-transform: rotate(315deg) translate(5em) rotate(-315deg);
      }
      

      【讨论】:

      • 仅供参考,最好将非前缀版本放在最后。如果不是,例如,Chrome 将使用 -webkit- 版本,即使它不再需要。由于在属性仍处于试验阶段时使用前缀,因此最终版本和前缀版本可能会提供不同的结果。
      • @uʍopǝpısdn 添加-moz--o- 有必要吗?它们分别用于 Firefox 和 Opera 吗?
      猜你喜欢
      • 2015-07-19
      • 2015-12-30
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      • 2017-07-31
      • 2014-11-25
      • 2020-03-21
      相关资源
      最近更新 更多