系列课程目录
第十六讲 JavaScript与CSS交互
前言
JavaScript与CSS交互提示:以下是本篇文章正文内容,下面案例可供参考
一、JavaScript与CSS交互
1.style属性
- 通过元素的style属性,可以获取或修改元素的CSS样式

如CSS中,字体大小为font-size, 使用style属性时,需改为fontSize
练习创建三个按钮,对应三种颜色,点击按钮时,将页面背景修改为对应颜色


2.隐藏元素


练习创建一段文本,文本下方放置两个按钮,点击按钮可隐藏/显示上方文本。分别尝试visibility和display两种方式实现


3.修改className更改样式
- 通过修改元素的所属类,并对不同的类设置相应样式,同样可达到更改样式的目的


练习创建一个列表,当鼠标移入列表中某一项时,为该项添加lg-red类(设置如上),鼠标移出时,移除该类

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.lg-red{
font-size: 20px;
color: red;
}
</style>
</head>
<body>
<ul>
<li onmouseenter="mv()" onmouseleave="lv()">苹果</li>
<li onmouseenter="mv()" onmouseleave="lv()">香蕉</li>
<li onmouseenter="mv()" onmouseleave="lv()">橙子</li>
<li onmouseenter="mv()" onmouseleave="lv()">菠萝</li>
</ul>
<script type="text/javascript">
function mv(){
event.target.className="lg-red"
}
function lv(){
event.target.className=""
}
</script>
</body>
</html>
4.拖拽事件
- 将需要拖拽的源对象的dragable属性设为true

- 给目标对象绑定ondragover事件函数,禁用其默认事件行为

源对象
-
ondragstart事件
用户开始拖动元素时触发 -
ondrag事件
元素正在拖动时触发 -
ondragend事件
用户完成元素拖动后触发
目标对象
-
ondragenter事件
当被鼠标拖动的对象进入其容器范围内时触发 -
ondragover事件
当被拖动的对象在容器范围内时触发 -
ondragleave事件
当被拖动的对象离开容器时触发件 -
ondrop事件
源元素被拖入容器内,并且释放鼠标时触发
练习使目标文本变为可拖动状态,让其可以在两个容器之间来回拖动

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.container{
width:200px;
height: 200px;
border: 1px solid black;
margin-top: 20px;
display: flex;
justify-content: center;
align-items: center;
}
</style>
</head>
<body>
<div class="container" ondragover="sj()" ondrop="drop()">
<p draggable="true" ondragstart="drag()">目标文本</p>
</div>
<div class="container" ondragover="sj()" ondrop="drop()">
</div>
<script type="text/javascript">
var qjbl
function sj(){
event.preventDefault();
}
function drag(){
qjbl=event.target
}
function drop(){
event.preventDefault();
event.target.appendChild(qjbl)
}
</script>
</body>
</html>
二、课堂作业
1.按照要求完成任务
如下(示例):


2.解析代码
- 任务16-1
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.error {
border: 2px solid #f95d5d;
box-shadow: 0px 0px 5px 0px #f95d5d;
}
</style>
</head>
<body>
用户名:<input type="text" name="" id="yhm" value="" onchange="check()" /><br>
密码:<input type="password" name="" id="mm" value=""
onchange="mm_check()" /><br>
确认密码:<input type="password" name="" id="qrmm" value="" onchange="mm_check()" /><br>
<input type="button" name="" id="" value="提交" onclick="tj_check()" />
</body>
<script type="text/javascript">
var pattern = /^\w{4,16}$/
var yhm = document.getElementById("yhm")
var mm = document.getElementById("mm")
var qrmm = document.getElementById("qrmm")
function check() {
if (!pattern.test(event.target.value)) {
event.target.className = "error"
} else {
event.target.className = ""
}
}
function mm_check() {
if (mm.value == qrmm.value || qrmm.value == "") {
mm.className = ""
qrmm.className = ""
} else {
qrmm.className = "error"
}
}
function tj_check() {
if (yhm.value == "") {yhm.className="error"}
if (mm.value == "") {mm.className="error"}
if (qrmm.value == "") {qrmm.className="error"}
}
</script>
</html>
- 任务16-2
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
@keyframes f {
0% {
background-color: red;
}
50% {
background-color: darkred;
}
100% {
{
background-color: red;
}
}
}
@keyframes t {
0% {
background-color: green;
}
50% {
background-color: darkgreen;
}
100% {
{
background-color: green;
}
}
}
.container {
width: 200px;
height: 200px;
border: 1px solid black;
margin-top: 20px;
display: flex;
justify-content: center;
align-items: center;
}
#container {
display: flex;
justify-content: space-between;
}
.r1,
.r2,
.r3 {
width: 198px;
height: 198px;
border-radius: 50%;
}
.r1 {
background-color: yellow;
}
.r2 {
background-color: pink;
}
.r3 {
background-color: skyblue;
}
</style>
</head>
<body>
<div id="container">
<div>
<div class="container" ondragover="sj()" ondrop="drop()">
<div class="r1" id="r1" draggable="true" ondragstart="drag()" style="color: yellow;">
</div>
</div>
<div class="container" ondragover="sj()" ondrop="drop()">
<div class="r2" id="r2" draggable="true" ondragstart="drag()" style="color: pink;">
</div>
</div>
<div class="container" ondragover="sj()" ondrop="drop()">
<div class="r3" id="r3" draggable="true" ondragstart="drag()" style="color: skyblue;">
</div>
</div>
</div>
<div>
<div class="container" id="skyblue" ondragover="sj()" ondrop="drop()" value="123"
style="border-color:skyblue;">
</div>
<div class="container" id="pink" ondragover="sj()" ondrop="drop()" value="123"
style="border-color:pink;">
</div>
<div class="container" id="yellow" ondragover="sj()" ondrop="drop()" value="123"
style="border-color:yellow;">
</div>
</div>
</div>
<script type="text/javascript">
var vl
function sj() {
event.preventDefault();
}
function drag() {
vl = event.target
}
function drop() {
event.preventDefault();
event.target.appendChild(vl)
if ((document.getElementById("skyblue").children.length!=0) && (document.getElementById("pink").children.length!=0
) && (document.getElementById("yellow").children.length!=0)) {
if (("r3" == document.getElementById("skyblue").children[0].id) && ("r2" == document.getElementById("pink")
.children[0].id) && ("r1" == document.getElementById("yellow").children[0].id)) {
document.body.style.backgroundColor = "green"
document.body.style.animationName = "t";
document.body.style.animationDuration = "1s";
document.body.style.animationIterationCount = "infinite";
} else {
document.body.style.backgroundColor = "red"
document.body.style.animationName = "f";
document.body.style.animationDuration = "1s";
document.body.style.animationIterationCount = "infinite";
}
}else{
document.body.style.backgroundColor = "white"
document.body.style.animationName = "";
document.body.style.animationDuration = "";
document.body.style.animationIterationCount = "";
}
}
</script>
</body>
</html>
本文介绍了JavaScript如何与CSS进行交互,包括通过style属性修改样式、隐藏和显示元素、切换className以及实现拖拽事件。提供了四个实践案例,涉及背景颜色改变、文本隐藏显示、列表项样式切换和元素拖放功能。同时给出了两个课堂作业,分别是输入验证和颜色变化动画的实现,旨在巩固所学知识。
444

被折叠的 条评论
为什么被折叠?



