gpt4 book ai didi

polymer - 如果 core-scroll-header-panel 压缩,如何隐藏标题元素?

转载 作者:行者123 更新时间:2023-12-02 15:26:46 25 4
gpt4 key购买 nike

我的页面看起来非常类似于:https://www.polymer-project.org/components/core-scroll-header-panel/demo.html 。唯一的区别是我的页面设置了 keepCondensedHeader 标志。

我现在想做的(如果可能的话):如果标题是压缩的,则隐藏标题(或压缩标题中显示的任何一个元素)。

任何指示将不胜感激。

最佳答案

实际上,演示文件中的 JavaScript 很好地提示了如何轻松完成此类操作。

我在这里复制了整个 html 和 js,并添加了两行,以便在标题压缩时隐藏标题。

为什么我将 128 m 作为 translate Y 的原因是因为最大标题高度是192 d.height 压缩高度为 64 d.压缩高度。当 header 压缩时,它在 y 轴上移动 128 m 的距离 (192 - 64 d.height - d.condensedHeight)。

<body unresolved>
<core-scroll-header-panel condenses keepcondensedheader>
<core-toolbar class="tall">
<core-icon-button icon="arrow-back"></core-icon-button>
<div flex></div>
<core-icon-button icon="search"></core-icon-button>
<core-icon-button icon="more-vert"></core-icon-button>
<div class="bottom indent title">Title</div>
</core-toolbar>
<div class="content">
<sample-content size="100"></sample-content>
</div>
</core-scroll-header-panel>
<script>
// custom transformation: scale header's title
var titleStyle = document.querySelector('.title').style;
// added code - here we need to obtain the title div as well
var title = document.querySelector('.title');

addEventListener('core-header-transform', function (e) {
var d = e.detail;
var m = d.height - d.condensedHeight;
var scale = Math.max(0.75, (m - d.y) / (m / 0.25) + 0.75);
titleStyle.transform = titleStyle.webkitTransform =
'scale(' + scale + ') translateZ(0)';

// added code - here we hide the title when the header is condensed
title.hidden = d.y == m;
});

</script>
</body>

希望这有帮助!

<小时/>

更新

实际上,现在我想,对 titleopacity 进行动画处理可能比显示/隐藏它更好。加上 core-scroll-header-panel 的平滑滚动和淡入淡出背景,它将提供更好的用户体验!

感谢 core-animation 它非常简单。

首先我们需要包含此引用。

<link rel="import" href="../core-animation/core-animation.html">

然后定义淡入和淡出动画。

<body unresolved>
<!--define the opacity animations-->
<core-animation id="out" fill="forwards" duration="400">
<core-animation-keyframe>
<core-animation-prop name="opacity" value="1"></core-animation-prop>
</core-animation-keyframe>
<core-animation-keyframe>
<core-animation-prop name="opacity" value="0"></core-animation-prop>
</core-animation-keyframe>
</core-animation>
<core-animation id="in" fill="forwards" duration="400">
<core-animation-keyframe>
<core-animation-prop name="opacity" value="0"></core-animation-prop>
</core-animation-keyframe>
<core-animation-keyframe>
<core-animation-prop name="opacity" value="1"></core-animation-prop>
</core-animation-keyframe>
</core-animation>

最后,我们在 core-header-transform 处理程序中调用它们。

// animation variables
var fadeIn, fadeOut;
// create a local bool to ensure the 'fade in' animation is only called once
var condensed = false;

// retrieve the animations and set their targets
addEventListener('polymer-ready', function (e) {
fadeOut = document.getElementById('out');
fadeOut.target = title;

fadeIn = document.getElementById('in');
fadeIn.target = title;
});

addEventListener('core-header-transform', function (e) {
var d = e.detail;
var m = d.height - d.condensedHeight;
var scale = Math.max(0.75, (m - d.y) / (m / 0.25) + 0.75);
titleStyle.transform = titleStyle.webkitTransform =
'scale(' + scale + ') translateZ(0)';

// when the header is condensed, we fade it out
if (d.y == m) {
condensed = true;
fadeOut.play();
}
// otherwise, we fade it back in
else {
if (condensed) {
condensed = false;
fadeIn.play();
}
}
});

关于polymer - 如果 core-scroll-header-panel 压缩,如何隐藏标题元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27581309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com