Показать сообщение отдельно
  #1 (permalink)  
Старый 15.11.2014, 04:56
Новичок на форуме
Отправить личное сообщение для learner Посмотреть профиль Найти все сообщения от learner
 
Регистрация: 15.11.2014
Сообщений: 9

Ширина блока равна высоте экрана разных девайсов
Я только собираюсь учить JS и практически ничего не знаю по этой теме, прошу помочь в одном вопросе
Его суть, - существует некий nav:
HTML:
<div id="page">
	<div id="wrap">
		<nav id="nav">
			<ul> 
				<li><a></a></li>
				<li><a></a></li> 
				<li><a></a></li> 
				<li><a></a></li> 
				<li><a></a></li>
			</ul>
		</nav>
	</div>
</div>

CSS:
Код:
#page { 
      max-width: 100em;  /*1em=10px*/
      margin: 0 auto;
}

#wrap { 
      width: 92%;
      margin: 0 auto;;
}

#nav {
      height: 5.5em;
}
        
#nav li {
      width: 20%;
      height: 5.5em;
      float: left;
}
При ширине экрана в 320рх я его переворачиваю:
Код:
@media (max-width: 320px) {
	#nav {
		height: 20px;
		position: fixed;
		top: 0;
		left: 0;
		transform-origin: 0 0;
		transform: translateX(20px) rotate(90deg);
	}

	#nav li {
		height: 20px;
	}
}
Задача стояла, как сделать nav резиновым по отношению к высоте окна, можно написать #nav{width: 100vh;}, но единицы vw и vh не кроссбраузерное решение.
Нашёл здесь на форуме такой ответ на вопрос, как присвоить высоте div значение window.innerHeight.
<script type="text/javascript">
    onload = function() {
        var div  = document.getElementById("nav");
        var html = document.documentElement;
        div.style.height = html.clientHeight + "px";
              
        onresize = function() {
            div.style.height = html.clientHeight + "px";
        };
    }
</script>

Переписал скрипт вот так:
<script type="text/javascript">
    onload = function() {
            var div  = document.getElementById("nav");
            var html = document.documentElement;
            div.style.width = html.clientHeight + "px";
              
            onresize = function() {
                div.style.width = html.clientHeight + "px";
            };
       }
</script>

И вот так:
<script type="text/javascript">
        onload = function() {
            var div  = document.getElementById("nav");
            var html = document.documentElement;
            div.style.width = window.innerHeight + "px";
              
            onresize = function() {
                div.style.width = window.innerHeight + "px";
            };
       }
</script>

И оба моих варианта работают во всех браузерах FF, Chrome, Safari, Opera, IE9. Но есть два вопроса, во-первых, как сделать так, чтобы скрипт срабатывал только при медиа-запросе и только при ширине окна 320px и меньше и во-вторых, какой из двух моих вариантов скрипта надёжней, если так можно выразиться. Надеюсь на ответ.

Последний раз редактировалось learner, 16.11.2014 в 01:00.
Ответить с цитированием