javascript - 灯箱 + 图像叠加下的文本

标签 javascript jquery html lightbox

如何在放大的每个图像下添加自定义文本?现在它基于 alt 文本,但我想使用图像等对其进行更多自定义。

完美的解决方案是将文本显示在 div 中。

这是代码笔:

// Create a lightbox
(function() {
  var $lightbox = $("<div class='lightbox'></div>");
  var $img = $("<img>");
  var $caption = $("<p class='caption'></p>");

  // Add image and caption to lightbox

  $lightbox
    .append($img)
    .append($caption);

  // Add lighbox to document

  $('body').append($lightbox);

  $('.lightbox-gallery img').click(function(e) {
    e.preventDefault();

    // Get image link and description
    var src = $(this).attr("src");
    var cap = $(this).attr("alt");

    // Add data to lighbox

    $img.attr('src', src);
    $caption.text(cap);

    // Show lightbox

    $lightbox.fadeIn('fast');

    $lightbox.click(function() {
      $lightbox.fadeOut('fast');
    });
  });

}());
body{
	background: linear-gradient(to bottom right, #b81d1d, #5F554C, #E4DFD8);
	font-family: "Open Sans", sans-serif;
}
.container{
	max-width: 800px;
	margin: 5% auto;
	padding: 20px;
	background-color: #fff;
	overflow: hidden;
	box-sizing: border-box;
  box-shadow: 0 15px 20px -15px rgba(0, 0, 0, 0.3), 0 35px 50px -25px rgba(0, 0, 0, 0.3), 0 85px 60px -25px rgba(0, 0, 0, 0.1);
}

.text-center{
	text-align: center;
	margin-bottom: 1em;
}

.lightbox-gallery {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: center;
}

.lightbox-gallery div > img {
  max-width: 100%;
  display: block;
}

.lightbox-gallery div {
  margin: 10px;
  flex-basis: 180px;
}

@media only screen and (max-width: 480px) {
  .lightbox-gallery {
    flex-direction: column;
    align-items: center;
  }

  .lightbox > div {
    margin-bottom: 10px;
  }
}


/*Lighbox CSS*/


.lightbox{
	display: none;
	width: 100%;
	height: 100%;
	background-color: rgba(0,0,0,.7);
	position: fixed;
	top: 0;
	left: 0;
	z-index: 20;
	padding-top: 30px;
	box-sizing: border-box;
}

.lightbox img{
	display: block;
  margin: auto;
}

.lightbox .caption{
	margin: 15px auto;
	width: 50%;
	text-align: center;
	font-size: 1em;
	line-height: 1.5;
	font-weight: 700;
	color: #eee;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
		<h2 class="text-center">Lightbox Gallery</h2>
		<div class="lightbox-gallery">
				<div><img src="http://placehold.it/300/f1b702/fff&text=image1" alt="Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit, quae, quam. Ut dolorum quia, unde dicta at harum porro officia obcaecati ipsam deserunt fugit dolore delectus quam, maxime nisi quo."></div>
				<div><img src="http://placehold.it/300/d2f1b2/222&text=image2" alt="Lorem ipsum dolor sit amet, consectetur adipisicing elit. Maxime accusamus officiis dignissimos doloribus consectetur harum eos sapiente optio aut minima."></div>
				<div><img src="http://placehold.it/300/eee/000&text=image3" alt="Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptates veritatis similique, amet, maiores soluta recusandae cupiditate, sed perspiciatis fugit minima, sunt dolores cum earum deserunt illo ipsum!"></div>
				<div><img src="http://placehold.it/300/222/fff&text=image4" alt="Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque laudantium dignissimos tenetur eos unde quidem repellat officiis nemo laboriosam necessitatibus deleniti commodi quis aliquid est atque tempora aut, nihil!"></div>
				<div><img src="http://placehold.it/300/b47f99/000&text=image5" alt="Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto minus consequatur soluta quaerat itaque, laboriosam quis a facilis, cumque, deleniti quas aperiam voluptate dolore. Enim nostrum sit eaque, porro eligendi illo placeat?"></div>
				<div><img src="http://placehold.it/300/e1d400/000&text=image6" alt="Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sequi suscipit quam, id aliquam totam aperiam quas rem debitis voluptatem pariatur, illo accusamus facilis eius ipsa! Reprehenderit libero, quas iste repudiandae distinctio, quos dignissimos."></div>
		</div>
	</div>

Codepen 网址:http://codepen.io/lkfmarketing/pen/XMdNEP

最佳答案

您可以添加隐藏的 div 并使用 jQuery 抓取文本。

 <div class="js-text text">Test</div>
 var txt = $(this).parent().find('.js-text').text()

Forked example

关于javascript - 灯箱 + 图像叠加下的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43500298/

相关文章:

javascript - 带有 d3.line 函数的 For 循环

javascript - 使用 Sharp 进行不透明度设置的叠加

javascript - 将 innerhtml javascript 转换为 jquery

jquery - 使用 jQuery 的页面在 Firefox 中显示不佳(IE 和 Chrome 正常)

HTML/CSS 背景图像在 Safari 中无法缩放

javascript - Access-Control-Allow-Origin 问题和 Angular $http 服务

javascript - 无法使用 jQuery data() 设置元素属性

javascript - 单击外部链接时的标记位置

html - 如何在使用 ctrl- 缩放时仍然彼此相邻的包装器中均匀地调整三个 float 左侧 div?

jquery - 使用 Spring MVC 的 &lt;script&gt; 标签中 JQuery 库的路径