【问题标题】:how to show a text inside the images that are rendered inside jquery slider如何在 jquery 滑块内呈现的图像中显示文本
【发布时间】:2015-09-02 02:06:48
【问题描述】:

我正在使用一个 Web 模板,它有一个使用 jQuery touchTouch.jquery.js 插件版本 1.0 的 jquery 滑块。可以从此链接web templete 访问滑块的实时示例。现在在 Web 模板中,我得到了以下标记:-

<div class="row">
                <ul class="listgall">
                    <li class="col-lg-4 col-md-4 col-sm-6  col-xs-6 colgal">
                        <figure><a href="img/page3_bigimg1.jpg" class="thumb"><img src="img/page3_img1.jpg" alt=""><span><strong>Project name:<strong><em>Lorem ipsum dolore massa</em><img src="img/searchsmall.png" alt=""></span></a></figure>
                    </li>

这将做两件事:-

1.当我将鼠标悬停在图像上时,它会显示以下内容:-

<span><strong>Project name:<strong><em>Lorem ipsum dolore massa</em><img src="img/searchsmall.png" alt=""></span>

2.如果我点击page3_img1.jpg 图像,那么&lt;a href="img/page3_bigimg1.jpg" class="thumb"&gt; 图像将显示在滑块内。

现在我有以下问题,关于如何添加这些功能。

  1. 当图像在滑块内呈现时,如何在滑块图像内将此标记显示为固定文本? :-

    项目名称:Lorem ipsum dolore massa

目前,当图像在滑块内呈现时,即使我将鼠标悬停在它上面也不会显示任何文本或描述?

  1. 第二个问题。现在我有 2 个使用滑块功能的网页。在一个网页内,我想在滑块内隐藏下一个和上一个箭头,同时在第二个网页内显示这些箭头,这可能吗,或者在这种情况下,我需要有两个版本的 touchTouch.query.js 文件并在每个网页中分别加载它们?

-----------编辑----------- ------

现在经过多次测试和修改,我对 Touchtouch 脚本中的 loadImage 回调函数进行了以下修改:-

function loadImage(src, callback){
            var img = $('<img>').on('load', function(){
                callback.call(img);
            });

            img.attr('src', src);



                // get all the captions (should probably be done with variable referring to something about above selector)
                var allcaptions = $("figure span");

                // setTimeout is a hack here, since the ".placeholders" don't exist yet
                setTimeout(function () {
                    $(".placeholder").each(function (i) {

                        // in each .placeholder, copy its caption's mark-up into it (remove the img first)
                        var caption = allcaptions.eq(i).clone();
                       // caption.find("img").remove();
                        $(this).append("<div class='caption'>" + caption.html() + "</div>");
                    });
        }, 500
        );
}

这似乎正确显示跨度如下:-

但是当我将网站部署到我的托管服务器时我遇到了这个问题(那里有互联网延迟,不像在我的机器上本地工作),现在当我单击图像时,它会显示滑块和加载图像标题如下:-

然后当图像完全渲染时,标题将被删除,并且仅显示图像而没有标题文本。现在,如果我单击将从浏览器缓存中加载图像的滑块内的下一个和上一个箭头,则不会有任何加载时间,并且标题将正确显示。那么有没有办法解决这个问题,例如修改我的脚本以仅在图像完全呈现时显示标题文本?那么任何人都可以告诉我如何解决这个问题吗?

【问题讨论】:

  • 尝试在 .placeholder 元素上定义 data-* 属性,该元素具有要显示的预期文本,利用 css :before #gallerySlider.placeholder 伪选择器在 data-* html 处显示文本
  • @guest271314 你能在你的回复中提供更多可用的示例代码吗?
  • “你能在你的回复中提供更多可用的示例代码吗?”见帖子
  • @guest271314 能否请您查看我对原始问题的编辑部分,我在其中修改了内置的 loadimage 回调函数,但我遇到了一些问题

标签: javascript jquery html css slider


【解决方案1】:
  1. 这是一个拉入 touchTouch 和您的一些文件的模型,同时还添加了一些额外的 JS 功能和 CSS 以在图像在滑块中放大时显示标题:

    http://jsfiddle.net/dx8qdoph/

    一些注意事项:我没有打扰悬停时滑入和滑出的字幕(我只是将它们隐藏了)。 setTimeout 的一部分是为了节省我的时间。我添加了 setTimeout,因为当点击缩略图时 touchTouch 添加的 .placeholder 元素还不存在。正确的方法可能是在超时循环或 MutationObserver 或类似的东西告诉你它们何时存在(不是我的强项)之后附加标题。或者,如果您可以选择自定义 touchTouch.jquery.js 文件,您可以在其中制作添加标题的 JS。

  2. 我认为您不需要两个版本的 touchTouch 来隐藏一个实现中的箭头而不是另一个。您可以在小提琴中看到我只是通过 display:none'ing 在 CSS 中隐藏箭头(您仍然可以使用箭头键来回移动)。

【讨论】:

  • 感谢您的示例,但我有这个问题:- 如何在图像本身中显示文本,如我提供的 Web 模板链接所示,如您的 jsfiddle 示例中的文本将显示在图片下方而不是在里面。你能建议一下吗
  • 你的意思是像this 这样的东西吗(除了标题块的右边缘与照片的右边缘对齐(这并不总是发生))?在我进一步解释你需要做什么之前,让我知道你是否是这个意思。
  • 感谢您的帮助。但似乎我没有解释我到底需要什么。现在在下面的 web 模板图片库中static.livedemo00.template-help.com/wt_47767/index-2.html 当您将鼠标悬停在图像上时,将显示一个文本和一个搜索图标,然后如果您单击该图像,它将显示在 jquery 滑块中。现在,当图像显示在滑块内时,不会显示任何文本。所以我需要的是在图像中显示相同的文本和搜索图标,当它显示在 jQuery 滑块中时......你能建议吗?
  • 好的,我仍然不确定我是否了解您需要什么以及模型中缺少什么。这个有帮助吗? jsfiddle.net/dx8qdoph/3
  • 只是一个概念验证模型。这只是一个简化的例子,向你展示我试图传达的内容,而不是增加一堆干扰,或者让它完全像你一样(我只有这么多时间)。您将不得不调整内容以适应您的实施的确切布局/标记/行为。如果您不了解足够的 JS/CSS/HTML 来做到这一点,那么我可能无法为您提供更多帮助。这是另一个使用
    ...
    的版本:jsfiddle.net/dx8qdoph/4。对于 CSS/JS,我只需要更改选择器。祝你好运。
【解决方案2】:

尝试使用 css :after 伪元素,content 属性,将 attr(X) 设置为 data-* 属性集在 .placeholder 。请注意,:before 似乎在现有的 css 中使用,请参阅 touchTouch.css51-60

#gallerySlider .placeholder:after {
  content: attr(data-placeholder);
  color: yellow;
  font-size: 36px;
  font-family: arial;
  position: relative;
  display: block;
  height: 20px;
  width: 200px;
  z-Index: 1;
  bottom: 42px;
  text-align: right;
  margin: -8px;
}
<div id="gallerySlider" style="left: -400%;">
  <div class="placeholder" data-placeholder="cats">
    <img src="http://lorempixel.com/200/200/cats">
  </div>
  <div class="placeholder" data-placeholder="nature">
    <img src="http://lorempixel.com/200/200/nature">
  </div>
  <div class="placeholder" data-placeholder="animals">
    <img src="http://lorempixel.com/200/200/animals">
  </div>
</div>

【讨论】:

  • 感谢您的回复,但我的问题是如何在 jquery 滑块上查看图像时显示图像中的文本?
  • @johnG “我的问题是如何在 jquery 滑块上查看图像时显示图像中的文本?” 是的。通过定义父 .placeholder 元素的 content 可以利用 css :after 伪元素在 img 元素上显示文本。 img 元素 content 如果在 img:after 处定义,则不会呈现相同的内容;为什么在 stacksn-ps 使用父元素
  • @johnG 在 OP livedemo00.template-help.com/wt_47767/index-2.html 的链接处尝试console。可以在链接处创建 stacksn-ps 、 jsfiddle jsfiddle.net 包括所有 jscss 吗? ,然后可以将上面的css 应用于单击缩略图后出现的第二张图像。可能需要对:after 元素的位置进行最少的调整,但应该能够将data-placeholder 属性处的文本覆盖在选定的滑块图像上。以上 sn-p 发布以演示在img 元素上实现文本的一种方法
  • 我尝试使用 css :after pseudo-element , content .. 正如你所提到的,似乎这是正确的方法。但现在在你的例子中你提到了这个“内容:attr(数据占位符);”这将显示数据占位符,但有没有办法修改它,使内容等于此标记中“
    ”内的“”:-“
    项目名称:Lorem ipsum dolore massa
    "
  • @johnG “有没有办法修改这个,所以内容等于这个标记中“
    ”中的“
    是@ 987654349@动态?或在页面加载时包含在html 文档中?尝试创建动态 style 元素设置 contentspan html ,附加到 style 元素 document.body
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 2013-01-25
相关资源
最近更新 更多