前端语言
html--》将页面展示出来 比做 赤裸的人
css --> 修饰html标签 让html更好看 css 对html 进行修饰
js --》 能够让页面动起来 js
html标签
<!DOCTYPE html> <html lang="en"> <!--头部--> <head> <!--字符集--> <!--自闭合标签--> <meta charset="UTF-8"> <!-- 浏览器tab上的标题--> <!--主动闭合标签 --> <title>摩羯座</title> </head> <!--head中的内容是不被展示的,是规则也是规范--> <!-- 身体--> <body> <!--标题标签--> <!-- <h1>h1</h1>--> <!-- <h2>h2</h2>--> <!-- <h3>h3</h3>--> <!-- <h4>h4</h4>--> <!-- <h5>h5</h5>--> <!-- <h6>h6</h6>--> <!-- div是块级标签,无论自己有多大,都占满屏幕,伪白板标签--> <!-- <div>这是div标签</div>--> <!-- 行内标签又叫做内联标签,自己有多大就占多大,也叫做白板标签--> <!-- <span>这是span标签</span>--> <!-- 属性:写在标签内部的<>之间,标签名之后,属性与属性之间用空格分隔--> <!-- <input type="text" placeholder="请输入用户名">--> <!-- value属性是input的默认值--> <!-- <input type="text" value="请输入用户名">--> <!-- <input type="password">--> <!-- 跟后台交互--> <!-- 1.form表单的方式--> <!-- 2.异步提交 ajax--> <!-- <form method="get" action="http://www.baidu.com">--> <!-- <input type="button" value="button-登录" onclick="alert(234)">--> <!-- <input type="submit" value="submib-注册">--> <!-- radio单选--> <!-- checkbox多选--> <!-- 默认选择 checked=checked--> <!-- <span>男</span><input type="radio" name="sex">--> <!-- <span>女</span><input type="radio" name="sex" checked="checked">--> <!-- <span>篮球</span><input type="checkbox" checked="checked">--> <!-- <span>足球</span><input type="checkbox" checked="checked">--> <!-- <input type="file">--> <!-- <input type="text" name="username" value="gonghaiting">--> <!-- <input type="password" name="passwd"value="123456">--> <!-- <input type="submit" value="submit-登录">--> <!-- 重置必须要和form连用才起作业--> <!-- <input type="reset">--> <!-- </form>--> <!--<span>用户名</span><input type="text">--> <!--<label for="user">用户名</label><input type="text" id="user">--> <!--1:乒乓球 2.篮球 3.足球--> <!--{xxx:1}--> <!--<select name="xxxxx">--> <!-- <option value="2">篮球</option>--> <!-- <option value="3">足球</option>--> <!-- <option selected="selected" value="1">乒乓球</option>--> <!--</select>--> <!--target="_blank" 新打开一个浏览器的tab--> <!--<a href="http://www.baidu.com" target="_blank">跳转到百度</a>--> <textarea name="">多行文本</textarea> <textarea name="多行" id="2" cols="30" rows="10"></textarea> </body> </html>
css样式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!-- css样式应用,有3处--> <!-- 1.标签内部通过style属性,来给标签设置css样式--> <!-- 2.head中增加style标签,在style标签内部,通过选择器为目标html配置css样式--> <!-- 3.通过编写样式表文件 xxx.css 用link引入到当前html中--> <style> #i2{ background-color: green; height: 100px; width: 100%; } .wh { width: 100px; height: 100px; } .bc-1{ background-color: red; } .dis-inline{ /*由块级标签,变成行内标签*/ display: inline; } .dis-block{ /*行内转块*/ display:block; } .dis-block-inline{ /*既是块也是行内*/ display: inline-block; } .c2{ background-color: #0d8ddb; width: 100%; height: 48px; /*外边距*/ margin-top: 0; /*内边距*/ padding-top: 0; } <!-- </style>--> <link rel="stylesheet" href="demo.css"> </head> <body> <!-- 标签中的style属性是css的第一优先级--> <!-- 以标签为基础,由内到外,由近到远--> <!-- <div id="i1" style="background-color: red;height: 100px;width: 100px">背景色</div>--> <!-- <div id="i2">背景色</div>--> <!-- <div id="i3">引入文件的css</div>--> <!-- display--> <!-- <div class="dis-inline bc-1">块div 变行内</div>--> <!-- <span class="dis-block bc-1">行内转块</span>--> <!-- 行内标签必须自己有内容,无法应用宽、高、外边距、内边距--> <!-- <span style="height: 100px;width: 100px;background-color: #0d8ddb"></span>--> <!-- <span class="dis-block-inline wh bc-1">既是块又是行内</span>--> <div class="c1"> <div class="c2"></div> </div> </body> </html>
选择器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!-- 选择器--> <style> /*#i1{*/ /* background-color: green;*/ /* width: 100px;*/ /* height: 100px;*/ /*}*/ .wh{ width: 100px; height: 100px; } .bc-1{ background-color: red; } .bc-2{ background-color: blue; } /*标签选择器*/ div{ background-color: green; } /*层级选择器*/ div span{ background-color: red; } /*#i1 span{*/ /*}*/ /*.c1 span{*/ /* */ /*}*/ div[dsx="nb"]{ background-color: red; } </style> </head> <body> <!--id选择器--> <!-- <div id="i1">ID选择器</div>--> <!--clss选择器--> <!-- <div class="cl">class选择器</div>--> <!-- 不同颜色 相同宽高的正方形,class属性允许有多个通过空格分隔即可--> <!-- <div class="wh bc-1"></div>--> <!-- <div class="wh bc-2"></div>--> <!-- 所有的div都是绿色--> <!--<div class="wh">111</div>--> <!-- <div class="wh">--> <!-- <span>fsdf</span>--> <!-- </div>--> <div dsx="nb" class="wh"></div> </body> </html>
js
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!-- 导入script的位置可以在head中,也可以在body中,放在上面由于从上到下执行, 所以会卡在js这里,影响用户体验--> </head> <body> <!-- onclick点击事件--> <input type="text" placeholder="请输入用户名" id="username"> <input type="text" placeholder="请输入密码" id="passwd"> <input type="button" onclick="login()" value="登录"> <input type="button" onclick="test()" value="测试"> <input type="button" value="匿名函数测试" id="i1"> <input type="button" value="作用域" onclick="test_var()"> <!--<script></script> 写js标签>--> <!-- <script src="demo.js"></script>--> <script> function login(){ var username = 'dsx'; var password = '123456'; var user = document.getElementById('username').value; var passwd = document.getElementById('passwd').value; console.log('username-->'+user); console.log('passwd-->'+passwd); //if a==b: // xxxx if (username==user && password==passwd){ console.log('登录成功') }else if(username !=user){ console.log('用户名有错误!') }else if(password!=passwd){ console.log('密码错误!') } else{ alert('用户名和密码错误') } /* *1、获取用户名和密码value *2、if进行判断 * * */ } function test(){ //var l=['奔驰','宝马','奥迪','凯迪拉克']; //声明数组 // var l1= new Array(1,2,3,4); //第二种声明方式 //for (var i in l){ // console.log(l[i]) //} //for (var i=0;i<l.length;i++){ // console.log(l[i]) //} //var m ={"name":"dsx","age":18}; //for (var k in m ){ // console.log (k) // console.log(m[k]) //} //下面这种方法不行 //for (var i=0;i<m.length;i++){ // console.log(m[i]) //} // var s ='测试循环字符串'; // for(var i in s){ // console.log(s[i]) // } // for (var i=0;i<s.length;i++){ // console.log(s[i]) // } // var s = document.getElementById('username').value; // switch(s){ // case 'dsx': // console.log('这是大师兄'); // break; // case 'nhy': // console.log('这是牛牛'); // break; // default: // console.log('谁也不是') // } // while(xx==1){ // break; // } } // 匿名函数 // element = document.getElementById('i1'); // element.onclick = function () { // console.log('测试匿名函数') // } // function test_var(){ // var name = 'dsx'; // console.log(name) // } // name = 'nhy'; // age = 18; // function test_var1(){ // console.log(age) // console.log(name) // } </script> </body> </html>
DOM --> 文档对象模型
目的:
操作页面上的任意的一个标签
如何定位标签?
getElementById
ElementsByClass
当标签没有id和class时,要用到间接定位
1、分析html 目标定位标签和当前标签的关系,缕清楚寻找路径
tmp.parentElement; // 父节点标签元素
tmp.children; //所有子标签
tmp.firstElementChild; //第一个子标签元素
tmp.lastElementChild; // 最后一个子标签元素
tmp.nextElementSibling; //下一个兄弟标签元素
tmp.previousElementSibling; //上一个兄弟标签元素
定位到后:
value
修改时,只要能够查看到就能修改
input
select
element.value = 'xx'
innerText --> 插入的永远是字符串
innerHtml --> 如果有符合标签规则的字符串,会直接变成标签。
操作属性
setAttribute(key,value): 设置属性,在标签中添加属性或自定义属性
removeAttribute(key): 删除属性,在标签中删除指定属性
操作样式表 操作的是标签的class属性 前提条件是有这个样式表
className = 'inner tmp1'
classList.add()
classList.remove()
操作style 实际操作的是标签的style属性
如果样式中含有 - 需要将-后面的第一个字母大写
element.style.xxxx = ''
创建标签
对象创建
obj=createElement('div')
obj.setAttribute()
添加到目标元素中,实际是添加子元素
先定位父元素
父元素.appendChild()
字符创建
str = '<input>'
insertAdjacentHTML(where,str)
insertAdjacentHTML('beforeBegin',str)
insertAdjacentHTML(beforeBegin,str) 错误的
beforeBegin: 插入到获取到标签的前面
afterBegin: 插入到获取到标签的子标签的前面
beforeEnd: 插入到获取到标签的子标签的后面
afterEnd: 插入到获取到标签的后面