2015-10-07 3 views
0

Перед тем, как поместить html и css, у меня есть 2 проблемы, пожалуйста, держите в себе, что я почти полный любитель в html и css, и понятия не имею, что означает javascript.Javascript Content Slider

Проблема:

  • Моя первая проблема, что Sider содержания, оленья кожа слайд достаточно далеко до следующего содержания, но вместо того, чтобы при нажатии кнопки только приносит содержимое на полпути (вы увидите, что Я имею в виду, когда вы вставляете 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

Вы используете некоторые удивительно огромные divs в этой штуке! Проблема в том, что у вас есть размеры, которые указаны плохо, а используемые вами смещения не соответствуют ширине div в вашем слайдере. Вот скрипка - https://jsfiddle.net/9gpyL6o1/ – Matt

+0

Привет всем благодарю за помощь! Но теперь я только что узнал, в чем проблема с полями, у меня есть 6 навигационных ссылок, но они, похоже, останавливаются примерно на 15% справа от страницы. Также для ползунка контента какой код будет использоваться для его центрирования? – Connor

ответ

2

Основные направления для обновления; 1) ваш "#contentContainer". Это в основном окно вашего слайдера. Высота и ширина необходимо обновить, чтобы соответствовать элементам слайдера. 2) значения «data-pos» ваших элементов списка. Это должно быть таким же, как и их ширина * их индекс начинается с 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, который должен отображаться в строке, попробуйте следующий CSS на DIV, который содержит список (<ul>):

#navLinks { 
      text-align: center; 
      width: 90.5%; 
      border:1px solid white; 
    } 

border:1px solid white; поможет вам увидеть, где ДИВ есть. Затем поэкспериментируйте с меньшим размером padding в #navLinks ul li, чтобы убедиться, что у вас есть место на странице для отображения по горизонтали.

Я считаю, что последний шаг, чтобы настроить <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>