Python 15 html 基础 - CSS &javascript &DOM

本节内容

  CSS基础

  javascript基础

  DOM

 

前言,这边这块楼主已经很熟悉了,CSS天天用到,简单的一些javascript也是所以就挑点重点说了。然后就是dom不怎么用,但是其实也用不到,大家以后都会是用jquery来做这一块的需求,所以只要稍作了解就好了。

 

CSS基础

继续上一章节的css、

position

  常用的三个:

    fixed  ==>浮动的固定在某个位置

    relative + absolute ==> 通常这2个一起用,用来在父标签的内部定位,相对于父标签的一个绝对定位。

顺带提一下opcity 范围是0~1、表示透明度,z-index层级顺序,幕态化时候用到

下面来看案例:

返回顶部的案例、返回顶部四个字一直漂浮在右下角、点击跳回最上面(先不用管javascript)

1     <div style="position: fixed;right: 10px;bottom: 10px;width: 40px;height: 40px;background-color: #073763" onclick="GoTop()">返回顶部</div>
2     <div style="width: 100%;height: 3000px;background-color: #6e6568"></div>
3     <script>
4         function GoTop() {
5             window.scrollTo(0,0);
6         }
7     </script>

 

网页悬浮案例:

1     头部固定案例
2     <div style="height: 60px;background-color: blueviolet;position:fixed;left: 0;right: 0;top: 0px;">头部</div>
3     <div style="background-color: #BEBEBE;height: 2000px;margin-top: 61px">内容正文</div>

这里我们让头部浮动起来(position:fixed),确认它的位置(left,top),然后让下面的正文离上面一定距离(margin-top)保证正文不被挡住。

1     relative + absolute 案例  只是相对于父类位置的相对定位,不一定在父标签内部
2     <div style="border: 1px solid seagreen;width: 400px;height: 300px;margin: 0 auto;position: relative">
3         <div style="background-color: #073763;position:absolute;bottom: 20px;right: 20px;color: white">div1</div>
4     </div>

这里我们要强调的是相对于父标签的位置并不是说,在父标签内部活动,我们可以设置他的值在负数,则标签会移动到父标签外面。

1     <div style="border: 1px solid seagreen;width: 400px;height: 300px;margin: 0 auto;position: relative">
2         <div style="background-color: #073763;position:absolute;bottom: 20px;right: -50px;color: white">div1</div>
3     </div>

 

幕态化弹出框

1     谈出框与后部页面  三层页面框架;z-index 大的在上面;display:none 先让弹框消失
2     <div style="z-index:10;position: fixed;width: 400px;height: 100px;background-color: white;top: 50%;left: 50%;margin-left: -200px;margin-top: -50px">
3         <input type="text" />
4     </div>
5     <div style="z-index:9;position:fixed;top: 0;bottom: 0;left: 0;right: 0;background-color: rebeccapurple;opacity: 0.3"></div>
6     <div style="background-color: yellow;height: 3000px;">内容正文</div>

首先分析一下三层结构:网页本身是第一层,然后上面盖着的一层薄暮是第二层,最后的弹出框所在的是第三层,除了本身之外的都是浮动效果,所以引入一个z-index来控制浮动的高低,z-index大的在上面。所以可以在第三层为所欲为。。加上一个事件,写一个display:none,事件响应就删除这句,幕态化效果就出来了。

幕态化还是很厉害的一个功能,css做好很炫酷,只是这边楼主是为了显示下怎么实现的,所以只是做效果。

 

overflow

其设置内容大概就是说,超过了本身的标签大小怎么处理的一种设置

hidden ==> 超过长度隐藏多余的内容

auto ==>超过长度会有进度条产生

案例:

1     <div style="width: 300px;height: 200px;overflow: hidden">
2         <img src="image/余文乐.jpg" />
3     </div>
4     <div style="width: 300px;height: 200px;overflow: auto">
5         <img src="image/余文乐.jpg" />
6     </div>

效果:

 

 放个原图吧、哈哈

 

 言归正传、不闹。。

 

hover

鼠标置于标签上的时候

 1 <body>
 2     <div class="page-header">
 3         <div class="w">
 4             <a class="logo">Logo</a>
 5             <a>全部</a>
 6             <a>新闻</a>
 7             <a>体育</a>
 8         </div>
 9     </div>
10     <div class="page-body">
11         <div class="w">content</div>
12     </div>
13 </body>

style:

 1 <style>
 2         .page-header{
 3             position: fixed;
 4             top: 0;
 5             left: 0;
 6             right: 0;
 7             height: 49px;
 8             background-color: #073763;
 9             line-height: 48px;
10         }
11         .page-body{
12             margin-top: 50px;
13         }
14         .w{
15             width: 1000px;
16             margin: 0 auto;
17         }
18         .page-header a{
19             display: inline-block;
20             padding:0 15px;
21             color: white;
22         }
23         .page-header a:hover{
24             background-color: darkcyan;
25         }
26     </style>
View Code

菜单用的表较多,目前做的功能还不是很好、在hover里面写color就可以让它变颜色。

 

bakcground-image

背景图片;如果标签过大,背景图就会重复堆叠,无论是水平还是垂直方向;通过background-repeat来控制;位置我们通过background-position来控制。

 1     <div>
 2         <table style="width: 30%;margin: 100px auto;border: 1px solid deepskyblue;line-height: 40px">
 3             <tr>
 4                 <td style="text-align: right;width: 100px;">
 5                     <div style="">username:</div>
 6                 </td>
 7                 <td>
 8                     <div style="position: relative">
 9                         <input type="text"  style="width: 180px;text-align: left;height: 20px;padding-right: 20px "/>
10                         <span style="position:absolute;background-image: url(image/user.png);height: 20px;width: 20px;display: inline-block;right: 2px;top: 12px;"></span>
11                     </div>
12                 </td>
13             </tr>
14         </table>
15     </div>
16     <div style="background-image:url(image/small.png); width: 23px;height: 22px;border: 1px solid darkgreen;background-repeat: no-repeat;background-position-y: -70px"></div>

效果:

 

 

Javascript

首先大家应该注意到我javascript写的位置了,基本都是写在body的最后,因为html都是从上到下的执行的、所以做这样一个假设假设你在浏览的是一个新闻页面,作为用户肯定不会考虑特效,功能等等,而是需要先看到页面,这样就没必要先走一遍javascript,算是一个小细节吧,小网页也无所谓这些吧。

 

像学习python一样学习javascript

首先变量申明

  name = "dandy"  ==> 申明全局变量

  var name = "dandy"  ==> 申明变量

 

  parseInt(age) ==>转换成整型变量

  parseFloat(salary)  ==>转换成浮点型

先讲一点,浏览器里面的console可以随意编写javascript

 

字符串操作

   var a = "dandy"

  a.charAt(0) ==> "d"

  a.concat("&taylor") ==>"dandy&taylor"

 1 obj.length                           长度
 2  
 3 obj.trim()                           移除空白
 4 obj.trimLeft()
 5 obj.trimRight)
 6 obj.charAt(n)                        返回字符串中的第n个字符
 7 obj.concat(value, ...)               拼接
 8 obj.indexOf(substring,start)         子序列位置
 9 obj.lastIndexOf(substring,start)     子序列位置
10 obj.substring(from, to)              根据索引获取子序列
11 obj.slice(start, end)                切片
12 obj.toLowerCase()                    大写
13 obj.toUpperCase()                    小写
14 obj.split(delimiter, limit)          分割
15 obj.search(regexp)                   从头开始匹配,返回匹配成功的第一个位置(g无效)
16 obj.match(regexp)                    全局搜索,如果正则中有g表示找到全部,否则只找到第一个。
17 obj.replace(regexp, replacement)     替换,正则中有g则替换所有,否则只替换第一个匹配项,
18                                      $数字:匹配的第n个组内容;
19                                      $&:当前匹配的内容;
20                                      $`:位于匹配子串左侧的文本;
21                                      $':位于匹配子串右侧的文本
22                                      $$:直接量$符号

 

列表

a = [11,22,33]

a.splice(1,1,90)  ==> [11,90,33]删除指定位置并赋值。

 1 obj.length          数组的大小
 2  
 3 obj.push(ele)       尾部追加元素
 4 obj.pop()           尾部获取一个元素
 5 obj.unshift(ele)    头部插入元素
 6 obj.shift()         头部移除元素
 7 obj.splice(start, deleteCount, value, ...)  插入、删除或替换数组的元素
 8                     obj.splice(n,0,val) 指定位置插入元素
 9                     obj.splice(n,1,val) 指定位置替换元素
10                     obj.splice(n,1)     指定位置删除元素
11 obj.slice( )        切片
12 obj.reverse( )      反转
13 obj.join(sep)       将数组元素连接起来以构建一个字符串
14 obj.concat(val,..)  连接数组
15 obj.sort( )         对数组元素进行排序

for循环抓到的是列表的index。。

javascript的代码存在形式

1 <!-- 方式一 -->
2 <script type"text/javascript" src="JS文件"></script>
3   
4 <!-- 方式二 -->
5 <script type"text/javascript">
6     Js代码内容
7 </script>

 

其他

 

1、序列化

  • JSON.stringify(obj)   序列化
  • JSON.parse(str)        反序列化

2、转义

  • decodeURI( )                   URl中未转义的字符
  • decodeURIComponent( )   URI组件中的未转义字符
  • encodeURI( )                   URI中的转义字符
  • encodeURIComponent( )   转义URI组件中的字符
  • escape( )                         对字符串转义
  • unescape( )                     给转义字符串解码
  • URIError                         由URl的编码和解码方法抛出

3、eval

JavaScript中的eval是Python中eval和exec的合集,既可以编译代码也可以获取返回值。

  • eval() 
  • EvalError   执行字符串中的JavaScript代码

4、正则表达式

1、定义正则表达式

    • /.../  用于定义正则表达式
    • /.../g 表示全局匹配
    • /.../i 表示不区分大小写
    • /.../m 表示多行匹配
      JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达式^和$,m模式也会使用^$来匹配换行的内容)
1 var pattern = /^Java\w*/gm;
2 var text = "JavaScript is more fun than \nJavaEE or JavaBeans!";
3 result = pattern.exec(text)
4 result = pattern.exec(text)
5 result = pattern.exec(text)

注:定义正则表达式也可以  reg= new RegExp()

 

语句

if

    if(条件){
 
    }else if(条件){
         
    }else{
 
    }

switch

    switch(name){
        case '1':
            age = 123;
            break;
        case '2':
            age = 456;
            break;
        default :
            age = 777;
    }

循环

var names = ["alex", "tony", "rain"];
 
for(var i=0;i<names.length;i++){
    console.log(i);
    console.log(names[i]);
}
var names = ["alex", "tony", "rain"];

for(var index in names){
    console.log(index);
    console.log(names[index]);
}
while(条件){
    // break;
    // continue;
}

基本函数:

    function func(arg){
        return true;

 

 

// 匿名函数
    var func = function(arg){
        return "tony";
    }
  
// 自执行函数
    (function(arg){
        console.log(arg);
    })('123')

 

DOM

查找元素标签

1 document.getElementById             根据ID获取一个标签
2 document.getElementsByName          根据name属性获取标签集合
3 document.getElementsByClassName     根据class属性获取标签集合
4 document.getElementsByTagName       根据标签名获取标签集合

简介查找方式

 1 parentNode          // 父节点
 2 childNodes          // 所有子节点
 3 firstChild          // 第一个子节点
 4 lastChild           // 最后一个子节点
 5 nextSibling         // 下一个兄弟节点
 6 previousSibling     // 上一个兄弟节点
 7  
 8 parentElement           // 父节点标签元素
 9 children                // 所有子标签
10 firstElementChild       // 第一个子标签元素
11 lastElementChild        // 最后一个子标签元素
12 nextElementtSibling     // 下一个兄弟标签元素
13 previousElementSibling  // 上一个兄弟标签元素

 

操作部分

内容

innerText   文本
outerText
innerHTML   HTML内容
innerHTML  
value       值

属性

attributes                // 获取所有标签属性
setAttribute(key,value)   // 设置标签属性
getAttribute(key)         // 获取指定标签属性
 
/*
var atr = document.createAttribute("class");
atr.nodeValue="democlass";
document.getElementById('n1').setAttributeNode(atr);
*/

class操作

className                // 获取所有类名
classList.remove(cls)    // 删除指定类
classList.add(cls) 

 

demo

全选、反选代码

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>Title</title>
  6     <style>
  7         .cls1{
  8             opacity: 0.5;
  9             z-index: 9;
 10             position: fixed;
 11             left: 0;
 12             right:0;
 13             top: 0;
 14             bottom: 0;
 15             background-color: #6e6568;
 16         }
 17         .cls2{
 18             z-index: 10;
 19             position: fixed;
 20             left:50%;
 21             top:50%;
 22             height: 200px;
 23             width: 350px;
 24             margin-left: -175px;
 25             margin-top: -130px;
 26             background-color: white;
 27             border: 1px solid darkgray;
 28         }
 29         .hide{
 30             display: none;
 31         }
 32     </style>
 33 </head>
 34 <body style="margin: 0;">
 35     <input type="button" value="添加" onclick="showModel()"/>
 36     <input type="button" value="全选" onclick="chooseAll()"/>
 37     <input type="button" value="取消1" onclick="cancelAll()"/>
 38     <input type="button" value="反选" onclick="ReverseAll()"/>
 39     <table>
 40         <thead>
 41             <tr>
 42                 <th>选择</th>
 43                 <th>主机名</th>
 44                 <th>端口</th>
 45             </tr>
 46         </thead>
 47         <tbody id="tb">
 48                 <tr>
 49                 <td><input type="checkbox" /> </td>
 50                 <td>1.1.1.1</td>
 51                 <td>22</td>
 52             </tr>
 53             <tr>
 54                 <td><input type="checkbox" /> </td>
 55                 <td>2.2.2.2</td>
 56                 <td>22</td>
 57             </tr>
 58             <tr>
 59                 <td><input type="checkbox" /> </td>
 60                 <td>3.3.3.3</td>
 61                 <td>33</td>
 62             </tr>
 63         </tbody>
 64     </table>
 65     <!--遮罩层-->
 66     <div id="i1" class="cls1 hide"></div>
 67 
 68     <!--弹出框-->
 69     <div id="i2" class="cls2 hide">
 70         <p><input id="texttest" type="text" name="text1" value="aaa"/></p>
 71         <p><input type="text" name="text1"/></p>
 72         <p><input type="button" value="确定" /></p>
 73         <p><input type="button" value="取消" onclick="cancelShow()" /></p>
 74     </div>
 75     <script>
 76         function showModel() {
 77             document.getElementById('i1').classList.remove("hide");
 78             document.getElementById('i2').classList.remove("hide");
 79         }
 80         function cancelShow() {
 81             document.getElementById('i1').classList.add("hide");
 82             document.getElementById('i2').classList.add("hide");
 83         }
 84         function chooseAll() {
 85             tag = document.getElementById('tb').children;
 86             for(var i=0;i<tag.length;i++)
 87             {
 88                 obj = tag[i].children[0].children[0];
 89                 obj.checked = true
 90             }
 91         }
 92         function cancelAll() {
 93             tag = document.getElementById('tb').children;
 94             for(var i=0;i<tag.length;i++)
 95             {
 96                 obj = tag[i].children[0].children[0];
 97                 obj.checked = false
 98             }
 99         }
100         function ReverseAll() {
101             tag = document.getElementById('tb').children;
102             for(var i=0;i<tag.length;i++)
103             {
104                 obj = tag[i].children[0].children[0];
105                 if(obj.checked){
106                     obj.checked =false
107                 }
108                 else {
109                     obj.checked = true
110                 }
111             }
112         }
113     </script>
114 </body>
115 </html>
View Code

操作标签

 1 // 方式一
 2 var obj = "<input type='text' />";
 3 xxx.insertAdjacentHTML("beforeEnd",obj);
 4 xxx.insertAdjacentElement('afterBegin',document.createElement('p'))
 5  
 6 //注意:第一个参数只能是'beforeBegin'、 'afterBegin'、 'beforeEnd'、 'afterEnd'
 7  
 8 // 方式二
 9 var tag = document.createElement('a')
10 xxx.appendChild(tag)
11 xxx.insertBefore(tag,xxx[1])

样式操作

var obj = document.getElementById('i1')
 
obj.style.fontSize = "32px";
obj.style.backgroundColor = "red";

 

 事件

其他

console.log                 输出框
alert                       弹出框
confirm                     确认框
  
// URL和刷新
location.href               获取URL
location.href = "url"       重定向
location.reload()           重新加载
  
// 定时器
setInterval                 多次定时器
clearInterval               清除多次定时器
setTimeout                  单次定时器
clearTimeout                清除单次定时器

提交表单

document.geElementById('form').submit()

demo

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <script>
 7         function func() {
 8             var tag = document.getElementById("ad");
 9             var content = tag.innerText;
10             var tag_1 = content.charAt(0);
11             var tag_2 = content.substring(1,content.length);
12             tag.innerText = tag_2 + tag_1
13         }
14         setInterval('func();',1000)
15     </script>
16 </head>
17 <body>
18     <div id="ad">欢迎光临!</div>
19 </body>
20 </html>

 

posted @ 2017-11-24 23:32  dandyzhang  阅读(353)  评论(0编辑  收藏  举报