- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我已经更改了 w3schools 的翻转卡元素,并添加了 javascript,如果它们位于视口(viewport)中,并且用户可以理解卡后面有文本,它们将旋转 60px。它在滚动上运行良好,但现在我发现悬停效果不起作用。你能帮助我吗?
https://www.w3schools.com/howto/howto_css_flip_card.asp
https://jsfiddle.net/mqbkzLy2/
var x = 0;
$.fn.isInViewport = function() {
var elementTop = $(this).offset().top;
var elementBottom = elementTop + $(this).outerHeight();
var viewportTop = $(window).scrollTop();
var viewportBottom = viewportTop + $(window).height();
return elementBottom > viewportTop && elementTop < viewportBottom;
};
$(window).scroll(function() {
if ($(".flip-card-inner").isInViewport() && x == 0) {
setTimeout(function() {
$(".flip-card-inner").css('transform', 'rotateY(80deg)');
}, 400);
setTimeout(function() {
$(".flip-card-inner").css('transform', 'rotateY(0)');
}, 800);
x++;
console.log(x);
console.log("in");
}
if (!$(".flip-card-inner").isInViewport() && x != 0) {
x = 0;
console.log('No success.');
console.log(x);
console.log("out");
}
});
body {
font-family: Arial, Helvetica, sans-serif;
}
.flip-card {
background-color: transparent;
width: 300px;
height: 300px;
perspective: 1000px;
}
.flip-card-inner {
position: relative;
width: 100%;
height: 100%;
text-align: center;
transition: transform 0.6s;
transform-style: preserve-3d;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
}
.flip-card:hover .flip-card-inner {
transform: rotateY(180deg);
}
.flip-card-front,
.flip-card-back {
position: absolute;
width: 100%;
height: 100%;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
}
.flip-card-front {
background-color: #bbb;
color: black;
}
.flip-card-back {
background-color: #2980b9;
color: white;
transform: rotateY(180deg);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div style="height:120vh;background-color:yellow;"></div>
<h1>Card Flip with Text</h1>
<h3>Hover over the image below:</h3>
<div class="flip-card">
<div class="flip-card-inner">
<div class="flip-card-front">
<img src="https://upload.wikimedia.org/wikipedia/commons/d/de/Windows_live_square.JPG" alt="Avatar" style="width:300px;height:300px;">
</div>
<div class="flip-card-back">
<h1>John Doe</h1>
<p>Architect & Engineer</p>
<p>We love that guy</p>
</div>
</div>
</div>
最佳答案
that they will rotate 60px if they are in viewport with that user can understand that there is a textt behind card.
不要为此使用滚动事件监听器,请使用 Intersection Observer (IO)为了这。
IO就是为了解决此类问题而设计的。使用 IO,只要 HTML 元素与另一个元素(或与视口(viewport))相交,您就可以使用react
Check this page ,它向您展示了如何在元素进入视口(viewport)后为其设置动画(一直向下滚动)。当然,您可以使用任何您想要的动画,然后由 CSS 处理。这只是一个非常明显的例子。
简短回顾一下要让 IO 工作需要做什么:
首先你必须创建一个新的观察者:
var options = {
rootMargin: '0px',
threshold: 1.0
}
var observer = new IntersectionObserver(callback, options);
这里我们定义,一旦您的目标元素在视口(viewport)中 100% 可见(阈值为 1),您的回调函数就会被执行。这里你可以定义另一个百分比,0.5 意味着当你的元素有 50% 可见时该函数就会被执行。
然后你必须定义要观看的元素
var target = document.querySelector('.flip-card');
observer.observe(target);
最后,您需要通过定义回调函数来指定元素在视口(viewport)中可见后应发生的情况:
var callback = function(entries, observer) {
entries.forEach(entry => {
// Each entry describes an intersection change for one observed
// here you animate another element and do whatever you like
});
};
如果您需要支持旧版浏览器,请使用 official polyfill from w3c.
如果您不想在元素再次滚动到 View 中时再次触发动画,那么您 can also unobserve an element一旦它被动画化。
关于javascript - 悬停效果不适用于变换 : rotateY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60704440/
我可以 transform: rotateY 一个 div 来对抗他父级的 transform: rotateY 吗? 例如: 如果我有一个带有rotateY(-45deg)的父div,他的所有 ch
$("#div").css("transform", "rotateY("+ '+='+90 +"deg)"); 我想增加rotateY,但我的语法不好,可以修复吗? 最佳答案 最简单的方法是将当前旋
http://jsfiddle.net/DaE3V/ 刚开始学习css动画... 我想做一个 transform: rotateY(180deg); 但我不只是旋转,而是想翻转它,有点像书的一页...
您好,我已经更改了 w3schools 的翻转卡元素,并添加了 javascript,如果它们位于视口(viewport)中,并且用户可以理解卡后面有文本,它们将旋转 60px。它在滚动上运行良好,但
一定有某种属性影响我的代码,我无法弄清楚,因为当我制作 JSfiddle 时,一切都很好。 问题:我正在尝试对由 :hover 伪元素触发的三个 div 进行 Y 轴转换。出于某种原因,div 不会停
代码: http://jsfiddle.net/qhoc/8gg7gkqv/ 我希望红色表面平放在灰色表面之上。但是当我旋转 modifier1 时,您可以看到两个表面之间的距离(标记为??)。如何摆
我想在 transformY(-180deg) 动画期间将 div.box 的左边缘保持在同一位置。我不明白为什么它会移动。这是代码: transform-origin: 0% 0%; transfo
当我悬停一次时,过渡是正确的,但第二次时,过渡变得很奇怪,好像透视:800px 在过渡发生后开始工作。还请告诉我如何设置围绕除中心以外的边缘的旋转。我知道 transform-origin 但不知道
这是我的代码的 fiddle - https://jsfiddle.net/agon024/o9sa7nyh/5/ :hover{ transform: perspective(800px) ro
请试试这个DEMO 我遇到了无法使用背面链接的问题。 有人能帮忙吗? 它适用于 FF,但在 Crome 中不起作用。 这是我从 http://www.asuum.com 得到想法的页面 $("a.im
我是 CSS3 的新手,为了学习它,我正在使用 CSS3d transform: rotateY 属性轻松地将按钮旋转 180 度 transition。但由于 180 翻转,单词显示为相反。可以做什
我使用 css 3D-transform rotateY 翻转带有 css transition 的 div。我希望图像翻转一定次数:当转换结束时,我再次触发它直到达到某个计数器值。 我想做什么:当
我想旋转图像,然后看到了这个视频 https://www.youtube.com/watch?v=nD8xqlh6Esk这提供了一种非常简单的方法来在点击时旋转一个 div。我认为这是在页面加载时使用
我正在研究 jQuery 和 CSS3 动画,发现发生了一些奇怪的事情。在我的笔上,当您将鼠标悬停在卡片上或专注于 CCV 字段时,当卡片翻转时,颜色需要一秒钟才能透出。它几乎看起来像它的加载。有人知
我正在寻找一种简单的方法来获取对象并转换其 rotateY 属性,而无需将其设置为预设过渡动画。 This will help me complete this slide show (只能在 Chr
Chrome 版本 39.0.2148.0 我正在尝试在每侧使用 2 张不同的图片来实现翻转图像效果。最初的想法源于http://themestrong.com/demo/argo_wp/ (我也看到
来自 MDN 的一些文本 rotateY() 创建的旋转量由 .如果为正,则运动将顺时针;如果为负数,则为逆时针方向。 const rotate1 = [ { transform: `ro
我正在尝试使用 CSS 过渡使图像旋转。我有一个 transition: 2s transform linear; 和 transform: rotateY(720deg);。 您可以在这个 JSFi
我旋转了一个带有文本的元素并对其进行了透视 3D 处理。文字真的是低保真度。有什么办法可以改善吗? 非常简单的示例代码: This is text http://codepen.io/an
在我的网页上有一个 div。在那个 div 上,我有模拟 div 被翻转(翻转)的“动画”。 Some content 我用 jQuery plugin tra
我是一名优秀的程序员,十分优秀!