- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在构建一个具有整页水平和垂直滚动功能的小网站。查看 codepen 演示 here.演示有一个错误,“向左”和“向上”按钮无法正常工作。 “向右”和“向下”按钮工作正常。我只是把它们放在一起向您展示我在说什么(请原谅我的内联样式)。
首先,我需要合并 touchEvents
以使整个页面在移动设备上滚动。如果用户向左、向右、向下或向上滑动,页面应该相应地移动。我仍在学习 JS 的基础知识,我不知道从哪里开始。
其次,我对我是否在我的 JS 中使用最佳实践有一些疑问。一方面,我重复了很多次。另一方面,我很确定有一种更简单的方法可以解决我想要做的事情。如果您能看看我的代码并给我一些建议,我将不胜感激。谢谢!
最佳答案
需要在CSS中修改这两个:
#center.cslide-up {
top: 100vh;
}
#center.cslide-left {
left: 100vw;
}
至于手机,我建议尝试使用:
你可以通过编写一个函数并像这样调用它来减少代码行:(确保全局声明 panel2 变量)
btnL.addEventListener('click', function() {
swiper("left");
});
btnLBack.addEventListener('click', function() {
swiper("left");
});
function swiper(dir){
panelC.classList.toggle('cslide-'+dir);
if(dir=="up") panel2=panelU;
else if(dir=="right") panel2=panelR;
else if(dir=="left") panel2=panelL;
else if(dir=="down") panel2=panelD;
panel2.classList.toggle('slide-'+dir);
}
dir
,它决定了它必须向哪个方向移动。您可以将 dir
与 cslide- 连接起来以移动中心容器。并使用 if/else 条件来确定要移动哪个面板,并对其使用相同的想法。onClick ="swiper('direction');"
面板和按钮上的属性以仅在需要时触发它,而不是在脚本中定义事件监听器。var panel2;
var panelC = document.getElementById('center');
var panelU = document.getElementById('up');
var panelR = document.getElementById('right');
var panelD = document.getElementById('down');
var panelL = document.getElementById('left');
var btnU = document.getElementById('btn-up');
var btnR = document.getElementById('btn-right');
var btnD = document.getElementById('btn-down');
var btnL = document.getElementById('btn-left');
var btnUBack = document.getElementById('btn-up-back');
var btnRBack = document.getElementById('btn-right-back');
var btnDBack = document.getElementById('btn-down-back');
var btnLBack = document.getElementById('btn-left-back');
btnU.addEventListener('click', function() {
swiper("up");
});
btnUBack.addEventListener('click', function() {
swiper("up");
});
btnR.addEventListener('click', function() {
swiper("right");
});
btnRBack.addEventListener('click', function() {
swiper("right");
});
btnD.addEventListener('click', function() {
swiper("down");
});
btnDBack.addEventListener('click', function() {
swiper("down");
});
btnL.addEventListener('click', function() {
swiper("left");
});
btnLBack.addEventListener('click', function() {
swiper("left");
});
function swiper(dir){
panelC.classList.toggle('cslide-'+dir);
if(dir=="up") panel2=panelU;
else if(dir=="right") panel2=panelR;
else if(dir=="left") panel2=panelL;
else if(dir=="down") panel2=panelD;
panel2.classList.toggle('slide-'+dir);
}
* {
margin: 0;
padding: 0;
transition: 1.5s ease;
-webkit-transition: 1.5s ease;
overflow: hidden;
background: white;
}
.panel {
width: 100vw;
height: 100vh;
display: block;
position: absolute;
border: 1px solid blue;
}
.btn {
position: absolute;
padding: 16px;
cursor: pointer;
}
#center {
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
}
#center.cslide-up {
top: 100vh;
}
#center.cslide-left {
left: 100vw;
}
#center.cslide-right {
left: -100vw;
}
#center.cslide-down {
top: -100vh;
}
#up {
top: -100vh;
}
#up.slide-up {
top: 0;
}
#right {
right: -100vw;
}
#right.slide-right {
right: 0;
}
#down {
bottom: -100vh;
}
#down.slide-down {
bottom: 0;
}
#left {
left: -100vw
}
#left.slide-left {
left: 0;
}
<div class="panel" id="center">
<div class="btn" id="btn-up" style="text-align: center; width: 100%;">
up
</div>
<div class="btn" id="btn-right" style="right: 0; top: 50%;">
right
</div>
<div class="btn" id="btn-down" style="text-align: center; bottom: 0; width: 100%;">
down
</div>
<div class="btn" id="btn-left" style="top: 50%;">
left
</div>
</div>
<div class="panel" id="up">
<div class="btn" id="btn-up-back" style="bottom: 0; width: 100%; text-align: center;">
back
</div>
</div>
<div class="panel" id="right">
<div class="btn" id="btn-right-back" style="left: 0; top: 50%;">
back
</div>
</div>
<div class="panel" id="down">
<div class="btn" id="btn-down-back" style="top: 0; width: 100%; text-align: center;">
back
</div>
</div>
<div class="panel" id="left">
<div class="btn" id="btn-left-back" style="right: 0; top: 50%;">
back
</div>
</div>
关于javascript - 为导航添加 touchEvents,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47997930/
将 @HostListener 与明确键入为 TouchEvent 的事件参数一起使用,会导致 Firefox 崩溃并显示以下错误消息: ReferenceError: TouchEvent is n
我有一个 WPF 触摸应用程序,它运行得很好,除了一件事:捕获用户第一次触摸元素时触发的事件。 TouchDown 似乎不起作用,至少没有明显的延迟。当用户将手指滑到元素上时,TouchEnter 工
在我的应用程序中,用户可以开始录制,他们触摸的每个按钮都将保存到一个数组中 例如: "[{"time":1835,"elemId":"bass"},{"time":2553,"elemId":"hig
我正在构建一个具有整页水平和垂直滚动功能的小网站。查看 codepen 演示 here.演示有一个错误,“向左”和“向上”按钮无法正常工作。 “向右”和“向下”按钮工作正常。我只是把它们放在一起向您展
我有一个问题,如果我在字段外按下/触摸 fieldChanged()为具有焦点的字段触发事件。 我的 MainScreen 的布局很简单,就像这样: public class myMainScreen
TouchEvent.supported尝试创建TouchEvent以确定触摸支持。这适用于实际的触摸设备,但是在使用Chromium DevTools:“模拟触摸屏”时无济于事。 Chromium确
我有几个关于 ADB 的问题。 我尝试运行以下批处理文件: adb wait-for-devices adb shell sendevent /dev/input/event9 3 53 67 adb
我正在开发一个移动应用程序,并且在各种元素上有很多触摸事件。不幸的是,我无法在我的电脑浏览器上测试我的应用程序,因为它不支持 touchevents。如果我在 PC 上运行(当然是通过检查用户代理),
好的,所以在业余时间创建游戏时,我在尝试围绕以下场景编写代码时完全陷入困境: 我想捕获点击事件 (TouchEvent.ACTION_DOWN),然后以 500 毫秒为间隔,我想检查屏幕是否仍被按下,
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
您好,我正在开发一个应用程序,在该应用程序中,我在 Activity 中使用对话框。对话框将只显示一张图片,当用户触摸图片时,对话框应该关闭,启动对话框的 Activity 应该出现在前面。 对话框没
这应该很简单吧?! 因此,我有一个 Gameobject 作为按钮,我在扩展 SurfaceView 的 GamePanel 上引用它,如下所示: bby = new Buttons(BitmapFa
需要在桌面浏览器上使用移动设备模拟来自动化测试。 如果通过ChromeOptions()启用模拟,则触摸屏的模拟不起作用(按钮响应光标等)。这就是为什么我使用 java.awt.Robot (F12
我在尝试从 BB10 级联 API 获取触摸事件的目标时遇到问题。我有几个容器,一个在另一个下面,每个容器都分配了相同的 Touch 信号和插槽。一切都从 C++ 动态加载。因此,为了捕捉每个触摸事件
我有一个自定义 View ,其中我具有触摸事件功能(滑动等)。现在可能会发生这种情况,即在 ScrollableLayout 中使用此自定义 View 。那么问题是,当用户在我的自定义 View 内滑
我的布局看起来像这样: ViewPager 内部有许多 Fragment,每个 Fragment 都有一个 ListView。 现在我想这样做: 通过向下滚动,ListView 不得滚动。相反,必须转
我想在我的 Android 应用程序任何时候触摸屏幕时接收 TouchEvent。即使我的应用程序不在焦点中。 是否有我可以编写的通用事件监听器或 Intent 过滤器来实现此目的? 目标是编写系统范
我有一个 Angular 8 项目,我想在其中处理触摸事件。示例处理程序: @HostListener('touchend', ['$event']) onTouchend(event: TouchE
我正在为一个函数写一个测试 MyFuntion并调用另一个函数sendTouchEvent实例化一个TouchEvent。 function sendTouchEvent(element, event
我正在考虑一个易于使用的 android 可用性测试工具,它将允许用户在应用程序测试期间记录和记录相关信息。作为第一个结果,我希望每次用户与触摸屏交互时截取屏幕截图,其中显示了触摸事件的位置、持续时间
我是一名优秀的程序员,十分优秀!