File tree Expand file tree Collapse file tree
Projects/University Landing Page Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ * {
2+ margin : 0 ;
3+ padding : 0 ;
4+ box-sizing : border-box;
5+ }
6+
7+ body {
8+ height : 100vh ;
9+ display : grid;
10+ place-items : center;
11+ }
12+
13+ .slider {
14+ width : 100% ;
15+ max-width : 800px ;
16+ height : 350px ;
17+ position : relative;
18+ /* overflow: hidden; <=== */
19+ border-radius : 15px ;
20+ margin : 20px 10px ;
21+ }
22+
23+ .slide {
24+ width : 100% ;
25+ max-width : 800px ;
26+ height : 350px ;
27+ position : absolute;
28+ transition : all 0.5s ;
29+ border-radius : 15px ;
30+ padding : 10px ;
31+ }
32+
33+ .slide img {
34+ width : 100% ;
35+ height : 100% ;
36+ object-fit : cover;
37+ }
38+
39+ .btn {
40+ position : absolute;
41+ width : 40px ;
42+ height : 40px ;
43+ padding : 10px ;
44+ border : none;
45+ border-radius : 50% ;
46+ z-index : 10px ;
47+ cursor : pointer;
48+ background-color : # fff ;
49+ font-size : 18px ;
50+ }
51+ .btn : active {
52+ transform : scale (1.1 );
53+ }
54+ .btn-prev {
55+ top : 45% ;
56+ left : 2% ;
57+ }
58+
59+ .btn-next {
60+ top : 45% ;
61+ right : 2% ;
62+ }
63+ * {
64+ margin : 0 ;
65+ padding : 0 ;
66+ box-sizing : border-box;
67+ }
68+
69+ body {
70+ height : 100vh ;
71+ display : grid;
72+ place-items : center;
73+ }
74+
75+ .slider {
76+ width : 100% ;
77+ max-width : 800px ;
78+ height : 350px ;
79+ position : relative;
80+ overflow : hidden; /* <=== */
81+ border-radius : 15px ;
82+ }
83+
84+ .slide {
85+ width : 100% ;
86+ max-width : 800px ;
87+ height : 350px ;
88+ position : absolute;
89+ transition : all 0.5s ;
90+ }
91+
92+ .slide img {
93+ width : 100% ;
94+ height : 100% ;
95+ object-fit : cover;
96+ }
97+
98+ .btn {
99+ position : absolute;
100+ width : 40px ;
101+ height : 40px ;
102+ padding : 10px ;
103+ border : none;
104+ border-radius : 50% ;
105+ z-index : 10px ;
106+ cursor : pointer;
107+ background-color : # fff ;
108+ font-size : 18px ;
109+ }
110+ .btn : active {
111+ transform : scale (1.1 );
112+ }
113+ .btn-prev {
114+ top : 45% ;
115+ left : 2% ;
116+ }
117+
118+ .btn-next {
119+ top : 45% ;
120+ right : 2% ;
121+ }
122+
Original file line number Diff line number Diff line change 1+ // Select all slides
2+ const slides = document . querySelectorAll ( ".slide" ) ;
3+
4+ // loop through slides and set each slides translateX
5+ slides . forEach ( ( slide , indx ) => {
6+ slide . style . transform = `translateX(${ indx * 100 } %)` ;
7+ } ) ;
8+
9+ // select next slide button
10+ const nextSlide = document . querySelector ( ".btn-next" ) ;
11+
12+ // current slide counter
13+ let curSlide = 0 ;
14+ // maximum number of slides
15+ let maxSlide = slides . length - 1 ;
16+
17+ // add event listener and navigation functionality
18+ nextSlide . addEventListener ( "click" , function ( ) {
19+ // check if current slide is the last and reset current slide
20+ if ( curSlide === maxSlide ) {
21+ curSlide = 0 ;
22+ } else {
23+ curSlide ++ ;
24+ }
25+
26+ // move slide by -100%
27+ slides . forEach ( ( slide , indx ) => {
28+ slide . style . transform = `translateX(${ 100 * ( indx - curSlide ) } %)` ;
29+ } ) ;
30+ } ) ;
31+
32+ // select next slide button
33+ const prevSlide = document . querySelector ( ".btn-prev" ) ;
34+
35+ // add event listener and navigation functionality
36+ prevSlide . addEventListener ( "click" , function ( ) {
37+ // check if current slide is the first and reset current slide to last
38+ if ( curSlide === 0 ) {
39+ curSlide = maxSlide ;
40+ } else {
41+ curSlide -- ;
42+ }
43+
44+ // move slide by 100%
45+ slides . forEach ( ( slide , indx ) => {
46+ slide . style . transform = `translateX(${ 100 * ( indx - curSlide ) } %)` ;
47+ } ) ;
48+ } ) ;
You can’t perform that action at this time.
0 commit comments