if/else 语句在 Safari 中不起作用?(JQuery) [英] if/else Statement Not Working in Safari? (JQuery)
问题描述
我应用了一个 if/else 语句(在一个更大的函数中),它在 Safari 浏览器中似乎根本无法处理..addClass()
和 .removeClass()
操作在提示时甚至不适用.
这是所引用的 if/else 语句以及相应的 CSS 的简短示例:
$(document).ready(function() {var $window = $(window);var div2 = $('#toggle-element');var div1 = $('#container');$window.on('scroll', function() {if (scrollTop >= (div1_top - window_top_to_div2) && (scrollTop + window.innerHeight) <= (div1_bottom + window_top_to_div2)) {div2.addClass('show');} 别的 {div2.removeClass('show');}});});
#toggle-element {高度:50px;文本对齐:居中;保证金:自动;顶部:0;底部:0;正确:50%;左:50%;可见性:隐藏;不透明度:0;-webkit-transition:不透明度500ms,可见度500ms;-o-transition:不透明度500ms,可见度500ms;过渡:不透明度 500 毫秒,可见度 500 毫秒;z-索引:1;位置:固定;最大宽度:1000px;宽度:100%;-webkit-transform: translateX(-50%);-ms-transform: translateX(-50%);变换:translateX(-50%);}#toggle-element.show {可见性:可见;不透明度:1;}#容器 {宽度:60%;高度:2000px;边距:0 自动;位置:相对;背景:蓝色;显示:块;文本对齐:居中;颜色:#fff;}
更新:这是利用上述示例的完整片段:
$(document).ready(function() {var $window = $(window);var div2 = $('#toggle-element');var div1 = $('#container2');$window.on('scroll', function() {var scrollTop = document.documentElement.scrollTop;var viewport_height = $window.height();var scrollTop_bottom = scrollTop + viewport_height;var window_top_to_div2 = ($window.height() - div2.height())/2;var div1_top = div1.offset().top;var div1_height = div1.height();var div1_bottom = div1_top + div1_height;if (scrollTop >= (div1_top - window_top_to_div2) && (scrollTop + window.innerHeight) <= (div1_bottom + window_top_to_div2)) {div2.addClass('show');} 别的 {div2.removeClass('show');}});});
#toggle-element {高度:50px;文本对齐:居中;保证金:自动;顶部:0;底部:0;正确:50%;左:50%;可见性:隐藏;不透明度:0;-webkit-transition:不透明度500ms,可见度500ms;-o-transition:不透明度500ms,可见度500ms;过渡:不透明度 500 毫秒,可见度 500 毫秒;z-索引:1;位置:固定;最大宽度:1000px;宽度:100%;-webkit-transform: translateX(-50%);-ms-transform: translateX(-50%);变换:translateX(-50%);}#toggle-element.show {可见性:可见;不透明度:1;}#toggle-element .wrap {位置:相对;高度:50px;宽度:80%;边距:0 自动;}#toggle-element .navbtns {显示:表格单元格;宽度:50px;高度:50px;位置:绝对;顶部:0;背景:透明;}#toggle-element .navbtns svg {填充:蓝色;不透明度:0.8;溢出:可见;will-change:不透明度;-webkit-transition:所有 0.5 秒轻松;-o-transition:所有 0.5 秒的缓和;过渡:全0.5s缓动;}#toggle-element .navbtns svg:hover {不透明度:1;}#toggle-element .prev {右:0;边距右:-25px;}#toggle-element .next {左:0;左边距:-25px;}#容器1,#container3 {宽度:60%;高度:1000px;背景:黄色;边距:0 自动;显示:块;文本对齐:居中;}#container2 {宽度:60%;高度:2000px;边距:0 自动;位置:相对;背景:蓝色;显示:块;文本对齐:居中;颜色:#fff;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><div id="切换元素"><div class="wrap"><a href="#" class="navbtns prev" title="转到下一页"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"><path d="M25,50A25,25,0,1,0,0,25,25,25,0,0,0,25,50ZM25,2A23,23,0,1,1,2,25,23,23,0,0,1,25,2Zm-3,9V39L32,25Z"style="fill-rule:evenodd"/></svg></a><a href="#" class="navbtns next" title="转到上一页"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"><path d="M25,50A25,25,0,1,1,50,25,25,25,0,0,1,25,50ZM25,2A23,23,0,1,0,48,25,23,23,0,0,0,25,2Zm3,9V39L18,25Z" 样式="fill-rule:evenodd"/></svg></a>
<div id="container1">向下滚动到 <b>#container2</b>
<div id="container2">这是<b>#container2</b>
<div id="container3">向上滚动到 <b>#container2</b>