<div class="bigbox"> <div class="smallbox"> <ul> <li> <div class="inner_content"><img src="http://via.placeholder.com/600x300" alt=""></div> <div class="inner_message"> <h2>this is a title</h2> <p>Lorem ipsum dolor sit amet.</p> <p>Lorem ipsum dolor sit amet.</p> <p>Lorem ipsum dolor sit amet.</p> </div> </li> <li> <div class="inner_content"><img src="http://via.placeholder.com/600x300" alt=""></div> <div class="inner_message"> <h2>this is a title</h2> <p>Lorem ipsum dolor sit amet.</p> <p>Lorem ipsum dolor sit amet.</p> <p>Lorem ipsum dolor sit amet.</p> </div> </li> <li> <div class="inner_content"><img src="http://via.placeholder.com/600x300" alt=""></div> <div class="inner_message"> <h2>this is a title</h2> <p>Lorem ipsum dolor sit amet.</p> <p>Lorem ipsum dolor sit amet.</p> <p>Lorem ipsum dolor sit amet.</p> </div> </li> <li> <div class="inner_content"><img src="http://via.placeholder.com/600x300" alt=""></div> <div class="inner_message"> <h2>this is a title</h2> <p>Lorem ipsum dolor sit amet.</p> <p>Lorem ipsum dolor sit amet.</p> <p>Lorem ipsum dolor sit amet.</p> </div> </li> <li> <div class="inner_content"><img src="http://via.placeholder.com/600x300" alt=""></div> <div class="inner_message"> <h2>this is a title</h2> <p>Lorem ipsum dolor sit amet.</p> <p>Lorem ipsum dolor sit amet.</p> <p>Lorem ipsum dolor sit amet.</p> </div> </li> <li> <div class="inner_content"><img src="http://via.placeholder.com/600x300" alt=""></div> <div class="inner_message"> <h2>this is a title</h2> <p>Lorem ipsum dolor sit amet.</p> <p>Lorem ipsum dolor sit amet.</p> <p>Lorem ipsum dolor sit amet.</p> </div> </li> <li> <div class="inner_content"><img src="http://via.placeholder.com/600x300" alt=""></div> <div class="inner_message"> <h2>this is a title</h2> <p>Lorem ipsum dolor sit amet.</p> <p>Lorem ipsum dolor sit amet.</p> <p>Lorem ipsum dolor sit amet.</p> </div> </li> </ul> </div> <div class="arrow_left"><</div> <div class="arrow_right">></div> </div>
1 *{ 2 margin: 0; 3 padding: 0; 4 } 5 img{ 6 width: 100%; 7 height: auto; 8 } 9 .bigbox{ 10 position: relative; 11 } 12 .smallbox{ 13 width: 100%; 14 overflow: hidden; 15 } 16 .smallbox ul{ 17 width: 400%; 18 /*取决你放几屏幕的宽度*/ 19 } 20 .smallbox ul li{ 21 width: 12.5%; 22 /*取决你的一屏幕下的需要展示的数目*/ 23 /*因为demo是四屏幕,100/4/2*/ 24 float: left; 25 overflow: hidden; 26 } 27 .inner_content,.inner_message{ 28 float: left; 29 width: 50%; 30 } 31 .arrow_left{ 32 position: absolute; 33 top:50%; 34 left: 0; 35 font-size:2em; 36 transform: translateY(-50%); 37 } 38 .arrow_right{ 39 position: absolute; 40 top: 50%; 41 right: 0; 42 font-size: 2em; 43 transform: translateY(-50%); 44 } 45 @media screen and (max- 900px){ 46 /*写媒体查询的时候记得要先在head标签声明好视口*/ 47 .smallbox ul li{ 48 width: 14.285714%; 49 } 50 .smallbox ul{ 51 width: 700%; 52 } 53 .arrow_left,.arrow_right{ 54 display: none; 55 } 56 }
1 var smallbox_width = document.querySelector(".smallbox").offsetWidth; 2 var smallbox_ul = document.querySelector(".smallbox ul"); 3 var arrow_right = document.querySelector(".arrow_right"); 4 var arrow_left = document.querySelector(".arrow_left"); 5 smallbox_ul.style.position="relative"; 6 smallbox_ul_width = smallbox_ul.offsetWidth; 7 // ul滑块的总的宽度 8 screenWidth = window.screen.width; 9 // 屏幕的宽度,原本想利用滑块的宽度除以屏幕的宽度得到需要的屏幕数,用来给index定值,可是好像获取的屏幕像素和实际预期的居然不一样!!! 10 var index =0; 11 12 arrow_right.onclick=towardRight; 13 arrow_left.onclick=towardLeft; 14 tapEvents(smallbox_ul); 15 console.log(screenWidth) 16 console.log(smallbox_ul_width) 17 function tapEvents(obj){ 18 var startX = null; 19 var endX = null; 20 obj.addEventListener("touchstart",function(e){ 21 startX = e.touches[0].clientX; 22 }); 23 obj.addEventListener("touchmove",function(e){ 24 endX = e.touches[0].clientX - startX-30; 25 }); 26 obj.addEventListener("touchend",function(){ 27 if(endX>0){ 28 towardLeft(); 29 }else{ 30 towardRight(); 31 } 32 }) 33 } 34 function towardLeft(){ 35 index--; 36 if(index<0){ 37 index = Math.ceil(smallbox_ul_width/smallbox_width)-1; 38 } 39 move_box(smallbox_ul,-index*smallbox_width); 40 } 41 function towardRight(){ 42 index++; 43 if(index>(Math.ceil(smallbox_ul_width/smallbox_width)-1)){ 44 index=0; 45 } 46 move_box(smallbox_ul,-index*smallbox_width); 47 } 48 49 50 function move_box(ele,target){ 51 var timer = null; 52 clearInterval(timer); 53 timer = setInterval(fn1,20); 54 function fn1(){ 55 var step = ele.offsetLeft - target>0?-10:10; 56 var val = ele.offsetLeft - target; 57 ele.style.left = ele.offsetLeft +step+"px"; 58 if(Math.abs(val)<=step){ 59 ele.style.left = target+"px"; 60 clearInterval(timer); 61 } 62 } 63 }