2015-10-07 119 views
0

在我把HTML和CSS之前,我有2个问题,请保持我的,我几乎是一个完整的业余的HTML和CSS,并不知道JavaScript的意思。Javascript内容滑块

问题:

  • 我的第一个问题是,内容代尔,犯规滑动远远不够,接下来的内容,而是点击该按钮时,只有一半带来了内容上(你会看到什么我的意思是当你将html和css粘贴到页面中时)。

  • 我的第二个问题是按钮的意思是水平的海誓山盟,我也想添加更多的未来

所以,如果有人能告诉我该怎么做,在阐述与JavaScript的问题,这将是伟大的!

这里的工作演示的jsfiddle请退房

Working code

感谢你提前.. !!

// just querying the DOM...like a boss! 
 
var links = document.querySelectorAll(".itemLinks"); 
 
var wrapper = document.querySelector("#wrapper"); 
 

 
// the activeLink provides a pointer to the currently displayed item 
 
var activeLink = 0; 
 

 
// setup the event listeners 
 
for (var i = 0; i < links.length; i++) { 
 
    var link = links[i]; 
 
    link.addEventListener('click', setClickedItem, false); 
 

 
    // identify the item for the activeLink 
 
    link.itemID = i; 
 
} 
 

 
// set first item as active 
 
links[activeLink].classList.add("active"); 
 

 
function setClickedItem(e) { 
 
    removeActiveLinks(); 
 

 
    var clickedLink = e.target; 
 
    activeLink = clickedLink.itemID; 
 

 
    changePosition(clickedLink); 
 
} 
 

 
function removeActiveLinks() { 
 
    for (var i = 0; i < links.length; i++) { 
 
     links[i].classList.remove("active"); 
 
    } 
 
} 
 

 
// Handle changing the slider position as well as ensure 
 
// the correct link is highlighted as being active 
 
function changePosition(link) { 
 
    link.classList.add("active"); 
 

 
    var position = link.getAttribute("data-pos"); 
 
    wrapper.style.left = position; 
 
}
#wrapper { 
 
    width: 5000px; 
 
    position: relative; 
 
    left: 0px; 
 
    transition: left .5s ease-in-out; 
 
} 
 

 
.content { 
 
    float: left; 
 
    width: 1250px; 
 
    height: 600px; 
 
    white-space: normal; 
 
    background-repeat: no-repeat; 
 
} 
 

 
#itemOne { 
 
    background-color: #ADFF2F; 
 
    background-image: url("http://www.kirupa.com/images/blueSquare.png"); 
 
} 
 
#itemTwo { 
 
    background-color: #FF7F50; 
 
    background-image: url("http://www.kirupa.com/images/yellowSquare.png"); 
 
} 
 
#itemThree { 
 
    background-color: #1E90FF; 
 
    background-image: url("http://www.kirupa.com/images/pinkSquare.png"); 
 
} 
 
#itemFour { 
 
    background-color: #DC143C; 
 
    background-image: url("http://www.kirupa.com/images/graySquare.png"); 
 
} 
 

 
#contentContainer { 
 
    width: 98%; 
 
    height: 600px; 
 
    border: 5px black solid; 
 
    overflow: hidden; 
 
    margin-left: 1%; 
 
    margin-right: 1%; 
 
} 
 
#navLinks { 
 
    text-align: center; 
 
    width: 22.5%; 
 
} 
 
    #navLinks ul { 
 
     margin: 0px; 
 
     padding: 0px; 
 
     display: inline-block; 
 
     margin-top: 6px; 
 
    } 
 
     #navLinks ul li { 
 
      float: left; 
 
      text-align: center; 
 
      margin: 10px; 
 
      list-style: none; 
 
      cursor: pointer; 
 
      background-color: #CCCCCC; 
 
      padding: 100px; 
 
      border-radius: 10%; 
 
      border: white 5px solid; 
 
     } 
 
      #navLinks ul li:hover { 
 
       background-color: #FFFF00; 
 
      } 
 
      #navLinks ul li.active { 
 
       background-color: #333333; 
 
       color: #FFFFFF; 
 
       outline-width: 7px; 
 
      } 
 
       #navLinks ul li.active:hover { 
 
        background-color: #484848; 
 
        color: #FFFFFF; 
 
       } 
 
#navLinks ul li.active { 
 
    background-color: #333333; 
 
    color: #FFFFFF; 
 
    outline-width: 7px; 
 
} 
 
#navLinks ul li.active:hover { 
 
    background-color: #484848; 
 
    color: #FFFFFF; 
 
}
<body bgcolor='black'> 
 

 

 
<div id="contentContainer"> 
 
    <div id="wrapper"> 
 
     <div id="itemOne" class="content"> 
 

 
     </div> 
 
     <div id="itemTwo" class="content"> 
 

 
     </div> 
 
     <div id="itemThree" class="content"> 
 

 
     </div> 
 
     <div id="itemFour" class="content"> 
 

 
     </div> 
 
    </div> 
 
</div> 
 
    <div id="navLinks"> 
 
    <ul> 
 
     <li class="itemLinks" data-pos="0px"></li> 
 
     <li class="itemLinks" data-pos="-550px"></li> 
 
     <li class="itemLinks" data-pos="-1100px"></li> 
 
     <li class="itemLinks" data-pos="-1650px"></li> 
 
    </ul> 
 
</div> 
 
    </body>

+0

你可以把它放在jsfiddle并提供一个链接? –

+0

你在这件事上使用了一些惊人的巨大div!问题是你的尺寸有严格的规定,而你使用的偏移量不符合滑块中div的宽度。这里是一个小提琴 - https://jsfiddle.net/9gpyL6o1/ – Matt

+0

嘿大家谢谢你的帮助!但现在我只是想知道边缘问题是什么,我有6个导航链接,但它们似乎停止在页面右侧15%左右。同样对于内容滑块,将使用什么代码来居中呢? – Connor

回答

2

主要领域进行更新; 1)你的“#contentContainer”。这基本上是你的滑块的窗口。高度和宽度需要更新以匹配滑块项目。 2)你的列表项目的“数据位置”值。这应该与它们的宽度*相同,它们的索引从0开始并且是负数。 3)列表容器太窄。使其与#contentContainer一样宽。

CSS Changes: 
#contentContainer { 
    width: 1250px; 
    height: 600px; 
} 
#navLinks { 
    width:1250px; 
} 
#navLinks ul li { 
    width:80px; 
} 

HTML change: 
<li class="itemLinks" data-pos="0px"></li> 
<li class="itemLinks" data-pos="-1250px"></li> 
<li class="itemLinks" data-pos="-2500px"></li> 
<li class="itemLinks" data-pos="-3750px"></li> 

https://jsfiddle.net/partypete25/9gpyL6o1/7/embedded/result/

0

我认为张贴在你的问题底部的CSS是main.css文件的内容。正如在评论中指出的那样,尝试改变div的大小。特别是#wrapper,这是由它指定使用塔散列标签(#)是ID

#wrapper { 
    width: 5000px; 
    position: relative; 
    left: 0px; 
    transition: left .5s ease-in-out; 
} 

而且在这里的JavaScript引用:

var wrapper = document.querySelector("#wrapper"); 

它分配给变量wrapper。它是5000像素宽。我相信,典型的桌面网页屏幕宽度约为1200 - 1700像素,供参考。这是关于您想要的尺寸.content,参考class使用.和什么保持每个显示“幻灯片” - 请记住,在手机和其他移动设备上正确显示的响应网站需要有变化大小使用@media查询

所以我想补充可见CSS边框适用(用于开发和稍后删除)和周围的数值变量(data-pos#wrapper.container大小)更改为找到最佳的解决方案。如上所述,无论您是否需要公开分享,jsfiddle都是一个很好的资源。

对于navlinks,应显示成一排,尝试保存列表(<ul>)的股利如下CSS:

​​

border:1px solid white;将帮助你看到那里的DIV是。然后在#navLinks ul li中尝试使用较小的padding大小,以确保页面上有空间可以水平显示。

我相信最后一步是调整<li class="itemLinks" data-pos="0px"></li>,其中data-pos属性只保存javascript的信息,用于changePosition函数,这是javascript的最后几行。

eloquentjavascript.net是一个美妙的,免费的来源,学习所有这一切。

0
<!DOCTYPE html> 
<html> 

<head> 
<title>Dinosaurs 4 Kids!</title> 

<style> 
#wrapper { 
    width: 98%; 
    position: relative; 
    left: 0px; 
    transition: left .5s ease-in-out; 
} 

.content { 
    float: left; 
    width: 100%; 
    height: 600px; 
    white-space: normal; 
    background-repeat: no-repeat; 
    background-position: center; 
} 

#itemOne { 
    background-color: #ADFF2F; 
    background-image: url("http://www.kirupa.com/images/blueSquare.png"); 
} 
#itemTwo { 
    background-color: #FF7F50; 
    background-image: url("http://www.kirupa.com/images/yellowSquare.png"); 
} 
#itemThree { 
    background-color: #1E90FF; 
    background-image: url("http://www.kirupa.com/images/pinkSquare.png"); 
} 
#itemFour { 
    background-color: #DC143C; 
    background-image: url("http://www.kirupa.com/images/graySquare.png"); 
} 

#contentContainer { 
    width: 98%; 
    height: 600px; 
    border: 5px black solid; 
    overflow: hidden; 
    margin-left: 1%; 
    margin-right: 1%; 
} 
#navLinks { 
    text-align: center; 
} 
    #navLinks ul { 
     margin: 0px; 
     padding: 0px; 
     display: inline-block; 
     margin-top: 6px; 
    } 
     #navLinks ul li { 
      float: left; 
      text-align: center; 
      margin: 10px; 
      list-style: none; 
      cursor: pointer; 
      background-color: #CCCCCC; 
      padding: 20px; 
      border-radius: 10%; 
      border: white 5px solid; 
     } 
      #navLinks ul li:hover { 
       background-color: #FFFF00; 
      } 
      #navLinks ul li.active { 
       background-color: #333333; 
       color: #FFFFFF; 
       outline-width: 7px; 
      } 
       #navLinks ul li.active:hover { 
        background-color: #484848; 
        color: #FFFFFF; 
       } 
#navLinks ul li.active { 
    background-color: #333333; 
    color: #FFFFFF; 
    outline-width: 7px; 
} 
#navLinks ul li.active:hover { 
    background-color: #484848; 
    color: #FFFFFF; 
} 
</style> 
</head> 

<body bgcolor='black'> 


<div id="contentContainer"> 
    <div id="wrapper"> 
     <div id="itemOne" class="content"> 

     </div> 
     <div id="itemTwo" class="content"> 

     </div> 
     <div id="itemThree" class="content"> 

     </div> 
     <div id="itemFour" class="content"> 

     </div> 
    </div> 
</div> 
    <div id="navLinks"> 
    <ul> 
     <li class="itemLinks" data-pos="0px"></li> 
     <li class="itemLinks" data-pos="-550px"></li> 
     <li class="itemLinks" data-pos="-1100px"></li> 
     <li class="itemLinks" data-pos="-1650px"></li> 
    </ul> 
</div> 



<script> 
// just querying the DOM...like a boss! 
var links = document.querySelectorAll(".itemLinks"); 
var wrapper = document.querySelector("#wrapper"); 

// the activeLink provides a pointer to the currently displayed item 
var activeLink = 0; 

// setup the event listeners 
for (var i = 0; i < links.length; i++) { 
    var link = links[i]; 
    link.addEventListener('click', setClickedItem, false); 

    // identify the item for the activeLink 
    link.itemID = i; 
} 

// set first item as active 
links[activeLink].classList.add("active"); 

function setClickedItem(e) { 
    removeActiveLinks(); 

    var clickedLink = e.target; 
    activeLink = clickedLink.itemID; 

    changePosition(clickedLink); 
} 

function removeActiveLinks() { 
    for (var i = 0; i < links.length; i++) { 
     links[i].classList.remove("active"); 
    } 
} 

// Handle changing the slider position as well as ensure 
// the correct link is highlighted as being active 
function changePosition(link) { 
    link.classList.add("active"); 

    var position = link.getAttribute("data-pos"); 
    wrapper.style.left = position; 
} 
</script> 
</body> 
</html>