#javascript #jquery #html #css
#javascript #jquery #HTML #css
Вопрос:
Итак, в настоящее время я работаю над одним экраном, на котором есть несколько content views
экранов, доступ к которым будет осуществляться с помощью кнопки сбоку от динамической области. Я нашел это репозиторий (https://github.com/ian-de-vries/Multi-Screen.js ), который достигает чего-то очень похожего на то, что я хочу, только он ожидает полного экрана, а не только определенной области. До сих пор я был очень близок к выполнению, как я надеялся, но последние пару часов поставили меня в тупик. В настоящее время существует две проблемы:
1) Относительные divs
используют % width
значение их содержимого div
, в то время как анимация divs
использует % width
целое screen
, делая анимацию divs
больше. Я думаю, что способ обойти это — вычислить fixed width
во время анимации, а затем удалить ее после анимации. Если вы установите a fixed width
в css
(что не подходит для сайта), анимация будет плавной и правильной width
во время анимации, но затем приведет к следующей проблеме.
2) Из-за оригинальной функциональности js
анимации идут прямо по центру, что снова усугубляет анимацию из-за offset content
.
Хотя я пытался решить обе эти проблемы, JS
это выше моих сил, несмотря на мой опыт работы с другими языками программирования. Я думал, что что-то понял при редактировании pre/post/animation_css
variables
, но я не мог получить то, чего хотел достичь. В любом случае, ниже приведен быстрый фиктивный сайт, который хорошо копирует код на реальном сайте и создает те же проблемы. Чтобы это заработало, поместите эти два файла в папку с multi-screen.js
файлом из репозитория.
<!DOCTYPE html>
<html>
<head>
<!-- Scrolling Pages -->
<!-- latest jQuery -->
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>
<!-- link the css and js scripts -->
<link href="style.css" type="text/css" rel="stylesheet"/>
<script type="text/javascript" src="multi-screen.js"></script>
<!-- run the plugin -->
<script type="text/javascript">$(document).ready(function() { MultiScreen.init(); });</script>
</head>
<body>
<div class="wrapper">
<div class="header">My Header</div>
<div class="contentarea">
<div style="float:left; width: 20%; background-color: red; height: 500pt;"></div>
<div style="width:80%; float: right; height: 600pt; background-color: grey;">
<div id="entry_screen" class="ms-container ms-default" style="">
<a href="javascript:void(0)" class="ms-nav-link" data-ms-target="screen2" data-ms-exit-animation="top" data-ms-enter-animation="bottom">go down</a><br>
<a href="javascript:void(0)" class="ms-nav-link" data-ms-target="screen3" data-ms-exit-animation="top" data-ms-enter-animation="bottom">go down 2</a>
</div>
<div id="screen2" class="ms-container" style="">
<a href="javascript:void(0)" class="ms-nav-link" data-ms-target="entry_screen" data-ms-exit-animation="bottom" data-ms-enter-animation="top">go up</a><br>
<a href="javascript:void(0)" class="ms-nav-link" data-ms-target="screen3" data-ms-exit-animation="top" data-ms-enter-animation="bottom">go down</a>
</div>
<div id="screen3" class="ms-container" style="">
<a href="javascript:void(0)" class="ms-nav-link" data-ms-target="screen2" data-ms-exit-animation="bottom" data-ms-enter-animation="top">go up</a><br>
<a href="javascript:void(0)" class="ms-nav-link" data-ms-target="entry_screen" data-ms-exit-animation="bottom" data-ms-enter-animation="top">go up 2</a>
</div>
</div>
</div><!---------- Close "content-area" --------->
</div><!---------- Close "wrapper" --------->
</body>
</html>
CSS:
.ms-container {
position: fixed;
z-index: 1;
display: none;
}
.ms-default {
position: absolute;
z-index: 2;
display: block;
}
#entry_screen {
height: 500pt;
width: 80%;
background-color: green;
left: 0;
margin-left: 20%;
}
#screen2 {
height: 500pt;
width: 80%;
//float: right;
background-color: blue;
//margin-right: 10%;
margin-left: 20%;
}
#screen3 {
height: 500pt;
width: 80%;
background-color: magenta;
margin-left: 20%;
}
.wrapper {
min-height: 100%;
padding: 0 10% 0 10%;
height: auto !important;
height: 100%;
margin: 0 auto 0pt;
}
.contentarea {
position: relative;
}
.header {
text-align: center;
width: 100%;
height: 50pt;
}
a {
color: white;
}
Ответ №1:
В итоге я использовал другую альтернативу. Тот, который я выбрал, был fullPage.js . Его можно использовать для желаемой функциональности, несмотря на то, что он предназначен для полноэкранных сайтов. Надеюсь, это поможет всем, кто хотел достичь чего-то подобного.