- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个网站,其中包含 Royal Slider HTML version 。我想使用picturefill加载针对当前查看的分辨率优化的图像。但我在让它发挥作用时遇到了问题。当我通过普通的 WP_Query 提供图像时它可以工作。
我读过这篇文章thread ,但这对我没有帮助,有人有想法吗?
谢谢,/保罗
<div id="featuredAdv" class="royalSliderAdv rsMinW">
<?php
$args_featured_adv = array(
'posts_per_page' => -1,
'orderby' => 'rand',
'post_type' => 'advertenties',
'meta_key' => 'advertentiepositie',
'meta_value' => 'Featured'
);
$adv_featured = new WP_Query( $args_featured_adv );
if( $adv_featured->have_posts() ): while ( $adv_featured->have_posts() ) : $adv_featured->the_post();
?>
<a href="<?php the_field('link'); ?>" target="_blank" onClick="return recordOutboundLink(this, ['<?php the_title(); ?>', '<?php the_field('link'); ?>']);">
<div class="rsContent">
<?php
$attachment_id_ft = get_field('afbeelding');
$small_ft = wp_get_attachment_image_src( $attachment_id_ft, 'adv-b-small-small' ); // returns an array
$default_ft = wp_get_attachment_image_src( $attachment_id_ft, 'adv-b-small-default' ); // returns an array
$large_ft = wp_get_attachment_image_src( $attachment_id_ft, 'adv-b-small-large' ); // returns an array
?>
<span data-picture data-alt="<?php the_title_attribute( array( 'before' => 'Photoq.nl: ', 'after' => '' ) ); ?>">
<span data-src="<?php echo $default_ft[0]; ?>"></span>
<span data-src="<?php echo $small_ft[0]; ?>" data-media="(min-width: 400px)"></span>
<span data-src="<?php echo $default_ft[0]; ?>" data-media="(min-width: 768px)"></span>
<span data-src="<?php echo $large_ft[0]; ?>" data-media="(min-width: 1200px)"></span>
<!-- Fallback content for non-JS browsers. Same img src as the initial, unqualified source element. -->
<noscript>
<img src="<?php echo $default_ft[0]; ?>" alt="">
</noscript>
</span>
</div>
</a>
<?php endwhile; endif; wp_reset_query(); ?>
</div> <!-- end #featuredAdv -->
<script>
jQuery(document).ready(function($) {
$('#featuredAdv').royalSlider({
arrowsNav: false,
loop: false,
controlsInside: false,
imageScaleMode: 'none',
imageScalePadding: 0,
arrowsNavAutoHide: false,
autoScaleSlider: true,
autoScaleSliderWidth: 270,
autoScaleSliderHeight: 572,
controlNavigation: 'bullets',
numImagesToPreload: 1,
thumbsFitInViewport: false,
navigateByClick: true,
startSlideId: 0,
autoPlay: false,
transitionType: 'move',
globalCaption: true
});
});
</script>
编辑:28-06 09:40
与开发人员取得了联系...所以他给出了一些提示。其中之一是确保图片填充在 slider 之前初始化。他的意思是,至少我认为,picturefill.js 需要在Royalslider 文件之前加载。
不过还是没有运气。哦,恩对代码做了一些更改:
<div class="rsIMG">
不遵循 slider 语法。
最佳答案
我今天设法让 RoyalSlider 与 Picturefill2 一起使用,但您需要编辑 picturefill.js 文件的一部分以阻止它在窗口调整大小时重新计算。我刚刚在 RoyalSlider forum 中输入了一些说明但我也会复制到这里,以防对其他人有帮助。
首先你必须从http://scottjehl.github.io/picturefill/#download获取picturefill.js 。然后将脚本文件加载到文档的 HEAD 中,而不是在正文标记之前。如果您需要旧版浏览器支持,即不支持 HTML5 元素的浏览器,则需要按照说明 here 进行操作。创建 picture
元素。或者,您可以将 Modernizr 包含在您的项目中(我已经在使用 Modernizr,所以我就是这么做的)。
RoyalSlider 标记:这是我使用的代码
<div class="royalSlider rsDefault">
<picture>
<!--[if IE 9]><video style="display: none;"><![endif]-->
<source srcset="img/gsa-01.jpg" media="(min-width: 768px)">
<source srcset="img/gsa-01-smallest.jpg, img/gsa-01-smallest@2x.jpg 2x">
<!--[if IE 9]></video><![endif]-->
<img class="rsImg" srcset="img/gsa-01-smallest.jpg, img/gsa-01-smallest2x.jpg 2x" alt="GSA Est. 1935">
</picture>
<!-- etc... -->
</div>
一开始看起来有点乱,但很容易理解,并且在图片填充网页上都有解释,但基本上是第一个 <source>
元素应该始终是您平移要提供的图像的最高质量版本,通过媒体查询指定何时加载。因此,在上面的示例中,在 < 768px 处,加载了 gsa-01-smallest。如果设备的设备像素比 > 1,则加载 gsa-01-smallest2x.jpg,直到最后如果设备像素比为 1,则加载 gsa-01-smallest.jpg。IE9 包装器只是 IE9 支持的一个技巧。
现在,为了同时使用 RoyalSlider 和 picturefill,您必须确保 picturefill 已遍历页面并添加到正确的 src
中。属性到 img 标签,然后再让 RoyalSlider 做它的事情。为此,请将您常用的 Royalslider 代码 ( jQuery(document).ready(function($) {
) 放入名为
$(".royalSlider").royalSlider({...defer.js
的文件中。 。现在,在文档的最终标签之前,但显然在 jQuery 和 Royalslider js 脚本标签之后,使用以下代码(称为 Google Defer js 脚本):
<script type="text/javascript">
function downloadJSAtOnload() {
var element = document.createElement("script");
element.src = "js/defer.js";
document.body.appendChild(element);
}
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
这表示等待页面加载完其他所有内容,然后应用该脚本(从 js/defer.js 加载)。
这非常有效,直到您意识到当您调整窗口大小时,一切都会崩溃(FML!)。这是因为 picturefill 中有一段代码,每次调整窗口大小时都会再次交换图像,这在 RoyalSlider 中根本不能很好地工作。因此,要阻止这种情况发生,请打开 picturefill.js 并找到此代码块并将其注释掉(大约第 250 行):
if( w.addEventListener ){
var resizeThrottle;
w.addEventListener( "resize", function() {
w.clearTimeout( resizeThrottle );
resizeThrottle = w.setTimeout( function(){
picturefill({ reevaluate: true });
}, 60 );
}, false );
}
这就是我让它工作的方式,这是一种为手机提供 slider 的绝佳方式 - 特别是全宽 slider 。我不必在 3G 手机上加载 ~400kb 全宽图像,我可以提供 ~80kb 图像:)
关于php - Royalslider 和 Picturefill.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17339404/
我正在尝试使用 .toggleSlide 将 Royalslider 放入一个 div 中。 但是一旦我调出幻灯片,幻灯片就只有 100 像素宽。这是您可以看到红色的屏幕截图。我在 CSS 中也有 a
我在这个元素中使用 RoyalSlider 和 Lightbox.js。由于某种原因,它不起作用 - 您可以单击图像,它会在灯箱中弹出,但图像不会加载。 网站的工作演示是 http://bobbyom
我正在使用 Royalslider,我正在尝试设置一个外部缩略图列表,当您单击其中一个拇指或点击下一个按钮/使用箭头键/滑动时,缩略图会更改类别以成为“突出显示”的缩略图.单击缩略图时效果很好,但我无
我正在使用 royalslider对于一组图像。它工作正常,只是当它进入全屏时你看不到标题。我相信它被推到了页面底部。 我需要做什么才能在全屏模式下正确显示我的图片说明? 生成的 html 如下所示
我的网站在这里:http://s168249.gridserver.com/使用两个 Royal Slider 插件。底部的是我要重新配置的那个。我需要将导航箭头放在 960px 宽的 slider
我正在尝试在 Royalslider 插件上添加一个 Logo 。它设置为 100% 宽度和灵活的宽度以适应响应式布局。我使用 CSS 在 Royalslider 上放置了一个标志。它有效但不完全是我
我有this page用RoyalSlider在可见的附近图像模式下。 我想将中心图像的大小更改为 1050x514 以重现在 this page 上看到的 slider . 这些是我对 slider
我有一个(皇家) slider ,我需要使用下一个/上一个导航按钮离开 slider div。假设我的页脚中有导航导航按钮。 这里有一些文档,但我不知道如何使用它! http://dimsemen
我使用 Royalslider,只是想创建一个转到下一张图片的按钮。 这是我的代码: Next jQuery(document).ready(function($) { var slider =
我正在使用 Royal Slider 创建幻灯片但它仅在 IE10 中表现不佳。 我创建了一个 fiddle 来显示问题:http://jsfiddle.net/vwDFa/6/ . 将鼠标悬停在幻灯
我有一个页面显示多个 Royalslider 幻灯片,每个幻灯片的宽度和高度均为 100%。目前,所有幻灯片都在页面加载时初始化,这意味着我只看到第一个 slider 淡入到位(它们都应该淡入,但第一
我正在创建一个网站,其中包含 Royal Slider HTML version 。我想使用picturefill加载针对当前查看的分辨率优化的图像。但我在让它发挥作用时遇到了问题。当我通过普通的 W
我正在使用 Royalslider 的 HTML 版本。在 slider 的动态实例化中,当仅存在一张幻灯片时,使用单个项目符号。我正在尝试使用内置的 Royalslider API 方法“slide
我为我的网站使用 RoyalSlider,我想将每个 slider 的背景颜色更改为不同的颜色。 我要更改的 div 是#slide6,如下所示: $('#slide6').css({"backgro
我正在使用 RoyalSlider 插件 (dimsemenov.com/plugins/royal-slider) 使用 PHP 在 slider 中显示 MySQL 数据库中的前 6 项。我使用
尝试将 RoyalSlider 作为指令加载。这是我的指令,尽管我不确定确切的原因,但它在第一次加载时有效,但在后续加载时无效: app.directive('royalSlider', ['$tim
每个讨论:On active slide, append input 虽然我还没有弄清楚这一点,但我感觉很接近。我只是被难住了。代码看起来是正确的..但我仍然收到错误。特别是“slider.ev.on
我是一名优秀的程序员,十分优秀!