- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试设置一个视频库,当我将鼠标悬停在视频缩略图上时,我希望播放按钮从不透明度:.3 更改为不透明度:1。我试图通过使用带有toggleClass() 的jQuery 脚本来实现此目的。我尝试过使用具有不透明度的 animate() ,效果很好。但我想使用toggleClass() 方法。但是当我悬停时什么也没有发生。
//Fade in Play Button
$('.gallery-poster-play-button').hover(function() {
$('.gallery-poster-play-button img').toggleClass('toggle-opacity-play-button');
});
.video-list {
display: flex;
justify-content: flex-start;
list-style: none;
}
.video-list li {
margin-right: 10px;
transition: all .3s;
}
.video-list li:hover {
transform: scale(0.98);
cursor: pointer;
}
.video-list li img {
border-radius: 4px;
}
.video-list li a {
display: block;
padding: 5px;
text-decoration: none;
}
.play-button {
position: relative;
}
.gallery-poster-play-button {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
}
.gallery-poster-play-button img {
position: absolute;
left: 40%;
top: 35%;
vertical-align: middle;
opacity: .3;
}
.toggle-opacity-play-button {
opacity: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="video-gallery" class="video-list">
<li class="play-button" data-poster="../assets/videos/posters/video-poster-1.png" data-sub-html="video caption1" data-html="#video1">
<img src="../assets/videos/posters/video-poster-11.png" />
<div class="gallery-poster-play-button">
<img src="../assets/data/node_modules/lightgallery/dist/img/video-play.png" alt="">
</div>
</li>
<li class="play-button" data-poster="../assets/videos/posters/video-poster-2.png" data-sub-html="video caption2" data-html="#video2">
<img src="../assets/videos/posters/video-poster-22.png" />
<div class="gallery-poster-play-button">
<img src="../assets/data/node_modules/lightgallery/dist/img/video-play.png" alt="">
</div>
</li>
</ul>
最佳答案
问题是因为 .toggle-opacity-play-button
规则不够具体,无法覆盖 .gallery-poster-play 中的
。您需要增加特异性。您还需要使用 opacity
设置-按钮img$(this).find('img')
仅影响当前元素的子元素,如下所示:
.gallery-poster-play-button img.toggle-opacity-play-button {
opacity: 1;
}
//Fade in Play Button
$('.gallery-poster-play-button').hover(function() {
$(this).find('img').toggleClass('toggle-opacity-play-button');
});
.video-list {
display: flex;
justify-content: flex-start;
list-style: none;
}
.video-list li {
margin-right: 10px;
transition: all .3s;
}
.video-list li:hover {
transform: scale(0.98);
cursor: pointer;
}
.video-list li img {
border-radius: 4px;
}
.video-list li a {
display: block;
padding: 5px;
text-decoration: none;
}
.play-button {
position: relative;
}
.gallery-poster-play-button {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
}
.gallery-poster-play-button img {
position: absolute;
left: 40%;
top: 35%;
vertical-align: middle;
opacity: .3;
}
.gallery-poster-play-button img.toggle-opacity-play-button {
opacity: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="video-gallery" class="video-list">
<li class="play-button" data-poster="../assets/videos/posters/video-poster-1.png" data-sub-html="video caption1" data-html="#video1">
<img src="../assets/videos/posters/video-poster-11.png" />
<div class="gallery-poster-play-button">
<img src="../assets/data/node_modules/lightgallery/dist/img/video-play.png" alt="">
</div>
</li>
<li class="play-button" data-poster="../assets/videos/posters/video-poster-2.png" data-sub-html="video caption2" data-html="#video2">
<img src="../assets/videos/posters/video-poster-22.png" />
<div class="gallery-poster-play-button">
<img src="../assets/data/node_modules/lightgallery/dist/img/video-play.png" alt="">
</div>
</li>
</ul>
话虽如此,您根本不需要使用 JS,因为 CSS :hover
伪选择器在这里可以正常工作:
.video-list {
display: flex;
justify-content: flex-start;
list-style: none;
}
.video-list li {
margin-right: 10px;
transition: all .3s;
}
.video-list li:hover {
transform: scale(0.98);
cursor: pointer;
}
.video-list li img {
border-radius: 4px;
}
.video-list li a {
display: block;
padding: 5px;
text-decoration: none;
}
.play-button {
position: relative;
}
.gallery-poster-play-button {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
}
.gallery-poster-play-button img {
position: absolute;
left: 40%;
top: 35%;
vertical-align: middle;
opacity: .3;
}
.gallery-poster-play-button:hover img {
opacity: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="video-gallery" class="video-list">
<li class="play-button" data-poster="../assets/videos/posters/video-poster-1.png" data-sub-html="video caption1" data-html="#video1">
<img src="../assets/videos/posters/video-poster-11.png" />
<div class="gallery-poster-play-button">
<img src="../assets/data/node_modules/lightgallery/dist/img/video-play.png" alt="">
</div>
</li>
<li class="play-button" data-poster="../assets/videos/posters/video-poster-2.png" data-sub-html="video caption2" data-html="#video2">
<img src="../assets/videos/posters/video-poster-22.png" />
<div class="gallery-poster-play-button">
<img src="../assets/data/node_modules/lightgallery/dist/img/video-play.png" alt="">
</div>
</li>
</ul>
关于jquery - toggleClass() 对我不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43736118/
这是我真正想要发生的事情: 页面加载时先显示div当用户单击“向上箭头”时,箭头切换为“向下箭头”并隐藏 div。当用户单击“向下箭头”时,将显示该 div。 但是,虽然我确实让页面在加载页面时正确显
我在获取toggleClass的缓动属性时遇到问题上类。我已经在这个网站和其他网站上进行了搜索,但仍然无法让它按预期工作。类切换得很好,但不能顺利地缓入或缓出。 这是我的代码示例:DEMO 以下是我在
我有一些我想要的li,当我将鼠标悬停在每个li上时,仅针对每个下摆而不是全部切换类。 现在,当我将鼠标悬停在每个 li 上时,所有 LI 都会获得切换的类。这是 HTML 和 jQuery Fa
您好,我有一些名为 archbar2 的 div,我想使用 .each 循环更改它,但我在 javascript 方面没有任何反应。之前一切正常,因为警报效果很好。为什么我的类(class)没有改变?
我正在尝试设置一个视频库,当我将鼠标悬停在视频缩略图上时,我希望播放按钮从不透明度:.3 更改为不透明度:1。我试图通过使用带有toggleClass() 的jQuery 脚本来实现此目的。我尝试过使
我有两个容器,每个容器都有自己的标题和箭头图标来指示可以进行切换的方向。 加载时,容器 1 打开并带有向上箭头图标(表示内容可以折叠)。加载时,容器 2 用向下图标关闭(表示内容可以展开)。 当我单击
我之前曾问过类似的问题,其答案部分解决了我的问题。 但是现在我需要扩展代码。 当只有两个 div 时,此代码会切换 div 的可见性,但是当添加第三个 div 时,当我想单独显示每组 div 时,它会
我正在使用一些非常简单的 .toggleClass() 和 1 秒的动画。除了动画之外,一切正常。我觉得这真的很有趣。 看看我的fiddle ! $(function(){ $('#main_but
通过单击按钮,div 通过 css 属性更改其位置。但是,我希望 div 幻灯片能够从一个位置动画到另一个位置。 注意:#window 必须具有 width:100%; 和 height:100%;,
我是 jQuery 的新手,我在 Stack 上搜索过类似的问题,但没有找到这个特定的(而且我确信很常见)问题。 我有一个具有默认类别的项目列表。我想使用toggleClass 添加翻转效果。问题是所
我有这个问题,正如标题所说,我不明白为什么toggleClass()不起作用,相反,如果我使用removeClass()或addClass()一切正常。 $('div').on('click', '.
我想要toggle a class基于某些条件我必须根据已处理元素的 ID 计算: $(".centre li").toggleClass("highlight", someFunction(x));
我在使用 jQuery 的 toggleClass() 和 CSS 来显示和隐藏表单的搜索表单上进行简单的显示/隐藏。这很简单,比如: $('#site-search-toggle').click(f
大家好,我有这个代码 panelPlusK.append('click To change the style'); $('#foo').click(function() { $('.agar
我在 jQuery 中遇到了 toggleClass 的问题。 代码如下: $(".guzik").click(function() { $("#third").toggleClass('.p
所以我遇到的问题很简单。我有一个跨度 Show More使用此元素,我正在扩展一个部分以显示更多文本。 我遇到的问题是我想在页面的其他部分使用此功能。 这是我用来激活 toggleClass 的 jq
我让我的链接看起来像标签,这实际上是一个过滤器。这是有问题的部分: Review
所以基本上我想做的是在单击复选框时创建一个简单的 toggleClass,但问题是它删除了该类,但没有添加回该类。 这是一个示例代码: $('#task-checkbox').click(functi
我的页面上有 4 个 div 和一个按钮。如果您单击一个 div,它会切换类。 单击按钮时,我希望所有已突出显示的 div 保持突出显示状态,但我不希望在单击按钮后有更多的 div 切换类。 有办法吗
所以我得到了一些导航,其中包含 float 在传统 anchor 旁边的表单复选框。如果未选中相应的复选框,我想添加一个类(基本上将设置样式以使 anchor 标记变暗)。系统地执行此操作的最佳方法是
我是一名优秀的程序员,十分优秀!