这是一个采用JavaScript编程的一个小的练习,通过点击按钮来使V字进行旋转。并且我们可以通过span来显示我们选中的元素是第几个元素,可以通过选择颜色来改变元素的颜色。
但是,当我们点击按钮之后,元素的颜色和span里面的内容会变为初始值。
因为这个项目主要是采用JavaScript编程,所以Html和CSS部分的代码使用非常简单。
<div id="fs">div>
<input type="button" value="按钮" id="btn">
<span id="sp">您目前没有选中元素span>
<input type="color" value="#FF0000" id="inputColor">
在Html部分,定义一个大的div
,之后会通过插入元素的方式,在这个盒子里面放入五个元素。
按钮部分通过一个type
值为button
的input
来实现。
span
部分通过初始给span
一个innerHtml
,之后会通过JavaScript来改变span中的innerHtml
。
颜色选择器通过一个type
为color
的input
实现,在运行的时候,可以通过改变input
的value
值来改变元素的颜色。
/* 因为CSS部分代码不重要,所以采用叠写的形式 */
input, span
{ float: right; margin: 20px; }
#fs div
{ width: 50px; height: 50px; font-size: 28px;
color: white; background-color: red;
position: absolute; text-align: center;
line-height: 50px; display: none; }
var fs = document.getElementById('fs');
var btn = document.getElementById('btn');
var sp = document.getElementById('sp');
var inputColor =document.getElementById('inputColor');
因为我们并没有在Html
中创建div
元素,所以我们采用在JavaScript
中生成的方式来创建元素,并插入到div(fs)
中。
for (var i = 0; i < 5; i++) {
//创建元素
var oDiv = document.createElement('div');
//在新建的元素中插入数字
oDiv.innerHTML = i;
//插入到fs盒子中
fs.appendChild(oDiv);
}
var allDiv = fs.children;
在按钮事件中,我们需要实现的是点击按钮,然后V字进行旋转。在这里我们需要使用到循环,通过循环来调整V字中元素的位置,达到旋转的效果。
//if-else版循环
num++;
if (num % 4 == 1) {
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].style.left = 50 * i + 'px';
if (i % 4 == 0) {
allDiv[i].style.top = '100px';
} else if (i % 2 == 1) {
allDiv[i].style.top = '50px';
}
else{
allDiv[i].style.top = '0px';
}
}
}
else if (num % 4 == 2) {
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].style.top = i * 50 + 'px';
if (i % 4 == 0) {
allDiv[i].style.left = '0px';
} else if (i % 2 == 1) {
allDiv[i].style.left = '50px';
}
else {
allDiv[i].style.left = '100px';
}
}
}
else if (num % 4 == 3) {
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].style.left = i * 50 + 'px';
if (i % 4 == 0) {
allDiv[i].style.top = '0px'
}
else if (i % 2 == 1) {
allDiv[i].style.top = '50px'
}
else {
allDiv[i].style.top = '100px';
}
}
}
else if (num % 4 == 0) {
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].style.top = i * 50 + 'px';
if (i % 4 == 0) {
allDiv[i].style.left = '100px'
} else if (i % 2 == 1) {
allDiv[i].style.left = '50px'
}
else {
allDiv[i].style.left = '0px'
}
}
}
//switch版循环
switch (num) {
case 0:
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].removeAttribute('style');
allDiv[i].style.display = 'block';
allDiv[i].style.left = 50 * i + 'px';
if (i % 4 == 0) {
allDiv[i].style.top = '100px';
} else if (i % 2 == 1) {
allDiv[i].style.top = '50px';
}
else {
allDiv[i].style.top = '0px';
}
}
num++;
break;
case 1:
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].removeAttribute('style');
allDiv[i].style.display = 'block';
allDiv[i].style.top = i * 50 + 'px';
if (i % 4 == 0) {
allDiv[i].style.left = '0px';
} else if (i % 2 == 1) {
allDiv[i].style.left = '50px';
}
else {
allDiv[i].style.left = '100px';
}
}
num++;
break;
case 2:
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].removeAttribute('style');
allDiv[i].style.display = 'block';
allDiv[i].style.left = i * 50 + 'px';
if (i % 4 == 0) {
allDiv[i].style.top = '0px';
} else if (i % 2 == 1) {
allDiv[i].style.top = '50px';
}
else {
allDiv[i].style.top = '100px';
}
}
num++;
break;
case 3:
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].removeAttribute('style');
allDiv[i].style.display = 'block';
allDiv[i].style.top = i * 50 + 'px';
if (i % 4 == 0) {
allDiv[i].style.left = '100px'
} else if (i % 2 == 1) {
allDiv[i].style.left = '50px'
}
else {
allDiv[i].style.left = '0px'
}
}
num = 0;
break;
}
当我们选中元素的时候,span元素里面的内容会随之改变。
当我们选中元素的时候,如果改变inputColor的value值,盒子元素的颜色也会随之改变。
for (var i = 0; i < allDiv.length; i++) {
//可以在js对象里面看见
allDiv[i].index = i;
allDiv[i].onclick = function () {
needDOM = this;
sp.innerHTML = "您选中的是" + this.index + "号元素"
}
}
inputColor.oninput = function () {
if (needDOM = '') {
alert('您还没有选择到元素');
return;
} else {
needDOM.style.backgroundColor = this.value;
}
}
当我们点击按钮的时候,盒子元素和span元素会初始化,这里我们就需要在点击事件里面加入实现还原效果的代码。
sp.innerHTML = "您没有选中元素";
inputColor.value = '#ff0000';
<style>
* {
margin: 0px;
padding: 0px;
}
input,
span {
float: right;
margin: 20px;
}
#fs div {
width: 50px;
height: 50px;
font-size: 28px;
color: white;
background-color: red;
position: absolute;
text-align: center;
line-height: 50px;
display: none;
}
style>
<body>
<div id="fs">div>
<input type="button" value="按钮" id="btn">
<span id="sp">您目前没有选中元素span>
<input type="color" value="#FF0000" id="inputColor">
body>
<script>
var fs = document.getElementById('fs');
var btn = document.getElementById('btn');
var sp = document.getElementById('sp');
var inputColor = document.getElementById('inputColor');
for (var i = 0; i < 5; i++) {
var oDiv = document.createElement('div');
oDiv.innerHTML = i;
fs.appendChild(oDiv);
}
var allDiv = fs.children;
var needDOM = '';
//元素事件
for (var i = 0; i < allDiv.length; i++) {
//可以在js对象里面看见
allDiv[i].index = i;
allDiv[i].onclick = function () {
needDOM = this;
sp.innerHTML = "您选中的是" + this.index + "号元素"
}
}
inputColor.oninput = function () {
if (needDOM = '') {
alert('您还没有选择到元素');
return;
} else {
needDOM.style.backgroundColor = this.value;
}
}
// 按钮事件
var num = 0;
btn.onclick = function () {
sp.innerHTML = "您没有选中元素";
inputColor.value = '#ff0000';
// if-else版的V字旋转
/*
num++;
if (num % 4 == 1) {
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].style.left = 50 * i + 'px';
if (i % 4 == 0) {
allDiv[i].style.top = '100px';
} else if (i % 2 == 1) {
allDiv[i].style.top = '50px';
}
else{
allDiv[i].style.top = '0px';
}
}
}
else if (num % 4 == 2) {
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].style.top = i * 50 + 'px';
if (i % 4 == 0) {
allDiv[i].style.left = '0px';
} else if (i % 2 == 1) {
allDiv[i].style.left = '50px';
}
else {
allDiv[i].style.left = '100px';
}
}
}
else if (num % 4 == 3) {
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].style.left = i * 50 + 'px';
if (i % 4 == 0) {
allDiv[i].style.top = '0px'
}
else if (i % 2 == 1) {
allDiv[i].style.top = '50px'
}
else {
allDiv[i].style.top = '100px';
}
}
}
else if (num % 4 == 0) {
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].style.top = i * 50 + 'px';
if (i % 4 == 0) {
allDiv[i].style.left = '100px'
} else if (i % 2 == 1) {
allDiv[i].style.left = '50px'
}
else {
allDiv[i].style.left = '0px'
}
}
} */
//switch版本的V字旋转
switch (num) {
case 0:
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].removeAttribute('style');
allDiv[i].style.display = 'block';
allDiv[i].style.left = 50 * i + 'px';
if (i % 4 == 0) {
allDiv[i].style.top = '100px';
} else if (i % 2 == 1) {
allDiv[i].style.top = '50px';
}
else {
allDiv[i].style.top = '0px';
}
}
num++;
break;
case 1:
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].removeAttribute('style');
allDiv[i].style.display = 'block';
allDiv[i].style.top = i * 50 + 'px';
if (i % 4 == 0) {
allDiv[i].style.left = '0px';
} else if (i % 2 == 1) {
allDiv[i].style.left = '50px';
}
else {
allDiv[i].style.left = '100px';
}
}
num++;
break;
case 2:
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].removeAttribute('style');
allDiv[i].style.display = 'block';
allDiv[i].style.left = i * 50 + 'px';
if (i % 4 == 0) {
allDiv[i].style.top = '0px';
} else if (i % 2 == 1) {
allDiv[i].style.top = '50px';
}
else {
allDiv[i].style.top = '100px';
}
}
num++;
break;
case 3:
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].removeAttribute('style');
allDiv[i].style.display = 'block';
allDiv[i].style.top = i * 50 + 'px';
if (i % 4 == 0) {
allDiv[i].style.left = '100px'
} else if (i % 2 == 1) {
allDiv[i].style.left = '50px'
}
else {
allDiv[i].style.left = '0px'
}
}
num = 0;
break;
}
}
script>