gpt4 book ai didi

javascript - vanilla JS将鼠标悬停在div上更改背景颜色

转载 作者:行者123 更新时间:2023-11-28 03:14:15 29 4
gpt4 key购买 nike

我正在构建一个类似于 eclipse 刻草图的交互式网格。我已经设置了网格,现在正在尝试设置“悬停”效果,以便当鼠标经过网格 div 时改变颜色,从而像钢笔一样在网格中留下(像素化)轨迹。但我希望颜色根据单击的按钮而改变;即,当您悬停时,黑色按钮会留下黑色轨迹,彩虹会留下彩虹轨迹,重置会清除网格。

<head> 
<title> Claudias Etch-A-Sketch</title>
<link rel= "stylesheet" href="style.css">

</head>
<body>
<section class="black">
<h1><center> Claudia Etch-A-Sketch!</center></h1>
</section>

<section>
<div class="buttons">
<button id="rainbow">Rainbow</button>
<button id="black">Black</button>
<button id="reset">Reset</button>
</div>
</section>
<section>
<div id="container"> </div>
</section>
</body>


<script src="javascript.js"></script>
const container = document.getElementById("container");
const btnReset = document.getElementById("reset");
const btnBlack = document.getElementById("black");
const btnRainbow = document.getElementById("rainbow");

function makeRows(rows, cols) {
container.style.setProperty('--grid-rows', rows);
container.style.setProperty('--grid-cols', cols);
for (c = 0; c < (rows * cols); c++) {
let cell = document.createElement("div");

container.appendChild(cell).className = "grid-item";
};
};

makeRows(16, 16);
:root {
--grid-cols: 1;
--grid-rows: 1;
}

#container {
display: grid;
grid-template-rows: repeat(var(--grid-rows), 1fr);
grid-template-columns: repeat(var(--grid-cols), 1fr);
}

.grid-item {
height: 30px;
width: 30px;
border: 1px solid #ddd;
text-align: center;
}

.black {
background-color: black;
}

h1 {
color: white;
}

最佳答案

既然你想要一条轨迹,你需要永久地改变颜色,而不仅仅是在悬停时改变颜色,所以你需要使用javascript。

当您使用以下命令创建网格时,向每个网格项添加一个事件监听器:

cell.addEventListener('mouseover', 
e => e.target.classList.add('my-colour-class')
)

然后确保您的 my-colour-class 具有适当的样式

.my-color-class {
background-colour: blue;
}

注意,要更改所应用的类(根据选择的笔更改轨迹颜色),请将当前颜色存储在状态变量中并拥有一个 map ,例如

let currentColor = 'black'

const colors = { black: 'black' }

e => e.target.classList.add(colors[currentColor])

关于javascript - vanilla JS将鼠标悬停在div上更改背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59793332/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com