我遇到的问题是图像的alt应该使用JavaScript附加并显示在Overlay中的图像下。但是,当我点击一个图像时,它似乎在叠加但没有出现。任何建议将不胜感激!
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>© 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
答案 0 :(得分:0)
我认为这不是添加标记的正确方法。您需要在文档中使用重叠标记,或者使用jQuery的.append()附加它。