在iOS的safari中改变方向时,你能改变显示的内容吗?

时间:2011-06-14 09:11:27

标签: iphone css ios safari

我有一个移动网站,目前显示时间表。然而,非移动网站上还有一个带有谷歌地图的iFrame,用于显示被跟踪的多辆车。

对于移动网站,我只希望时间表以纵向显示,而只有iframe以横向显示。

我见过这个Can I trigger a CSS event in mobile safari upon iphone orientation change?,但我很难看到如何将其应用到我的查询中。

这是iFrame的CSS:

.map {
-moz-border-radius: 5px;
  -webkit-border-radius: 5px;
  background-color: #fff;
  color: #000;
  width: 600px;
  height: 500px;
  margin-left: 20px;
  margin-right: auto;
  overflow: hidden;
  -moz-box-shadow: inset 0 0 5px #888;
  -webkit-box-shadow: inset 0 0 5px #888;
  box-shadow: inner 0 0 5px #888;
  float: left;
}

2 个答案:

答案 0 :(得分:7)

使用@media

@media all and (orientation:portrait) { … }
@media all and (orientation:landscape) { … }

当CSS可以使用时,不要滥用javascript。

orientation

答案 1 :(得分:3)

首先,您需要为时间表容器和iFrame分配ID。然后,使用下面的javascript来隐藏或显示它。我假设您的iFrame ID为'map',而您的时间表容器为'timetable'

<script type="text/javascript">
var timetable = document.getElementById('timetable');
var map = document.getElementById('map').

window.onorientationchange = function() {
    switch(window.orientation) {
        case 0:   // Portrait
        case 180: // Upside-down Portrait
            // Javascript to setup Portrait view
            timetable.style.display = 'none';
            map.style.display = 'block';
            break;
        case -90: // Landscape: turned 90 degrees counter-clockwise
        case 90:  // Landscape: turned 90 degrees clockwise
            // Javascript to steup Landscape view
            timetable.style.display = 'none';
            map.style.display = 'block';
            break;
    }
}
</script>