- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个画廊,它在除 IE11 之外的所有浏览器中都运行良好(震惊!)。
主要问题是,在 IE11 中,当您第一次单击图库元素时,它不会从数据属性中插入图像 url。如果您随后去加载下一张图片(使用灯箱导航或画廊缩略图),img src 将更新并且工作正常。
我注意到的另一个问题仅存在于 IE11 中。gallery-navigation
计数器导航圆圈不会触发任何其他图像的加载。
我一直在环顾四周,发现 IE11 可能存在前置等问题,但我尝试更改此问题以及我在网上看到的其他一些解决方案,但我无法让画廊在 IE11 中正常工作
(function() {
var galleryLightbox = document.querySelector('.gallery-lightbox');
var galleryItems = document.querySelectorAll('.gallery-item');
var closeButton = document.querySelector('.gallery-close');
var nextButton = document.querySelector('.gallery-next');
var previousButton = document.querySelector('.gallery-previous');
var galleryItemIndex = 0;
function createGalleryNavigation() {
var navigationItemHtml = '<li class="gallery-navigation-item"><a class="gallery-navigation-button"></a></li>';
var navigation = document.querySelector('.gallery-navigation');
for (var i = 0; i < galleryItems.length; i++) {
navigation.innerHTML += navigationItemHtml;
}
}
createGalleryNavigation();
var navItems = document.querySelectorAll('.gallery-navigation-button');
function showGallery() {
$('.gallery-lightbox').delay(200).fadeIn(300);
}
function hideGallery() {
$('.gallery-lightbox').fadeOut(300);
}
function updateNavigation() {
for (var i = 0; i < navItems.length; i++) {
navItems[i].classList.remove('active');
}
navItems[galleryItemIndex].classList.add('active');
}
function showImage() {
var imageUrl = galleryItems[galleryItemIndex].getAttribute('gallery-full-image');
var img = document.createElement('img');
img.src = imageUrl;
var galleryImage = document.querySelector('.gallery-image-top');
var oldImage = galleryImage.querySelector('img');
if (oldImage) {
galleryImage.removeChild(oldImage);
}
$('.gallery-image-top').hide().prepend(img).addClass('active').fadeIn(400);
$('.gallery-caption p').html($('.gallery-figure img', galleryItems[galleryItemIndex]).prop('alt'));
updateNavigation();
}
function getItemIndex(items, item) {
return Array.from(items).indexOf(item);
}
function onGalleryItemClick(event) {
var clickedGalleryItem = event.currentTarget;
showGallery();
galleryItemIndex = getItemIndex(galleryItems, clickedGalleryItem);
showImage();
}
for (var i = 0; i < galleryItems.length; i++) {
galleryItems[i].addEventListener('click', onGalleryItemClick);
}
function onCloseButtonClick() {
hideGallery();
}
closeButton.addEventListener('click', onCloseButtonClick);
function onNextButtonClick() {
galleryItemIndex++;
if (galleryItemIndex === galleryItems.length) {
galleryItemIndex = 0;
}
showImage();
}
nextButton.addEventListener('click', onNextButtonClick);
function onPreviousButtonClick() {
galleryItemIndex--;
if (galleryItemIndex === -1) {
galleryItemIndex = galleryItems.length - 1;
}
showImage();
}
previousButton.addEventListener('click', onPreviousButtonClick);
function onNavigationButtonClick(event) {
var clickedNavigationItem = event.currentTarget;
galleryItemIndex = getItemIndex(navItems, clickedNavigationItem);
showImage();
}
for (var i = 0; i < navItems.length; i++) {
navItems[i].addEventListener('click', onNavigationButtonClick);
}
function onKeyUp(event) {
if (event.which === 27) {
//Escape key up
hideGallery();
} else if (event.which === 39) {
//Arrow right key up
onNextButtonClick();
} else if (event.which === 37) {
//Arrow left key up
onPreviousButtonClick();
}
}
document.body.addEventListener('keyup', onKeyUp);
}());
#gallery-album {
width: 100%;
margin-bottom: 87px;
}
.gallery-lightbox {
display: none;
position: fixed;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
z-index: 9999999;
}
.gallery-content {
width: 100vw;
height: 100vh;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.8);
}
.gallery-inner {
display: flex;
width: 100%;
height: 100%;
align-items: center;
justify-content: center;
}
.gallery-image {
position: relative;
margin: 0 10%;
display: inline-block;
}
.gallery-image img {
max-height: 70vh;
max-width: 100%;
}
.gallery-image-top {
position: relative;
}
.gallery-navigation-wrapper {
display: flex;
position: relative;
}
.gallery-caption {
background: white;
width: 100%;
padding: 35px 50px 55px;
flex-grow: 1;
width: 0;
}
.gallery-caption p {
font-size: 12px;
line-height: 16px;
color: black;
margin: 0;
padding: 0;
}
.gallery-close {
width: 40px;
height: 40px;
border-radius: 100%;
background-color: rgba(255, 255, 255, 0.8);
display: flex;
justify-content: center;
align-items: center;
position: absolute;
top: 20px;
right: 20px;
border: none;
outline: 0;
transform: rotate(0deg);
transition-duration: 0.3s;
transition-property: all;
cursor: pointer;
}
.gallery-close:hover,
.gallery-close:active,
.gallery-close:focus {
outline: 0;
transform: rotate(360deg);
background-color: rgba(255, 255, 255, 1);
}
.gallery-close:after,
.gallery-close:before {
content: '';
width: 20px;
height: 2px;
background-color: $monza;
position: absolute;
}
.gallery-close:before {
transform: rotate(45deg);
}
.gallery-close:after {
transform: rotate(-45deg);
}
.gallery-control {
width: 42px;
height: 42px;
border-radius: 100%;
background-color: rgba(255, 255, 255, 0.8);
border: none;
outline: 0;
cursor: pointer;
position: absolute;
top: 50%;
transform: translate(0, -50%);
outline: 0;
transition-duration: 0.3s;
transition-property: all;
}
.gallery-control:hover,
.gallery-control:active,
.gallery-control:focus {
outline: 0;
background-color: rgba(255, 255, 255, 1);
}
.gallery-control:after {
content: '';
display: inline-block;
position: absolute;
background-image: url(../img/arrow.png);
background-size: 12px;
width: 12px;
height: 21px;
top: 50%;
left: 0;
right: 0;
margin: 0 auto;
transform: translate(0, -50%);
}
.gallery-previous {
left: 20px;
}
.gallery-next {
right: 20px;
}
.gallery-next:after {
transform: translate(0, -50%) rotate(180deg);
}
.gallery-navigation {
list-style: none;
padding: 0;
margin: 0;
position: absolute;
display: flex;
top: -30px;
left: 50%;
transform: translate(-50%);
}
.gallery-navigation-button {
display: block;
width: 10px;
height: 10px;
border: 0;
background-color: rgba(0, 0, 0, 0.7);
border-radius: 50%;
margin: 0 2px;
cursor: pointer;
}
.gallery-navigation-button.active {
background-color: red;
}
.gallery-list {
display: flex;
flex-wrap: wrap;
list-style: none;
margin: 0 -4px;
padding: 0;
}
.gallery-item {
position: relative;
display: block;
height: 224px;
flex-grow: 1;
margin: 0 2px 4px;
}
.gallery-item img {
height: 224px;
object-fit: cover;
max-width: 100%;
min-width: 100%;
vertical-align: bottom;
}
.gallery-figure {
display: block;
width: auto;
height: auto;
cursor: pointer;
}
.position-relative {
position: relative !important;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="gallery-album">
<ol class="gallery-list">
<li class="gallery-item" gallery-full-image="https://images.unsplash.com/photo-1556911073-38141963c9e0?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80">
<div class="gallery-figure">
<img src="https://placekitten.com/g/400/224" alt="caption here">
</div>
</li>
<li class="gallery-item" gallery-full-image="https://images.unsplash.com/photo-1564399331650-bbfe2aac0a04?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1268&q=80">
<div class="gallery-figure">
<img src="https://placekitten.com/g/400/224" alt="caption here">
</div>
</li>
<li class="gallery-item" gallery-full-image="https://images.unsplash.com/photo-1564399328369-228e628d003c?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=800&q=80">
<div class="gallery-figure">
<img src="https://placekitten.com/g/400/224" alt="caption here">
</div>
</li>
<li class="gallery-item" gallery-full-image="https://images.unsplash.com/photo-1560871402-467c8633acba?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80">
<div class="gallery-figure">
<img src="https://placekitten.com/g/400/224" alt="caption here">
</div>
</li>
<li class="gallery-item" gallery-full-image="https://images.unsplash.com/photo-1564408512035-6597e7afd94e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80">
<div class="gallery-figure">
<img src="https://placekitten.com/g/400/224" alt="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et ">
</div>
</li>
<li class="gallery-item" gallery-full-image="https://images.unsplash.com/photo-1564415637254-92c66292cd64?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=675&q=80">
<div class="gallery-figure">
<img src="https://placekitten.com/g/400/224" alt="caption here">
</div>
</li>
<li class="gallery-item" gallery-full-image="https://images.unsplash.com/photo-1564419795513-ef6e58aa3c55?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=634&q=80">
<div class="gallery-figure">
<img src="https://placekitten.com/g/400/224" alt="caption here">
</div>
</li>
<li class="gallery-item" gallery-full-image="https://images.unsplash.com/photo-1564661610655-e7a2a110196a?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1355&q=80">
<div class="gallery-figure">
<img src="https://placekitten.com/g/400/224" alt="caption here">
</div>
</li>
<li class="gallery-item" gallery-full-image="https://images.unsplash.com/photo-1564537392312-9b83755aae5d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80">
<div class="gallery-figure">
<img src="https://placekitten.com/g/400/224" alt="caption here">
</div>
</li>
<li class="gallery-item" gallery-full-image="https://images.unsplash.com/photo-1564506667932-789f87dfaafe?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=701&q=80">
<div class="gallery-figure">
<img src="https://placekitten.com/g/400/224" alt="caption here">
</div>
</li>
<li class="gallery-item" gallery-full-image="https://images.unsplash.com/photo-1564507004663-b6dfb3c824d5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1267&q=80">
<div class="gallery-figure">
<img src="https://placekitten.com/g/400/224" alt="caption here">
</div>
</li>
<li class="gallery-item" gallery-full-image="https://images.unsplash.com/photo-1564505971742-18360fa287eb?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1489&q=80">
<div class="gallery-figure">
<img src="https://placekitten.com/g/400/224" alt="caption here">
</div>
</li>
</ol>
<div class="gallery-lightbox">
<div class="gallery-content">
<div class="gallery-inner">
<div class="gallery-image">
<div class="gallery-image-top position-relative">
<button class="gallery-close"></button>
<button class="gallery-control gallery-previous"></button>
<button class="gallery-control gallery-next"></button>
</div>
<div class="gallery-navigation-wrapper position-relative">
<ol class="gallery-navigation"></ol>
<div class="gallery-caption">
<p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
这是一个JSFiddle画廊的。
最佳答案
我尝试使用您的代码创建示例,它会向我显示此错误:
Error: Object doesn't support property or method 'from'
添加以下polyfill后,代码在IE浏览器上运行良好:
// Production steps of ECMA-262, Edition 6, 22.1.2.1
if (!Array.from) {
Array.from = (function () {
var toStr = Object.prototype.toString;
var isCallable = function (fn) {
return typeof fn === 'function' || toStr.call(fn) === '[object Function]';
};
var toInteger = function (value) {
var number = Number(value);
if (isNaN(number)) { return 0; }
if (number === 0 || !isFinite(number)) { return number; }
return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));
};
var maxSafeInteger = Math.pow(2, 53) - 1;
var toLength = function (value) {
var len = toInteger(value);
return Math.min(Math.max(len, 0), maxSafeInteger);
};
// The length property of the from method is 1.
return function from(arrayLike/*, mapFn, thisArg */) {
// 1. Let C be the this value.
var C = this;
// 2. Let items be ToObject(arrayLike).
var items = Object(arrayLike);
// 3. ReturnIfAbrupt(items).
if (arrayLike == null) {
throw new TypeError('Array.from requires an array-like object - not null or undefined');
}
// 4. If mapfn is undefined, then let mapping be false.
var mapFn = arguments.length > 1 ? arguments[1] : void undefined;
var T;
if (typeof mapFn !== 'undefined') {
// 5. else
// 5. a If IsCallable(mapfn) is false, throw a TypeError exception.
if (!isCallable(mapFn)) {
throw new TypeError('Array.from: when provided, the second argument must be a function');
}
// 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.
if (arguments.length > 2) {
T = arguments[2];
}
}
// 10. Let lenValue be Get(items, "length").
// 11. Let len be ToLength(lenValue).
var len = toLength(items.length);
// 13. If IsConstructor(C) is true, then
// 13. a. Let A be the result of calling the [[Construct]] internal method
// of C with an argument list containing the single item len.
// 14. a. Else, Let A be ArrayCreate(len).
var A = isCallable(C) ? Object(new C(len)) : new Array(len);
// 16. Let k be 0.
var k = 0;
// 17. Repeat, while k < len… (also steps a - h)
var kValue;
while (k < len) {
kValue = items[k];
if (mapFn) {
A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k);
} else {
A[k] = kValue;
}
k += 1;
}
// 18. Let putStatus be Put(A, "length", len, true).
A.length = len;
// 20. Return A.
return A;
};
}());
}
您可以检查 whole sample code .我这边的结果是这样的。
关于javascript - 仅在 IE11 中首次单击时画廊灯箱不插入图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57589840/
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
如何在放大的每个图像下添加自定义文本?现在它基于 alt 文本,但我想使用图像等对其进行更多自定义。 完美的解决方案是将文本显示在 div 中。 这是代码笔: // Create a lightbox
为了重新启动我的客户站点 (craft2eu.net),我需要集成 Galleriffic用lightBox .我知道有 GallerificPlus ,但它基于旧版本的 Galleriffic,它带
设计一个网站,其中我在很多地方使用了很多背景:rgba。因此,当我尝试制作一个灯箱时,我正在使用 background: rgba(0, 0, 0 , 0.6) !important; 使屏幕的其余部
晚上好,感谢您首先尝试提供帮助。 我有一个“作品集”页面,其中包含 45 张我 build 的房屋的图片。它们被布置在一个网格中,5 宽 9 向下。简单地说,当您在浏览器中单击并展开图像时,效果很好。
我试图允许从灯箱弹出窗口填写表格。类似于“获得满意度”使用的那种(尽管我只需要能够收集信息,而不是从查询中显示信息)。您可以在 http://tweet.fabeetle.com 处查看“获得满意”示
我正在尝试使用这个灯箱, http://lokeshdhakar.com/projects/lightbox2/#getting-started in my app. 1) How can I ad
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
有谁知道一个好的 Rails 灯箱插件?我找到了 redbox,但它似乎已经过时了。 谢谢! -艾略特 最佳答案 我只使用常规的 Lightbox 2。包括所有适当的 javascript 和样式表,
我正在使用 bootstrap-lightbox以便在页面中显示某些图像。 × 我只需要显示被点击的缩略图的完整版本。 是
我目前正在使用 prettyPhoto在我正在开发的网站上,但在移动设备上遇到了一个小问题。 该插件具有选项“allow_resize: false”,它不允许调整大于视口(viewport)的照片大
我正在使用jquery lightbox ,有没有办法显示文本字段而不是图像或两者都显示? 或者也许是另一种在灯箱弹出窗口中显示文本的方式? 最佳答案 这是灯箱的最佳示例视频 https://www.
我对 Jquery 很陌生,我发现了几个使用 cookie 和 onload 功能打开灯箱的示例。我正在使用与 fancybox 一起使用的 cookie 示例,但我一直在我的所有网站上使用 Pret
我这辈子都想不出如何在不影响我的灯箱图像的情况下模糊变暗的背景。任何帮助将不胜感激,因为我仍在努力学习如何使用 :target 功能。我计划制作一些不同的图像,这样当我单击每个图像时,此灯箱效果将适用
首先,我将从以下内容开始:我绝不是一名开发人员、编码员等。我只是一名平面设计师,正在帮助 friend 设计她的网站。 截至目前,我在将缩略图链接到我的灯箱标注上的完整图像时遇到问题 - 您可以在 w
我肯定遇到了一个简单的问题,但就是无法解决。我想按照描述使用 jquery 触发灯箱 here但这是行不通的。.lightBox() 方法找不到,我只是不明白为什么。 代码是 $(f
我在 Lightbox iframe 中有一个按钮。如何通过单击该按钮关闭该 iframe? 我的代码是这样的: 最佳答案 通过this answer至 Close a ligh
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在使用 angular 来显示我的 Student Object 的详细信息 一切正常 但还需要作业文本上的超链接,这样当有人点击它时,会打开一个灯箱,其中包含所有作业对象的详细信息。 现在我的老
我是一名优秀的程序员,十分优秀!