👀 这是我参与「第四届青训营 」笔记创作活动的的第10天!
😀😁😀😁😀😁😀😁😀😁😀😁😀😁😀😁😀😁😀😁😀😁😀😁😀😁😀😁😀😁😀😁😀
🍻1、下拉菜单案例
案例:下拉菜单
案例分析:
(1)导航栏里面的 li 都要有鼠标经过效果,所以需要循环注册鼠标事件。
(2)核心原理: 当鼠标经过 li 里面的第二个孩子 ul 时,显示, 当鼠标离开,则 ul 隐藏。
代码
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="./下拉菜单.css">
</head>
<body>
<ul class="nav">
<li>
<a href="#">新浪微博</a>
<ul>
<li><a href="#">qqqq</a></li>
<li><a href="#">qqqq</a></li>
<li><a href="#">qqqq</a></li>
</ul>
</li>
<li>
<a href="#">新浪微博</a>
<ul>
<li><a href="#">qqqq</a></li>
<li><a href="#">qqqq</a></li>
<li><a href="#">qqqq</a></li>
</ul>
</li>
<li>
<a href="#">新浪微博</a>
<ul>
<li><a href="#">qqqq</a></li>
<li><a href="#">qqqq</a></li>
<li><a href="#">qqqq</a></li>
</ul>
</li>
<li>
<a href="#">新浪微博</a>
<ul>
<li><a href="#">qqqq</a></li>
<li><a href="#">qqqq</a></li>
<li><a href="#">qqqq</a></li>
</ul>
</li>
</ul>
</body>
<script src="./下拉菜单.js"></script>
</html>
CSS
*{
margin: 0;
padding: 0;
}
li{
list-style: none;
}
a{
text-decoration: none;
font-size: 14px;
}
.nav{
margin: 100px;
border-top: 2px solid #ff8500;
}
.nav>li{
position: relative;
float: left;
width: 100px;
height: 41px;
text-align: center;
}
.nav li a{
display: block;
width: 100%;
height: 100%;
line-height: 41px;
color: #333;
}
.nav>li:hover{
background-color: #eee;
}
.nav>li>a:hover{
background-color: #eee;
color: #ff8400;
}
.nav ul{
display: none;
position: absolute;
top: 41px;
left: 0;
width: 100%;
border-left: 1px solid #fecc5b;
border-right: 1px solid #fecc5b;
}
.nav ul li{
border-bottom: 1px solid #fecc5b;
}
.nav ul li a:hover{
background-color: #fff5da;
}
JavaScript
var nav=document.querySelector('.nav');
var lis=nav.children;
for(var i=0;i<lis.length;i++){
lis[i].onmouseover=function(){
this.children[1].style.display='block';
}
lis[i].onmouseout=function(){
this.children[1].style.display='none';
}
}
效果展示
🍻2、仿注册页面框案例
核心思路
-
在点击图标时密码框显示隐藏密码,因此需要获取的事件源为图标和密码框;事件类型为点击眼睛图标onclick;点击后if语句判断密码表单的类型,如果是类型type为password则转变为文本text,图标变为睁眼;如果是类型type为text则转变为文本password,图标变为闭眼。
-
然后判断的事件是表单失去焦点onblur
-
如果输入正确则提示正确的信息
-
如果输入不是6到16位,则提示错误信息
-
因为里面变化样式较多,我们采取className修改样式
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="./密码框.css">
</head>
<body>
<div class="bigbox">
<div class="box">
<label for="">
<img src="./闭眼.png" alt="" class="imgs" id="simgs">
</label>
<input type="password" class="passwords" id="spasswords">
</div>
<div>
<p class="message"></p>
</div>
<div>
<p class="wenzi"></p>
</div>
</div>
</body>
<script src="./密码框.js"></script>
</html>
CSS
*{
box-sizing: border-box;
}
.bigbox{
height: 30px;
width: 1200px;
position: relative;
}
.box{
float: left;
position: relative;
width: 400px;
height: 30px;
border: 1px solid #ccc;
}
.passwords{
width: 350px;
height: 25px;
position: absolute;
top: 3px;
left: 0px;
border: 0;
outline: none;
}
.imgs{
width: 30px;
position:absolute;
right: 10px;
top: 1px;
cursor: pointer;
}
.message{
float: left;
height: 30px;
width: 35px;
text-align: center;
margin: 0;
position: absolute;
top: 0;
line-height: 3px;
left: 402px;
background-image: url();
background-repeat:no-repeat;
background-size: 30px 30px;
background-position: 0 0px;
}
.messageth{
float: left;
height: 30px;
width: 35px;
text-align: center;
margin: 0;
position: absolute;
top: 0;
line-height: 3px;
left: 402px;
background-image: url(./叹号.png);
background-repeat:no-repeat;
background-size: 30px 30px;
background-position: 0 0px;
}
.messagecw{
float: left;
height: 30px;
width: 35px;
text-align: center;
margin: 0;
position: absolute;
top: 0;
line-height: 3px;
left: 402px;
background-image: url(./错误.png);
background-repeat:no-repeat;
background-size: 30px 30px;
background-position: 0 0px;
}
.messagezq{
float: left;
height: 30px;
width: 35px;
text-align: center;
margin: 0;
position: absolute;
top: 0;
line-height: 3px;
left: 402px;
background-image: url(./正确.png);
background-repeat:no-repeat;
background-size: 30px 30px;
background-position: 0 0px;
}
.wenzi{
width: 500px;
height: 30px;
margin: 0;
position: absolute;
left:438px ;
top: 3px;
font-size: 18px;
}
JavaScript
var img_s=document.getElementById('simgs');
var password_S=document.getElementById('spasswords');
var flag=0
img_s.onclick=function(){
if(flag==0){
password_S.type='text';
img_s.src='./睁眼.png';
flag=1;
}
else{
password_S.type='password';
img_s.src='./闭眼.png';
flag=0;
}
}
var ipt=document.querySelector('.passwords');
var message=document.querySelector('.message');
var wenzi=document.querySelector('.wenzi');
ipt.onblur=function(){
if(this.value.length<6 || this.value.length>16){
message.className='message messagecw';
wenzi.innerHTML='输入错误,请输入6~16位密码';
}
else{
message.className='message messagezq';
wenzi.innerHTML='输入正确,祝您注册愉快';
}
}
ipt.onfocus=function(){
message.className='message messageth';
wenzi.innerHTML='请输入6~16位密码';
}
效果展示
🍻3、总结
🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈
今日学习了网页常见的基本布局,学习了css的布局实现,主要学习了如何使用JavaScript来控制页面,使页面成为一个动态效果。这些布局在网页中是常见的,学习这些基本布局可以对我们开发网页有很大的帮助。学习淘宝 京东等页面的布局方式以及效果实现,可以让我们选择更合适的方法来实现网页效果。
🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈