目录

1.补充:CSS中的弹性盒子

2.JS中json的序列化

3.JS中的BOM操作

  3.1 location操作

  3.2 计时器

4.JS中的DOM操作

  4.1 创建标签

  4.2 查找标签

  4.3 文本操作

  4.4 值操作

  4.5 事件

5.用CSS实现小米商城导航栏+主内容部分

补充:CSS中的弹性盒子

弹性盒子的作用:和line-height一样,可以将内容进行垂直居中显示,并且在使用效果上比line-height更好用

/* css效果 */
.c1{
height: 100px;
width: 400px;
border: 1px solid red;
/* 弹性盒子做垂直居中效果 */
display: flex;
align-items: center;
}
<!-- html部分 -->
<div class="c1">
<span>xx</span>
<a href="">kk</a>
<img src="mi-logo.png" alt="" style="background-color: red">
</div>

实现效果如下图所示

JS中json的序列化

d = {"name":"libolun",age:18}
var d_json = JSON.stringify(d); // 序列化 相当于python中的dumps
var c = JSON.parse(d_json); // 反序列化 相当于python中的loads

JS中的BOM操作

location操作

location.href;  // 获取当前页面的地址
location.href = 'http://www.baidu.com'; // 跳转到这个网址上
location.reload(); // 刷新当前页面

计时器

var t = setTimeout(function(){console.log('xxx')},3000); // 设置定时器 3000ms后执行function 就一次
clearTimeout(t); // 清除定时器Timeout
var t = setInterval(function(){console.log('xxx')},2000);// 设置定时器 2000ms后执行function 循环
clearInterval(t); // 清除定时器Interval

计时器的示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.c1{
background-color: red;
height: 100px;
width: 100px;
}
/* 相同的属性会覆盖 */
.c2{
background-color: blue; } </style>
</head>
<body>
<div class="c1" id="d1"></div>
</body> <script>
var t = setInterval(function ()
var dEle = document.getElementById('d1');// 获取的是id为d1的那个div语句
dEle.classList.toggle('c2'); // 将div中class切换成c2
/* 如果此时检测div中的类是c1 那么就切换成c2
如果此时检测div中的类是c2 那么就删除类c2 切换成c1*/
},100)
</script>
</html>

JS中的DOM操作

DOM:文档对象模型 -- 操作html

创建标签

var dEle = document.createElement('a'); // dEle的值是<a></a>

查找标签

直接查找选择器

1.元素选择器

var h = document.getElementsByTagName('h1');// h是个数组:HTMLCollection [h1]
var h = document.getElementsByTagName('h1')[0]; // 索引取值获取标签对象h1

2.类值选择器

var s = document.getElementsByClassName('c1'); // 结果也是数组:HTMLCollection[div.c1]
var s = document.getElementsByClassName('c1')[1]; // 索引取值获取到c1类所对应的标签对象div

3.id选择器

var a = document.getElementById('xx'); // 因为id不能重复,所以直接获取到对应id的标签对象

间接查找选择器

var div1 = document.getElementsByClassName('c1')[0];
div1.nextElementSibling; // 找下一个兄弟标签对象
div1.nextElementSibling.style.color = 'red'; // 找下一个兄弟标签,并改了色
div1.previousElementSibling; // 找上一个兄弟标签对象
div1.firstElementChild; // 找第一个儿子
div1.lastElementChild; // 找最后一个儿子
div1.children; // 找所有儿子,是一个数组
div1.parentElement; // 找到自己的父级标签

文本操作

innerText

// 获取文本内容(只获取文本内容,不带标签)
/* 例如<span>111</span> :获取的就是111 */
var h = document.getElementsByTagName('h1')[0];
h.innerText; // 设置文本内容
h.innerText = 'xxx' // 只能设置文本内容
h.innerText = '<a href="">百度</a>' //不能生成标签效果

innerHTML

// 获取内容(连带着标签都获取)
var h = document.getElementsByTagName('h1')[0];
h.innerHTML // 设置文本内容
h.innerHTML = '<a href="">百度</a>'; // 能够生成标签效果

值操作

值操作语法:标签对象.value;

值操作的示例

用户在输入框输入内容,如果长度小于5 在输入框右边会有红字‘炒米饭’

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
用户名:<input type="text" id="username" onblur="f1(this);">
<span id="error" style="color:Red;font-size: 12px;"></span>
</body> <script> function f1(ths){
// console.log(ths); ths是input标签对象
var username = ths.value ;// 通过input标签对象获取到输入框中输入的内容
// console.log(ths.value); ths.value是用户在输入框输入的内容“
if (username.length < 5){ // 如果输入内容的长度小于5
var spa = document.getElementById('error'); // 获取id为error的标签对象span
spa.innerText = '炒米饭';// 将span里面的内容改为‘炒米饭’
}
}
</script>
</html>

事件

什么是事件:捕获用户行为,触发相应的动作

常用的事件有哪些:

  1.onblur 失去光标时触发的事件

  2.onfocus 获取光标时触发的事件

  3.onclick 左键单击事件

  4.onchange 域内容发生变化时触发的事件

类值操作

var d = document.getElementById('d1');
d.classList; // 查看类值
d.classList.add('ppp'); // 添加类值
d.classList.remove('ppp'); // 删除类值
d.classList.toggle('pppp'); // 切换 有就删除 没有就添加

style样式操作示例

格式:标签对象.style.backgroundColor = 'blue';

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.c1{
background-color: red;
height: 200px;
width: 200px;
}
.c2{
background-color: blue;
}
.c3{
background-color: yellow;
}
</style>
</head>
<body>
<!-- 事件绑定:方式2(不常用 )-->
<input type="text" id="username" onblur="f1(this);" onfocus="f2(this);">
<span id="error" style="color:Red;font-size: 12px;"></span>
<div id="d1" class="c1 xx oo"></div>
</body> <script>
// 输入框长度小于5 失去光标后 提示红字'黄焖鸡米饭'
function f1(ths){
var username = ths.value ;
if (username.length < 5){
var spa = document.getElementById('error');
spa.innerText = '黄焖鸡米饭';
}
} // 获取光标时 取消红字显示 将input的下一个标签的内容设置为空
function f2(ths){
ths.nextElementSibling.innerText = '';
} var d1 = document.getElementById('d1');
// 事件绑定:方式1
d1.onclick = function (){
// this就是当前绑定事件的标签对象
// css样式操作
// this.style.backgroundColor = 'blue'; // 当点击到d1这个id对应的标签(div)时,将d1对应标签的类c1替换成c2
this.classList.toggle('c2'); // 当点击到username这个id对应标签(input)时,将username对应标签的类替换成c3
var u = document.getElementById('username');
u.classList.toggle('c3') } </script> </html>

onchange事件示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.c1{
background-color: red;
height: 200px;
width: 200px;
}
.c2{
background-color: blue;
}
.c3{
background-color: yellow;
}
</style>
</head>
<body> <input type="text" id="username" onblur="f1(this);" onfocus="f2(this);">
<span id="error" style="color:Red;font-size: 12px;"></span>
<div id="d1" class="c1 xx oo"></div>
<!-- select下拉框 -->
<select name="" id="s1">
<option value="1">xx1</option>
<option value="2">xx2</option>
<option value="3">xx3</option>
</select> </body> <script> function f1(ths){
var username = ths.value ;
if (username.length < 5){
var spa = document.getElementById('error');
spa.innerText = '黄焖鸡米饭';
}
} function f2(ths){
ths.nextElementSibling.innerText = '';
} var d1 = document.getElementById('d1');
d1.onclick = function (){
this.classList.toggle('c2');
var u = document.getElementById('username');
u.classList.toggle('c3') }
// onchange事件
var s = document.getElementById('s1');
s.onchange = function (){ // 域内容发生变化,触发c2
d1.classList.toggle('c2');
} </script> </html>

用CSS实现小米商城导航栏+主内容部分

HTML部分

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="xiaomi.css">
</head>
<body>
<div class="nav">
<div class="nav-content clearfix">
<div class="nav-left">
<a href="" class="nav-link">小米商城</a> <span class="shugang">|</span>
<a href="" class="nav-link">MIUI</a> <span class="shugang">|</span>
<a href="" class="nav-link">LoT</a> <span class="shugang">|</span>
<a href="" class="nav-link">云服务</a> <span class="shugang">|</span>
<a href="" class="nav-link">金融</a> <span class="shugang">|</span>
<a href="" class="nav-link">有品</a> <span class="shugang">|</span>
<a href="" class="nav-link">小爱开放平台</a> <span class="shugang">|</span>
<a href="" class="nav-link">企业团购</a> <span class="shugang">|</span>
<a href="" class="nav-link">资质证照</a> <span class="shugang">|</span>
<a href="" class="nav-link">协议规则</a> <span class="shugang">|</span>
<a href="" class="nav-link">智能生活</a> <span class="shugang">|</span>
<a href="" class="nav-link">Select Location</a>
</div>
<div class="cart-part">
<a href="" class="nav-link cart">购物车 (0)</a>
<div class="cart-list hide"></div>
</div>
<div class="nav-right">
<a href="" class="nav-link">登录</a> <span class="shugang">|</span>
<a href="" class="nav-link">注册</a> <span class="shugang">|</span>
<a href="" class="nav-link">消息通知</a>
</div>
</div>
</div>
<div class="main">
<div class="main-top clearfix">
<div class="main-top-logo">
<a href="" class="a-logo"></a>
</div>
<div class="main-top-nav">
<a href="">小米手机</a>
<a href="">Redmi 红米</a>
<a href="">电视</a>
<a href="">笔记本</a>
<a href="">家电</a>
<a href="">路由器</a>
<a href="">智能硬件</a>
<a href="">服务</a>
<a href="">社区</a>
</div>
<div class="main-top-search">
<input type="text" class="search-input"><input type="submit" class="search-button">
</div>
</div>
<div class="main-content clearfix">
<div class="main-content-left">
<ul>
<li>
<a href="">
<span>手机 手机卡</span>
<span class="dayuhao">&gt;</span>
</a>
</li>
<li>
<a href="">
<span>手机 手机卡</span>
<span class="dayuhao">&gt;</span>
</a>
</li>
<li>
<a href="">
<span>手机 手机卡</span>
<span class="dayuhao">&gt;</span>
</a>
</li>
<li>
<a href="">
<span>手机 手机卡</span>
<span class="dayuhao">&gt;</span>
</a>
</li>
<li>
<a href="">
<span>手机 手机卡</span>
<span class="dayuhao">&gt;</span>
</a>
</li>
<li>
<a href="">
<span>手机 手机卡</span>
<span class="dayuhao">&gt;</span>
</a>
</li>
<li>
<a href="">
<span>手机 手机卡</span>
<span class="dayuhao">&gt;</span>
</a>
</li>
<li>
<a href="">
<span>手机 手机卡</span>
<span class="dayuhao">&gt;</span>
</a>
</li>
<li>
<a href="">
<span>手机 手机卡</span>
<span class="dayuhao">&gt;</span>
</a>
</li>
<li>
<a href="">
<span>手机 手机卡</span>
<span class="dayuhao">&gt;</span>
</a>
</li>
</ul>
</div>
<div class="main-content-right">
<img src="1.PNG" alt="" style="width: 100%" >
</div>
</div>
</div> </body>
</html>

CSS部分

/* 清除左上的小空白 */
body{
margin:;
padding:;
} /* 长方形黑框 */
.nav{
height: 40px;
background-color: #333333;
line-height: 40px;
} /* 防止父级标签塌陷 */
.clearfix:after{
content: '';
display: block;
clear: both;
}
/* 让整个内容向右偏移5% 并且内容占90% 所以右边也占5% 保持左右对称 */
.nav-content{
margin-left: 5%;
width: 90%;
position: relative;
} /* 左部分内容和右部分内容浮动 离左右40px */
.nav-content .nav-left{
float: left;
height: 40px;
}
.nav-content .nav-right{
float: right;
height: 40px;
}
/* 设置内容里面所有a标签的样式 */
.nav-content a{
color: #b0b0b0;
text-decoration: none;
font-size: 12px;
}
/* 设置所有竖杠的样式 */
.nav-content .shugang{
color: #424242;
} /* 购物车 (0)的位置 */
.cart-part{
float: right;
}
/* 设置购物车小块块的样式 */
.cart-part .cart{
display: inline-block;
height: 40px;
width: 120px;
background-color: #424242;
text-align: center;
} /* 触碰购物车会出现一个下拉框 */
/* 原本display是none 当触碰购物车时会变为block状态*/
/* 在block块级标签状态下可与设置高度宽度等参数 */
.cart-part:hover .cart-list{
display: block;
}
/* 触碰购物车下拉框的样式 */
.cart-list{
height: 100px;
width: 320px;
position: absolute;
right:;
top: 40px;
background-color: red;
}
/* 隐藏 */
.hide{
display: none;
} /* ---------------------------- */ /* 顶部区域 */
.main-top{
height: 100px;
margin-left: 5%;
width: 90%;
line-height: 100px;
}
/* 顶部区域左侧的区域 */
.main-top-logo{
height: 100px;
line-height: 100px;
float: left;
} /* 顶部区域左侧的小米logo样式 */
.a-logo{
margin-top: 22px;
display: inline-block;
height: 55px;
width: 55px;
background: #ff6700 url('mi-logo.png') no-repeat 3px 3px;
} /* 顶部区域中间的区域 */
.main-top-nav{
float: left;
margin-left: 180px;
} /* 顶部区域中间区域的a标签样式 */
.main-top-nav a{
color: #333;
text-decoration: none;
margin-left: 10px;
} /* 顶部区域右边的搜索框区域 */
.main-top-search{
float: right;
height: 100px;
} /* 右边的搜索框样式 */
.search-input{
width: 246px;
height: 46px;
border: 1px solid #e0e0e0;
border-right:;
} /* 搜索框右边的搜索按钮的样式 */
.search-button{
width: 50px;
height: 50px;
padding:;
background-color: white;
border: 1px solid #e0e0e0;
} /* 当鼠标触碰查找按钮时 */
.search-button:hover{
background-color: #ff6700;
} /* 主内容区域 */
.main-content{
margin-left: 5%;
width: 90%;
} /* 主内容左侧区域 */
.main-content-left{
float: left;
background-color: rgba(105,101,101,0.6);
width: 20%;
}
/* 主内容右侧区域 */
.main-content-right{
float: right;
width: 80%;
} /* 主内容左侧区域的ul竖行 */
.main-content-left ul{
list-style: none; /* 取出列表每项的前面的点 '·' */
padding:;
} /* 主内容左侧区域ul下面的li(每项) */
.main-content-left ul li{
height: 40px;
width: 100%;
line-height: 40px;
} /* 每个li里面(每个点里面)都有一个a标签 这个是设置a标签样式 */
.main-content-left ul li a{
text-decoration: none;
color: #fff;
font-size: 14px;
display: inline-block;
width: 80%;
margin-left: 10%;
} /* 每行内容都有一个大于号 让它在最右边 */
.main-content-left ul li a .dayuhao{
float: right;
} /* 触碰每一个小项时,颜色会变成橙色 */
.main-content-left ul li:hover{
background-color: #ff6700;
}

最终实现效果图

划分区域

day45:JS中的json&JS的BOM操作和DOM操作的更多相关文章

  1. MVC中处理Json和JS中处理Json对象

    MVC中处理Json和JS中处理Json对象 ASP.NET MVC 很好的封装了Json,本文介绍MVC中处理Json和JS中处理Json对象,并提供详细的示例代码供参考. MVC中已经很好的封装了 ...

  2. js中的json对象详细介绍

    JSON一种简单的数据格式,比xml更轻巧,在JavaScript中处理JSON数据不需要任何特殊的API或工具包,下面为大家详细介绍下js中的json对象, 1.JSON(JavaScript Ob ...

  3. 在js中使用json

    在js中使用json var obj = {     "1" : "value1",     "2" : "value2" ...

  4. 在JavaScript中使用json.js:使得js数组转为JSON编码

    在json的官网中下载json.js,然后在script中引入,以使用json.js提供的两个关键方法. 1.数组对象.toJSONString() 这个方法将返回一个JSON编码格式的字符串,用来表 ...

  5. js中 给json对象添加属性和json数组添加元素

    js中 给json对象添加新的属性 比如现在有一个json对象为jsonObj,需要给这个对象添加新的属性newParam,同时给newParam赋值为pre.做法如下: var obj={ &quo ...

  6. js中的json操作

    js中的json操作 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScr ...

  7. 【微信小程序】在js中导入第三方js或自己写的js,使用外部js中的function的两种方法 import和require的区别使用方法 【外加:使用第三方js导出的默认function的调用方法】

    如下 定义了一个外部js文件,其中有一个function import lunaCommon from '../lunaCommon.js'; var ctx = wx.getStorageSync( ...

  8. 【转】MVC中处理Json和JS中处理Json对象

    事实上,MVC中已经很好的封装了Json,让我们很方便的进行操作,而不像JS中那么复杂了. MVC中: public JsonResult Test() { JsonResult json = new ...

  9. js中的json

    1.什么是JSON? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 2.JSON语法是JavaScr ...

随机推荐

  1. linux的文件处理(匹配 正则表达式 egrep awk sed)和系统、核心数据备份

    文件处理 1.处理方式 匹配 正则表达式 egrep awk sed 2.文件中的处理字符 \n  新行符 换行 \t  制表符 tab键 缺省8个空格 \b  退格符 backspace键 退格键 ...

  2. 并发|WEB服务器并发

    面试中容易被问到你们服务器的并发是多少?但是这个问题我问过许多人,没有得到一个准确的答案!我总结了一些不错的回答,分享给大家! 面试题: 你们公司的服务器并发是多少? 我的回答: 1.并发这个词,许多 ...

  3. Qt自定义控件之仪表盘3--雷达扫描图

    1.设计思想 雷达扫描图,在影视作品中见到较多,比如飞机雷达.舰艇雷达,有一个扫描线转圈代表雷达一周旋转或一个批次的收发,发现目标就在表盘上标记位置.和汽车仪表盘类似,汽车仪表盘有底盘背景图.同圆.刻 ...

  4. 苹果挖矿恶意程序处理(OSX/CoinMiner.X)

    背景 近期通过流量告警发现多起外连矿池的告警,均外连至43.249.204.231 威胁情报信息如下: 系统表象 1.通过ps -ef|grep osascript发现在/library/Launch ...

  5. 微信公众号怎么发PDF文件?

    微信公众号怎么发PDF文件?   我们都知道创建一个微信公众号,在公众号中发布一些文章是非常简单的,但公众号添加附件下载的功能却被限制,如今可以使用小程序“微附件”进行在公众号中添加附件. 以下是公众 ...

  6. ECMAScript6新增数据类型symbol数据类型

    25.Symbol目的:为了解决对象之间属性名冲突的问题,Symbol它是引用数据类型. Symbol( ),它代表着一个独一无二的值 [name]: '小红',//加中括号代表默认创建了一个Symb ...

  7. 自动发布-asp.net自动发布、IIS站点自动发布(集成SLB、配置管理、Jenkins)

    PS:概要.背景.结语都是日常“装X”,可以跳过直接看自动发布 环境:阿里云SLB.阿里云ECS.IIS7.0.Jenkins.Spring.Net 概要 公司一个项目从无到有,不仅仅是系统从无到有的 ...

  8. 将Asp.Net Core3.1项目,使用Docker 部署到Centos 8

    一.准备工具 Win 10 Centos 8 Visual Studio 2019 Docker Desktop  下载地址:https://download.docker.com/win/stabl ...

  9. 《Java从入门到失业》第一章:计算机基础知识(三):程序语言简介

    1.3程序语言简介 我们经常会听到一些名词:低级语言.高级语言.编译型.解释型.面向过程.面向对象等.这些到底是啥意思呢?在正式进入Java世界前,笔者也尝试简单的聊一聊这块东西. 1.3.1低级语言 ...

  10. unity探索者之微信支付,非第三方插件

    版权声明:本文为原创文章,转载请声明http://www.cnblogs.com/unityExplorer/p/8404604.html 相比微信的登录和分享功能,微信支付sdk的接入显得相当简单, ...