Я пытаюсь отобразить заголовок, только когда пользователь прокручивает вверх, для этого мне удалось заставить его работать после того, как пользователь начал прокручивать.
Однако заголовок отображается в событии времени загрузки из-за действия on="enter..."
усилителя. Я пытался найти способ скрыть его, основываясь на положении другого элемента, но я не могу заставить его работать с функциями, доступными на усилителе, которые кажутся только чем-то вроде height, width
и т. Д ... Что не то, что я хочу.
- Я хотел отобразить
header
на основе позиции Y элемента .spacer
.
Это то, что я смог придумать до сих пор:
<!doctype html>
<html ⚡>
<head>
<meta charset="utf-8">
<link rel="canonical" href="https://www.ampstart.com/templates/article.amp">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
<script async="" src="https://cdn.ampproject.org/v0.js"></script>
<script custom-element="amp-animation" src="https://cdn.ampproject.org/v0/amp-animation-0.1.js" async></script>
<script custom-element="amp-position-observer" src="https://cdn.ampproject.org/v0/amp-position-observer-0.1.js" async></script>
<style amp-custom>
body {
font-family: Helvetica, sans-serif;
}
main {
padding: 10px;
max-width: 412px;
margin: auto;
}
header {
width: 100%;
padding: 10px 0;
background: #fff;
top: 0;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.08);
position: relative;
transform: translateY(-100%);
}
header h1 {
font-size: 30px;
text-indent: 40px;
font-weight: bold;
margin: 0;
}
.spacer {
height: 100vh;
width: 100%;
background-image: -webkit-linear-gradient(#EEE 50%, white 50%);
background-image: linear-gradient(#EEE 50%, white 50%);
background-size: 100% 3em;
transform: translateY(-60px);
}
#marker {
position: relative;
/*top: 50px;*/
width: 0px;
height: 0px;
}
</style>
</head>
<body>
<header>
<h1>Show Header</h1>
</header>
<amp-animation id="hideAnim" layout="nodisplay">
<script type="application/json">
{
"easing": "ease-out",
"duration": "500ms",
"fill": "both",
"iterations": "1",
"direction": "alternate",
"animations": [{
"selector": "header",
"keyframes": [{
"transform": "translateY(-60px)"
},
{
"transform": "translateY(0)"
}
]
}
]
}
</script>
</amp-animation>
<amp-animation id="scrollToAnim"
layout="nodisplay">
<script type="application/json">
{
"easing": "ease-in",
"duration": "0",
"fill": "both",
"iterations": "1",
"direction": "alternate",
"animations": [{
"selector": ".spacer",
"keyframes": [{
"transform": "translateY(-60px)"
},
{
"transform": "translateY(0)"
}
]
}]
}
</script>
</amp-animation>
<main>
<!-- Invisible 0x0px marker div that sits 100px off the top -->
<div id="marker">
<amp-position-observer on="enter:hideAnim.start; exit:hideAnim.start, hideAnim.reverse, scrollToAnim.start;" layout="nodisplay">
</amp-position-observer>
</div>
<div id="default" class="spacer"></div>
<div class="spacer"></div>
</main>
</body>
</html>
Я не хочу видеть заголовок после события onload
. В настоящее время после загрузки страницы отображается следующее:
Как видите, заголовок наложен сзади.
- Я не хочу видеть заголовок во время загрузки.
Любая помощь или указание мне в правильном направлении очень ценится.