js+css+html實現個性化圖片輪播

js+css+html實現個性化圖片輪播

學習js的時候按照教程寫了一點簡單的圖片輪播,後來又發現了很多個性化輪播方式,於是學習借鑑完成了這個波浪式的圖片輪播

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>你笑起來真像好天氣</title>

<style>//css 對於邊框的顏色、大小做定義
	* {
		margin: 0;
		padding: 0;
	}
	li {
		list-style: none;
	}
	.solid {			
		width: 800px;
		height: 360px;
		margin: 150px auto 0;
		box-shadow: 1px 7px 25px #fd8fd9;
	}
	.solid ul {
		height: 100%;
	}
	.solid ul li {
		position: relative;
		float: left;
		box-sizing: border-box;
		transform-style: preserve-3d;
		transform: translateZ(-180px);
	}
	.solid ul li div {
		position: absolute;
		width: 100%;
		height: 100%;
	}
	.solid ul li div:nth-child(1) {
		top: -360px;
		background: url(css//images/02.jpg);
		transform-origin: bottom;
		transform: translateZ(180px) rotateX(90deg);
	}
	.solid ul li div:nth-child(2) {
		top: 360px;
		background: url(css/images/01.jpg);
		transform-origin: top;
		transform: translateZ(180px) rotateX(-90deg);
	}
	.solid ul li div:nth-child(3) {
		background: url(css/images/03.jpg);
		transform: translateZ(180px);
	}
	.solid ul li div:nth-child(4) {
		background: url(css/images/04.jpg);
		transform: translateZ(-180px) rotateX(180deg);
	}
	.solid ol {
		position: absolute;
		left: 50%;
		width: 140px;
		height: 20px;
		transform: translateX(-50%);
		display: flex;
		justify-content: space-around;
	}
	.solid ol li {
		width: 20px;
		height: 20px;
		background: black;
		box-shadow: 0 2px 5px white;
		border-radius: 50%;
		color: white;
		text-align: center;
		/*斜體 12px大小/20px行高*/
		font: italic 12px/20px 'Microsoft Yahei';
		cursor: pointer;
	}
	.solid ol li.on {
		background: red;
	}
</style>

</head>
<body>//html  對圖片序號的顯示

<div class="solid">
	<ul class="oUl"></ul>
	<ol>
		<li class="on">1</li>
		<li>2</li>
		<li>3</li>
		<li>4</li>
	</ol>
</div>

<script >//js  實現輪播
	var solid = document.getElementsByClassName('solid')[0];
	var btn = document.querySelectorAll('ol li');
	var oUl = document.getElementsByClassName('oUl')[0];
	var css = document.getElementsByTagName('style')[0];
	var timer, n = 0;

	createDom();
function createDom() {
    var num = 100, uHTML = '', pHTML = '', tHTML = '';
    var allWidth = parseInt(getComputedStyle(solid, null).width);
    var width = allWidth / num;
    for (var i = 0; i < num; i++) {
        uHTML += '<li><div></div><div></div><div></div><div></div></li>';
        pHTML += '.solid ul li:nth-child(' + (i + 1) + ') div{background-position-x: ' + (-i*width) + 'px;}';
        tHTML += '.solid ul li:nth-child(' + (i + 1) + '){transition: 0.8s ' + (0.3 * i / num) + 's}';
    }
    oUl.innerHTML = uHTML;
    css.innerHTML += pHTML + tHTML  + '.solid ul li, .solid ul li div{width:' + width + 'px;height:100%}';
    bindEvent();
    play();
}

function bindEvent() {
    for (var i = 0; i < btn.length; i++) {
        btn[i].index = i;
        btn[i].onclick = function () {
            n = this.index;
            for (var i = 0; i < btn.length; i++) {
                btn[i].className = '';
            }
            this.className = 'on';
            css.innerHTML += '.solid ul li{transform: translateZ(-180px) rotateX(' + (n * 90) + 'deg);}';
        }
    };
    solid.onmouseenter = function () {
        clearInterval(timer);
    };
    solid.onmouseleave = function () {
        play();
    };
}
function play() {
    clearInterval(timer);
    timer = setInterval(function () {
        n++;
        n %= 4;
        for (var i = 0; i < btn.length; i++) {
            btn[i].className = '';
        }
        btn[n].className = 'on';
        css.innerHTML += '.solid ul li{transform: translateZ(-180px) rotateX(' + (n * 90) + 'deg);}';
    }, 1000);
}
</script>
<br>
<br>
<br>
<br>


</body>
</html>
  • 最終成果展示(不能傳動態圖嗚嗚嗚)
    單張圖片的狀態圖片切換的狀態,可惜不能傳動態圖

歡迎指正錯誤,提出意見。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章