javascript - 为什么单击图像时 alt 没有显示在叠加层中?

标签 javascript jquery html css

我遇到的问题是图像的 alt 应该使用 JavaScript 附加并显示在叠加层中的图像下方。但是当我点击一张图片时,它似乎在叠加层中但没有显示出来。任何建议将不胜感激!

HTML:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Zack Adams | Web Developer</title>
    <link rel="stylesheet" href="css/normalize.css">
    <link href='https://fonts.googleapis.com/css?family=Lobster' rel='stylesheet'             type='text/css'>
    <link href='https://fonts.googleapis.com/css?                        family=Lobster+Two:400,400italic,700,700italic' rel='stylesheet' 
          type='text/css'>
    <link rel="stylesheet" href="css/main.css">
    <link rel="stylesheet" href="css/responsive.css">
    <meta name="viewport" content="width=device-width. initial-scale=1.0">
  </head>
  <body>
    <header>
      <a href="index.html" id="logo">
        <h1>Zack Adams</h1>
        <h2>Developer</h2>
      </a>
      <nav>
        <ul>
          <li><a href="index.html" class="selected">Portfolio</a></li>
          <li><a href="about.html">About</a></li>
          <li><a href="contact.html">Contact</a></li>
        </ul>
      </nav>
    </header>
    <div id="wrapper">
      <section>
        <ul id="ImageGallery">
          <li>
            <a href="img/numbers-01.jpg">
              <img src="img/numbers-01.jpg" alt="Experimentation with color and texture.">
            </a>
          </li>
          <li>
            <a href="img/numbers-02.jpg">
              <img src="img/numbers-02.jpg" alt="Playing with blending modes in Photoshop.">
            </a>
          </li>
          <li>
            <a href="img/numbers-06.jpg">
              <img src="img/numbers-06.jpg" alt="Trying to create an 80's style of glows.">
            </a>
          </li>
          <li>
            <a href="img/numbers-09.jpg">
              <img src="img/numbers-09.jpg" alt="Drips created using Photoshop brushes.">
            </a>
          </li>
          <li>
            <a href="img/numbers-12.jpg">
              <img src="img/numbers-12.jpg" alt="Creating shapes using repetition.">
            </a>
          </li>
        </ul>
        <script src="http://code.jquery.com/jquery-1.11.0.min.js" type="text/javascript" charset="utf-8"></script>
        <script src="js/app.js" type="text/javascript" charset="utf-8"></script>
      </section>
      <footer>
        <a href="http://linkedin.com/in/adamszs"><img src="img/linkedin.png" alt="LinkedIn Logo"  class="social-icon"></a>
        <a href="http://facebook.com/zackhary.adams.75"><img src="img/facebook-wrap.png" alt="Facebook Logo" class="social-icon"></a>
        <p>&copy; 2015 Zack Adams.</p>
      </footer>
    </div>

  </body>
</html>

CSS:

/**********************************
GENERAL
***********************************/

body {
  font-family: 'Lobster Two', cursive, sans-serif;
}

#wrapper {
  max-width: 940px;
  margin: 0 auto;
  padding: 0 5%;
}

a {
  text-decoration: none;
}

img {
  max-width:100%; 
}

h3 {
  margin: 0 0 1em 0;

}

/**********************************
HEADING
***********************************/
header {
  float: left;
  margin: 0 0 30px 0;
  padding: 5px 0 0 0;
  width:100%;
}
#logo {
  text-align: center;
  margin: 0;
}

h1 {
  font-family: 'Lobster', cursive, sans-serif;
  margin: 15px 0;
  font-size: 1.75em;
  font-weight: normal;
  line-height: 0.8em;
}

h2 {
  font-family: 'Lobster Two', cursive, sans-serif;
  font-size: 0.75em;
  margin: -5px 0 0;
  font-weight: normal;
}



/**********************************
NAVIGATION
***********************************/

nav {
  text-align: center;
  padding: 10px 0;
  margin: 20px 0 0;
}
nav ul {
 list-style:none;
  margin:0 10px;
  padding:0;
}
nav li {
  display:inline-block;
}

nav a {
  font-weight:800;
  padding:15px 10px;
}



/**********************************
FOOTER
***********************************/

footer {

  font-size: 0.75em;
  text-align: center;
  clear:both;
  padding-top: 50px;
  color: #ccc;
}
.social-icon {
 width:20px;
 height:20px;
 margin: 0 5px;
}

/**********************************
PAGE PORTFOLIO
***********************************/

#ImageGallery {
  width:100%;
  margin:0;
  padding:0;
  list-style: none;
}

#ImageGallery li{
 float:left;
 width:45%;
 margin:2.5%;
  background-color: #f5f5f5;
  color:#bdc3c7;  
}

#ImageGallery li a p {
  margin:0;
  padding:5%;
  font-size:0.75em;
  color:#717577;
}

/**********************************
PAGE ABOUT
***********************************/

.profile-photo {
  display:block;
  max-width:150px;
  margin: 0 auto 30px;
  padding-top:10px;
  border-radius:100%;
}

/**********************************
PAGE CONTACT
***********************************/

.contact-info {
  list-style:none;
  padding:0;
  margin:0;
  font-size:0.9em;
}

.contact-info a{
 display:block;
  min-height:20px;
  background-repeat:no-repeat;
  background-size:20px 20px;
  padding: 0 0 0 30px;
  margin: 0 0 10px;
}

.contact-info li.phone a{
 background-image:url('../img/phone.png'); 
}

.contact-info li.mail a{
 background-image:url('../img/mail.png'); 
}

.contact-info li.twitter a{
 background-image:url('../img/twitter.png'); 
}
/**********************************
COLORS
***********************************/

/* site body */
body {
  background-color: #fff;
  color: #999;
}

/* green header */
header {
  background: #6ab47b;
  border-color: #599a68;
  margin: 0 auto;
}

/* nav background on mobile */
nav {
  background: #599a68;
}

/* logo text */
h1, h2 {
  color: #fff;
}

/* links */
a {
  color: #6ab47b;
}

/* nav link */
nav a, nav a:visited {
  color: #fff;
}

/* selected nav link */
nav a.selected, nav a:hover {
  color: #32673f;
}
/*******************
Overlay for LightBox
********************/
#overlay {
  background:rgba(0,0,0,0.7);
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  display:none;
  text-align:center;

}

#overlay img {
 margin-top:10%;
 max-width:70%;
 max-height:30%;
 display:none;
}

#overlay p {
font-size:10px;
 color:#ffffff; 
  display:none;

}

JS:

//Problem: User when clicking on image goes to a dead end
//Solution: Create an overlay with the large image - Lightbox

//declared variables
var $overlay = $('<div id="overlay"> </div>');
var $image = $("<img>");
var $caption = $("<p></p>");
var $presentation = false;

//appended html elements after the overlay
$overlay.append($image);
$overlay.append($caption);
//append the overlay to the body so it will take up the whole screen
$("body").append($overlay);

//capture the click event on an image
$("#ImageGallery a").click(function(event) {
  //set presentation to true
  $presentation = true;
  //if true
  if($presentation === true)
  {
  //prevent default image location
  event.preventDefault();

  var imageLocation = $(this).attr("href");
  $image.attr("src", imageLocation); 

    $overlay.show();
      var captionText = $(this).children("img").attr("alt");
      $caption.text(captionText);
      $image.fadeIn("slow");
      $caption.fadeIn("slow");
      presentation = false;
 }//end if statement

});
//show the overlay
//if the overlay is clicked
$overlay.click(function(){
      $presentation = false;
      $overlay.hide();
      $caption.fadeOut("fast");
      $image.fadeOut("fast");

});
//update the overlay with the image linked in the link
//get childs alt attribute and set caption

最佳答案

我不认为这是附加标记的正确方法。您要么需要在文档中包含叠加标记,要么使用 jQuery 的 .append()

附加它

关于javascript - 为什么单击图像时 alt 没有显示在叠加层中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33326255/

相关文章:

Javascript 提升 - 无法理解这一点

javascript - 我应该如何考虑我的 JavaScript 应用程序 namespace ?

javascript - JavaScript 重定向后无法返回

jquery ajax 加载器

html - 填充未应用于 ul

javascript - 验证动态创建的输入文本字段

javascript - 传递给 __defineGetter__ 的函数中 "this"的值是多少

jquery - 仅将类添加到 $(this) parent jquery

html - flex 盒中元素之间的间距

Javascript将图像放入跨度中