Problem z działaniem gotowego slidera

Problem z działaniem gotowego slidera
Sandra
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 223
0

Pierwszy raz próbuje użyć JS'a i generalnie czegokolwiek w robieniu stron poza html/css.
Mam gotowy kod slidera tekstu znaleziony na codepen.
Jest tam użyty Owl Carousel. To był w sumie jedyny element, który trzeba było pobrać i dołożyć tam samemu.
Niestety nijak nie umiem sprawić żeby animacja zaczęła działać. Siedzę czytam próbuje ogarnąć ale nie wiem.

Bardzo proszę wskażcie mi albo naprowadźcie chociaż co zrobiłam źle.

Html

Kopiuj
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="testcss.css" type="text/css"/>
<link rel="stylesheet" href="owl.carousel.min.css">
<link rel="stylesheet" href="owl.theme.default.min.css">
<script src="testjs.js"></script>


<body>
	<div class="owl-carousel">
<div id="carousel">
  <div class="btn-bar">
    <div id="buttons"><a id="prev" href="#"><</a><a id="next" href="#">></a> </div></div>
    <div id="slides">
        <ul>
            <li class="slide">
                <div class="quoteContainer">
                    <p class="quote-phrase"><span class="quote-marks">"</span> I was literally BLOWN AWAY by Company A's work! They went above and beyond all of our expectations with design, usability. and branding, I will reccommend them to everyone I know!<class="quote-marks">"</span>

                    </p>
                </div>
                <div class="authorContainer">
                    <p class="quote-author">John Doe // Local Business Owner</p>
                </div>
            </li>
            <li class="slide">
                <div class="quoteContainer">
                    <p class="quote-phrase"><span class="quote-marks">"</span>
                      I could not stop staring! Company A's Web Solutions are by far the most elegant solutions, you can't beat their quality and attention to detail!
                    <span class="quote-marks">"</span>

                    </p>
                </div>
                <div class="authorContainer">
                    <p class="quote-author">Andy Fakename // CEO: Andy's Camping Supplies</p>
                </div>
            </li>
            <li class="slide">
                <div class="quoteContainer">
                    <p class="quote-phrase"><span class="quote-marks">"</span>Carl Fakeguy, was the most helpful designer I've ever hired. He listened to my ideas and advised against things that could negatively affect my CEO. Company A is by far the most generous and helpful company, 5/5!<span class="quote-marks">"</span>

                    </p>
                </div>
                <div class="authorContainer">
                    <p class="quote-author">Janice Falsename</p>
                </div>
            </li>
        </ul>
    </div>
    </div>
   <script src="jquery.min.js"></script>
<script src="owl.carousel.min.js"></script>
  </body>
  </html>

CSS

Kopiuj
body{
background:#E96D65;
}

#carousel {
position: relative;
width:60%;
margin:0 auto;
}

#slides {
overflow: hidden;
position: relative;
width: 100%;
height: 250px;
}

#slides ul {
list-style: none;
width:100%;
height:250px;
margin: 0;
padding: 0;
position: relative;
}

 #slides li {
width:100%;
height:250px;
float:left;
text-align: center;
position: relative;
font-family:lato, sans-serif;
}
/* Styling for prev and next buttons */
.btn-bar{
    max-width: 346px;
    margin: 0 auto;
    display: block;
    position: relative;
    top: 40px;
    width: 100%;
}

 #buttons {
padding:0 0 5px 0;
float:right;
}

#buttons a {
text-align:center;
display:block;
font-size:50px;
float:left;
outline:0;
margin:0 60px;
color:#b14943;
text-decoration:none;
display:block;
padding:9px;
width:35px;
}

a#prev:hover, a#next:hover {
color:#FFF;
text-shadow:.5px 0px #b14943;  
}

.quote-phrase, .quote-author {
font-family:sans-serif;
font-weight:300;
display: table-cell;
vertical-align: middle;
padding: 5px 20px;
font-family:'Lato', Calibri, Arial, sans-serif;
}

.quote-phrase {
height: 200px;
font-size:24px;
color:#FFF;
font-style:italic;
text-shadow:.5px 0px #b14943;  
}

.quote-marks {
font-size:30px;
padding:0 3px 3px;
position:inherit;
}

.quote-author {
font-style:normal;
font-size:20px;
color:#b14943;
font-weight:400;
height: 30px;
}

.quoteContainer, .authorContainer {
display: table;
width: 100%;
}

JS

Kopiuj
$(document).ready(function () {
    $(".owl-carousel").owlCarousel();
    
    //rotation speed and timer
    var speed = 5000;
    
    var run = setInterval(rotate, speed);
    var slides = $('.slide');
    var container = $('#slides ul');
    var elm = container.find(':first-child').prop("tagName");
    var item_width = container.width();
    var previous = 'prev'; //id of previous button
    var next = 'next'; //id of next button
    slides.width(item_width); //set the slides to the correct pixel width
    container.parent().width(item_width);
    container.width(slides.length * item_width); //set the slides container to the correct total width
    container.find(elm + ':first').before(container.find(elm + ':last'));
    resetSlides();
    
    
    //if user clicked on prev button
    
    $('#buttons a').click(function (e) {
        //slide the item
        
        if (container.is(':animated')) {
            return false;
        }
        if (e.target.id == previous) {
            container.stop().animate({
                'left': 0
            }, 1500, function () {
                container.find(elm + ':first').before(container.find(elm + ':last'));
                resetSlides();
            });
        }
        
        if (e.target.id == next) {
            container.stop().animate({
                'left': item_width * -2
            }, 1500, function () {
                container.find(elm + ':last').after(container.find(elm + ':first'));
                resetSlides();
            });
        }
        
        //cancel the link behavior            
        return false;
        
    });
    
    //if mouse hover, pause the auto rotation, otherwise rotate it    
    container.parent().mouseenter(function () {
        clearInterval(run);
    }).mouseleave(function () {
        run = setInterval(rotate, speed);
    });
    
    
    function resetSlides() {
        //and adjust the container so current is in the frame
        container.css({
            'left': -1 * item_width
        });
    }
    
});
//a simple function to click next link
//a timer will call this function, and the rotation will begin

function rotate() {
    $('#next').click();
}
DE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 50
1

Najpierw zamknij sekcje head w pliku HTML. Bo ją otwierasz "<head>", ale nigdzie nie widzę zamknięcia "</head>". Następnie, importujesz skrypt JS (testjs.js) który korzysta z jQuery, ale nie masz jeszcze zaimportowanej jQuery. Musisz najpierw zaimportować jQuery, potem skrypty które z niej korzystają. Dopytam tylko czy wszystkie pliki znajdują się w tym samy pliku co HTML. Chodzi mi o pliki: CSS: owl.carousel.min.css, owl.theme.default.min.css, testcss.css. JS: jquery.min.js, owl.carousel.min.js, testjs.js. Popracuj również nad wcięciami w HTML. Bo ciężko się to czytam.
Niedawno na forum był podobny temat, możesz zajrzeć: https://4programmers.net/Forum/JavaScript/325264-jak_powinien_wygladac_pelny_kod_programu_karuzeli_slajdera_ponizej

Haskell
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4700
0

Zazwyczaj wystarczy włączyć konsolę w Chrome i od razu widać co się dzieje. Jeżeli nadal nie widać albo komunikat jest niejasny to odpala się debugger, którego obsługa w Chrome jest bajecznie prosta.

Sandra
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 223
0
debug napisał(a):

Najpierw zamknij sekcje head w pliku HTML. Bo ją otwierasz "<head>", ale nigdzie nie widzę zamknięcia "</head>". Następnie, importujesz skrypt JS (testjs.js) który korzysta z jQuery, ale nie masz jeszcze zaimportowanej jQuery. Musisz najpierw zaimportować jQuery, potem skrypty które z niej korzystają. Dopytam tylko czy wszystkie pliki znajdują się w tym samy pliku co HTML. Chodzi mi o pliki: CSS: owl.carousel.min.css, owl.theme.default.min.css, testcss.css. JS: jquery.min.js, owl.carousel.min.js, testjs.js. Popracuj również nad wcięciami w HTML. Bo ciężko się to czytam.
Niedawno na forum był podobny temat, możesz zajrzeć: https://4programmers.net/Forum/JavaScript/325264-jak_powinien_wygladac_pelny_kod_programu_karuzeli_slajdera_ponizej

Domknęłam sekcję dzięki za uwagę. Przeoczyłam zupełnie. Dodałam jQuery przed importem testjs.js

Kopiuj

<link rel="stylesheet" href="owl.carousel.min.css">
<link rel="stylesheet" href="owl.theme.default.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script src="testjs.js"></script>

Wszystkie pliki znajdują się w jednym folderze.

Sandra
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 223
0
Haskell napisał(a):

Zazwyczaj wystarczy włączyć konsolę w Chrome i od razu widać co się dzieje. Jeżeli nadal nie widać albo komunikat jest niejasny to odpala się debugger, którego obsługa w Chrome jest bajecznie prosta.

W konsoli wyskakuje mi, że nie spodziewał się otrzymać "var" w pliku testjs.js. Wszystkie var czyta poprawnie poza pierwszym, które nawet nie dostaje stylowania (pozostaje białe w programie chociaż pozostałe mają kolor niebieski). Nie wiem czemu tak się dzieje to zwykła zmienna. Chodzi o ten fragment

Kopiuj
**var **speed = 5000;
    var run = setInterval(rotate, speed);
    var slides = $('.slide');

Pierwsze var mu nie pasuje.

Niestety nie wiem czemu. Oczekiwał wyrażenia dostał zmienną. Ale jakiego wyrażenia?
Początek jest zgodnie z tym co przeczytałam w dokumentacji do carousel.

Sandra
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 223
0

Okej już sobie poradziłam dzięki :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.