HTML5基础知识3



## 1.Mac桌面

### 1.1新建一个Mac桌面项目



### 1.2搭建整体框架





### 1.3设计默认和背景样式

```
/*替换通配符,提高效率*/
a, address, b, big, blockquote, body, center, cite, code, dd, del, div, dl,
dt, em, fieldset, font, form, h1, h2, h3, h4, h5, h6, html, i, iframe, img,
ins, label, legend, li, ol, p, pre, small, span, strong, u, ul, var {
    margin: 0;
    padding: 0;
}

body{
    /*背景*/
    background: url("../image/bg_apple.jpg");
    /*缩放效果*/
    background-size: cover;
}
```



### 1.4设计头部背景样式

```
#top{
    background: rgba(255,255,255,0.8);
    height: 35px;
    /*背景阴影:下边给黑色阴影*/
    box-shadow: 0px  3px black;
}
```



### 1.5实现头部的内容和布局



```
        <!--左边菜单-->
        <ul class="top-left">
            <li><a href="" class="glyphicon glyphicon-apple"></a></li>
            <li><a href="">520IT</a></li>
            <li><a href="">文件</a></li>
            <li><a href="">编辑</a></li>
            <li><a href="">显示</a></li>
            <li><a href="">帮助</a></li>
        </ul>
        <!--右边菜单-->
        <ul class="top-right">
            <li ><a href="" class="glyphicon glyphicon-volume-up"></a></li>
            <li ><a href="" class="glyphicon glyphicon-align-left"></a></li>
            <li ><a href="" class="glyphicon glyphicon-question-sign"></a></li>
            <li ><a href="" class="glyphicon glyphicon-leaf"></a></li>
        </ul>
```



### 1.6设计头部样式

```

#top{

    background: rgba(255,255,255,0.8);
    height: 35px;
    width: 100%;
    /*背景阴影:下边给黑色阴影*/
    box-shadow: 0px  3px black;

    /*设计行高*/
    line-height: 35px;

    /*相对于浏览器定位*/
    position: fixed;
    left: 0;
    top:0;
}

a{
    /*字体变黑*/
    color: black;
    /*去除下划线*/
    text-decoration: none;
    font-size: 15px;
    margin: 0 3px;
}

#top ul{
    /*去掉圆点*/
    list-style: none;
}

/*左浮动*/
#top .top-left {
    float: left;
    margin-left: 10px;
}
/*右浮动*/
#top .top-right{
    float: right;
    margin-right: 10px;
}

/*改变标签类型*/
#top ul li{
    display: inline-block;
}
```



### 1.7设计低部背景样式

```
#bottom{
    background: red;
    height: 70px;

    /*相对浏览器定位*/
    position: fixed;
    left: 0;
    bottom: 0;

    width: 100%;
}
```

### 1.8设计低部背景样式

1.修改html



2.添加样式

```
#bottom .dock{
    background: url("../image/dock_bg.png");
    width: 60%;
    height: 100%;

    /*水平居中*/
    margin: 0 auto;

    border-top-left-radius: 5px;
    border-top-right-radius:5px;
}
```



### 1.9低部栏添加图片



```
         <!--底部添加图片-->
            <ul>
                <li><a href="#"><img src="image/zurb-icon.png"></a></li>
                <li><a href="#"><img src="image/linkedin-icon.png"></a> </li>
                <li><a href="#"><img src="image/notable-icon.png"></a> </li>
                <li><a href="#"><img src="image/lastfm-icon.png"></a> </li>
                <li><a href="#"><img src="image/facebook-icon.png"></a> </li>
                <li><a href="#"><img src="image/google-icon.png"></a> </li>
                <li><a href="#"><img src="image/notable-icon.png"></a> </li>
                <li><a href="#"><img src="image/lastfm-icon.png"></a> </li>
                <li><a href="#"><img src="image/facebook-icon.png"></a> </li>
                <li><a href="#"><img src="image/google-icon.png"></a> </li>
                <li><a href="#"><img src="image/lastfm-icon.png"></a> </li>
            </ul>
```



### 2.1低部栏添加图片样式

```

#bottom{
    ...
    line-height: 70px;
    /*水平居中*/
    text-align: center;
}

/**给图片设计宽高*/
#bottom .dock img{
    width: 55px;
    margin: 0 5px;
}

/**改变标签类型*/
#bottom .dock ul{
    display: inline-block;
}

/**改变标签类型*/
#bottom .dock li{
    display: inline-block;
}
```



### 2.2低部栏图片添加过度动画

**transform** 动画

  -webkit-transform   动画效果

  -webkit-transform-origin  参照坐标

  -webkit-transition:过度动画效果

```

#bottom .dock li{
    display: inline-block;

    /*平移过度效果*/
    -webkit-transition:  0.25s linear;  /* Safari 和 Chrome */
    -moz-transition: 0.25s linear;    /* Firefox 4 */
    -ms-transition: 0.25s linear   /* IE 9 */
    -o-transition: 0.25s linear;  /* Opera */
    transition: 0.25s linear;    /* W3C */
}

#bottom .dock li:hover {
    /*参照坐标*/
    transform-origin: center bottom;
    /*放大效果*/
    -webkit-transform: scale(1.5,1.5);
    -moz-transform: scale(1.5,1.5);
    -ms-transform: scale(1.5,1.5);
    -o-transform: scale(1.5,1.5);
    transform: scale(1.5,1.5);
}
```

### 2.3实现中间内容和结构



### 2.4设计中间内容样式

```

#middle{
    margin-top: 50px;
    margin-left: 15px;
     width: 90px;
}
/**设计图片的宽*/
#middle .file img{
    width: 90px;
}
/**设计文字颜色..*/
#middle .file p{
    color: white;
    text-align: center;
}
```



## 2.什么是JavaScript 

**什么是JavaScript** 

   [JavaScript]()是一门广泛用于 [浏览器客户端]()[脚本语言]() (解析运行,不是编译运行)由Netspace公司设计,当时跟Sun公司合作,所以名字起得像Java,  业内一般简称JS



**JS的常见用途**

   1) **动态效果** 和  **数据加载**都是js实现

   2)HTML  **DOM操作**(节点操作,比如添加、修改、删除节点)

  3)给HTML网页增加 **动态**功能,比如动画

  4) **事件处理**:比如监听鼠标点击、鼠标滑动、键盘输入



## 3.JavaScript的书写方式

JS常见的书写方式有2种

页内JS:

  在当前网页的script标签中编写 (  script标签一般在body标签中  )

   ```
  </body>
      ...
      ...
      <script type="text/javascript">
          / *写脚本语言*/
      </script>    
  </body>
   ```


外部JS

   ```
  / **  引用外部的js文件,src 指定js文件路径  */
  <script src="index.js">    </script>
   ```

## 4.JS简单应用..

### 4.1JavaScript输出.

弹窗输出
控制台输出
打断点

**案例:**

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>输出helloWorld</title>
</head>
<body>
    <script>
        /*弹窗输出*/
        alert('hello World !');
        /*调试输出*/
        console.log('java','android');
        console.log('java','android');
        /*打断点*/
        debugger;
        console.log('java','android');
    </script>
</body>
</html>
```





## 5.JS数据类型.

1. 基本数据类型 (  java : int float  long double ...   ;  javaScript :  number string boolean object )
2. 打印真实类型 (  typeof  xxx  )
3. 运算(+   -   *  /  % ....)
4. 面试题
5. 数组
6. 遍历数组
7. 数组的增删(压栈,出栈)
8. 函数库Math
9. 等号运算符

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JS语法</title>
</head>
<body>

<script>
//    1. 基本数据类型
        /*number*/
        var age=100;
        var money=100.02;
        console.log(age,money);

        /*string*/
        var name='jack';
        name2='rose';
        console.log(name,name2);

        /*boolean*/
        var result1=false;
        var result2=true;
        console.log(result1,result2);

        /*object*/
        var score=null;
        console.log(score);

        /*number*/
        var number1 =1,number2=2;
        console.log(number1,number2);


//    2. 打印真实类型
        console.log(typeof money,typeof  name,typeof  result1,typeof score);

//    3. 运算(+   -   *  /  % ....)
        var str=name+'-'+result2+'-'+score;
        console.log(str);

//    4. 面试题
        var str1=(10+'10')+10;
        var str2=(10+10)+'10';
        var str3='10'+('10'+10);
        console.log(str1,str2,str3);//101010 2010 101010

//    5. 数组
//        var arrs=new Array();
        var arr=[];
        console.log(typeof arr);
            arr[0]='java';
            arr[1]=12;
        console.log(arr);
        var numbers=['android',12,false,[12,34]];
        console.log(numbers);

//    6. 遍历数组
        var num=[100,500,200,600];
//        for(var i=0;i<num.length;i++){
//            console.log(num[i]);
//        }
//        for(i=0;i<num.length;i++){
//            console.log(num[i]);
//        }
//        for(i in num){
//            console.log(num[i]);
//        }

//    7. 数组的增删(压栈,出栈)
        num.push(900);//压栈
        console.log(num);
        num.pop();//出栈
        console.log(num);

//    8. 函数库Math
       var maxVaule=Math.max(100,400,300);
        console.log(maxVaule);
        console.log(Math.min(100,200,600));

        var maxV=Math.max.apply(this,num);
        var minV=Math.min.apply(this,num);
        console.log(maxV,minV);

//    9.等号运算符
        /*
        * ==  等于 (值)
        * === 全等(值和类型)
        */
        var a=5;
        var b='5';
        console.log(a==5);//true
        console.log(b==5);//true

        console.log(a===5);//true
        console.log(b===5);//false

</script>

</body>
</html>
```



## 6.JS函数.

### 6.1JS函数格式

**1.普通函数格式**

​           **function  函数名 (参数列表 ...){**

​            **//函数体**

​          **return  返回值;**

​            **}**

**2.匿名函数格式**

  ​     **var  函数别名 =function (参数列表 ...){**

  ​            **//函数体**

  ​          **return  返回值;**

  ​     **}**

  注意:想让<script> 标签中的脚本代码一定执行 ,  可使用匿名函数: **(   function(){ }   )()**

**案例:**

1. 加法运算
2. 多个数相加(参数为数组)
3. 内置数组(每个函数都会自带的一个内置数组,把传入的所有东西存到一个默认的数组arguments中)
4. 匿名函数

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>03-JS函数</title>
</head>
<body>

<script>

//    1. 加法运算
        function sum(num1,num2) {
            return num1+num2;
        }
        var result1=sum(12,3);
        console.log(result1);
//    2. 多个数相加(参数为数组)
        function sum2(arrays) {
            var result=null;
            for(i in arrays){
                result+=arrays[i];
            }
            return result;
        }
        var  result2=sum2([12,3,5]);
        console.log(result2);

//     3.内置数组(函数自带的一个内置数组,把传入的所有东西存到一个默认的数组arguments中)

        function sum3() {
            var result=null;
            for(i in arguments){
                result +=arguments[i];
            }
            return result;
        }
        var result3=sum3(1,2,3,4);
        console.log(result3);

//      4.匿名函数

        var sum4=function () {
            console.log('我是匿名函数,别名是sum4');
        }

        var result4=sum4();

</script>
</body>
</html>
```







## 7.JS对象

### 7.1JS产生对象.

#### 1.第一种

格式:var dog= **{ }**

**案例:**

1. 定义一只狗对象
2. 给狗对象添加属性
3. 给狗对象添加方法
4. 调用狗对象中的属性和方法

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>04-JS产生对象</title>
</head>
<body>
    <script>
//        1. 定义一只狗对象
        var dog={
            //2. 给狗对象添加属性
            age:12,
            name:'jack',
            height:50,

            firends:['rose','lili'],

            //3. 给狗对象添加方法
            eat:function (food) {
                console.log(this.name+'  --吃--'+food);
            },
            run:function () {
                console.log(this.name+'  -- 跑--');
            }

        };
//        4. 调用狗对象中的属性和方法
        console.log(dog.age,dog.name,dog.height,dog.firends);
        dog.eat('骨头');
        dog.run();
    </script>
</body>
</html>
```



#### 2.第二种(批量产生对象)

构造函数 可以new对象。

普通函数   -->    升级  -->   构造函数,。(通过new 关键字升级)

格式:var dog= **new  函数名() ;**

**案例:**

1. 创建多只狗对象
2. 给狗的构造函数添加属性和方法
3. 给狗对象的属性赋值
4. 调用狗对象中的属性和方法
5. 把狗的构造函数封装到一个独立的js文件

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>05-批量产生对象</title>
</head>
<body>
    <script>
        /**让下面的js代码一定执行*/
        (function () {
            /*定义一个函数*/
//            function dog() {
//                console.log('dog');
//            }
//            dog();

            /*升级函数为构造器函数*/
//            function dog() {
//                console.log('dog');
//            }
//            var dog1=new dog();
//            var dog2=new dog();

            /*类似java中的一个类*/
            function dog() {
                //2. 给狗的构造函数添加属性和方法
                this.name=null;
                this.age=null;
                this.height=null;
                this.firends=[];

                this.eat=function () {
                    console.log('---eat---');
                };
                this.run=function () {
                    console.log('---run---');
                };
            }
//            1. 创建多只狗对象
            var dog1=new dog();
            var dog2=new dog();

//            3. 给狗对象的属性赋值
            dog1.age=12;
            dog1.name='jack';

            dog2.age=8;
            dog2.name='rose';
            console.log(dog1);
            console.log(dog2);

//            4. 调用狗对象中的属性和方法
            console.log(dog1.age,dog1.name);
            dog1.eat();
//            5. 把狗的构造函数封装到一个独立的js文件
        })();

    </script>


</body>
</html>
```



## 8.JS内置对象..

### 8.1window

window是javaScript的内置对象之一

#### 1.window的第一作用:

1)所有的 [全局变量]()都是 [window]()[属性]()

2)所有的 [全局函数]()都是 [window]()[方法]()



**案例:**

1. 全局变量(属于window的属性)
2. 全局函数(属于window的方法)
3. 打印window对象

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>01-window</title>
</head>
<body>

<script>

//    1. 全局变量(属于window的属性)
    var age=12;
    console.log(age);
    console.log(window.age);

//    2. 全局函数(属于window的方法)
    function dog() {
        console.log('--dog--');
    }
    dog();
    window.dog();
//    3. 打印window对象
    function person() {
        console.log(this);
    }

    window.person();//this 代表是window
    new person();//this 代表是person对象

    /*window的属性*/ 
    window.alert('哈哈');
    window.console.log('呵呵');

</script>

</body>
</html>
```

属性:

height、innerHeight、outerHeight的区别详解:

http://www.365mini.com/page/jquery-height-vs-innerheight-vs-outerheight.htm

#### 2.window的第二作用:

1)  [动态跳转]()

**案例:**

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>01-window</title>
</head>
<body>
<button οnclick="startToSee();">点击跳转到小码哥官网</button>

<script>
    /*点击跳转到小码哥官网*/
    function startToSee() {
        window.location.href='http://www.520it.com';
    }
</script>

</body>
</html>
```



### 8.2document DOM 操作( 一)..

#### 1.documnet的两大作用

[1.动态的获取到整个网页中的所有标签(元素、节点...)]()

[2.对拿到的标签进行CRUD(增删改查)]()

#### 案例1.:

动态往body中添加文字和标签(增加标签)

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>02-documnet</title>
</head>
<body>
    <script>
//        1. 动态往body中添加文字和标签
        document.write('hello world !');
        document.write('<button>我是一个button</button>');
        document.write('<img src="image/image_01.jpg" alt="">');
        
    </script>
</body>
</html>
```



#### 案例2:

切换图片(获取和修改标签)



```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>01-图片的切换</title>
</head>
<body>

<img id="images" src="image/image_01.jpg" alt="">

<button οnclick="changeImage();">切换图片</button>
    <script>
        function changeImage() {
            //1.拿到img标签
//            var img=document.getElementsByTagName('img')[0];//通过tag获取对象
            var img=document.getElementById('images');//通过id获取对象
            //2.修改标签
            img.src='image/image_02.jpg';
        }
    </script>
</body>
</html>
```



来回切换图片



```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>02-来回切换图片</title>
</head>
<body>

<img src="image/image_01.jpg" alt="">
<button >来回切换图片</button>


<script>

    //1.拿到img标签的对象
    var img=document.getElementsByTagName('img')[0];
    //2.拿到button标签的对象
    var button=document.getElementsByTagName('button')[0];

    //3.给button添加一个点击事件
    button.οnclick=function () {
        //4.判断
        console.log(img.src);
//        if(img.src=='image/image_01.jpg'){//有问题
        /**indexOf 、 lastIndexOf: 有某个字符窜,则返回任意任意正数,没有找到则返回-1  */
        if(img.src.indexOf('image/image_01.jpg')!=-1){
            img.src='image/image_02.jpg';
        }else{
            img.src='image/image_01.jpg';
        }
    };
</script>

</body>
</html>
```



#### 案例3:

图片的显示和隐藏(获取和修改标签)



```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>03-显示和隐藏</title>
</head>
<body>
<img id="icon" src="image/image_01.jpg" alt="">
<br>
<p  name="word" >很美的图片...</p>


<button class="btn"> 隐藏</button>
<script>
    //1.拿到标签
    var icon=document.getElementById('icon');
    var word=document.getElementsByName('word')[0];
    var btn=document.getElementsByClassName('btn')[0];

    //2.监听按钮的点击事件
    btn.οnclick=function () {
        if(btn.innerText=='隐藏'){
            //icon.style:是获取到标签的样式
            icon.style.display='none';
            word.style.display='none';
            btn.innerText='显示';
        }else{
            //icon.style:是获取到标签的样式
            icon.style.display='inline-block';
            word.style.display='block';
            btn.innerText='隐藏';
        }
    }

</script>
</body>
</html>
```



#### 总结:

1)Document的 **DOM操作**就是对HTML中的 **标签**进行 **增删改查**

2)想操作哪个标签,就要先拿到该 **标签的对象**



## 9.JS中DMO操作(二)

### 9.1JS常用事件

    **JS中的事件函数**都是以 **on开头**,类似Android中的点击事件

1. 当窗口加载完毕事件
2. 鼠标事件(类似android中的手指点击事件)
3. 获取焦点事件

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>04-JS常用的事件</title>
</head>
<body>
<img class="icon" src="image/image_01.jpg" alt="">
<input type="text" id="inputs">
<script>
//    1. 当窗口加载完毕事件
        window.οnlοad=function () {
            console.log(' ---窗口加载完毕 回调 ---')
//    2. 鼠标事件(类似android中的手指点击事件)
        var icon=document.getElementsByClassName('icon')[0];
        //鼠标进入
        icon.οnmοuseοver=function () {
            console.log('-- 鼠标进入 --');
        }
        //鼠标移动
        icon.οnmοusemοve=function () {
            console.log('-- 鼠标移动 --');
        }
        //鼠标离开
        icon.οnmοuseοut=function () {
            console.log('-- 鼠标离开 --');
        }

//    3. 获取焦点事件
        var inputs=document.getElementById('inputs');
        inputs.οnfοcus=function () {
            inputs.style.width='300px';
            inputs.style.height='60px';
            inputs.style.outline='none';
            /*inputs.style.border='1px solid blue';*/
        }
        }
</script>
</body>
</html>
```



### 9.2.图片浏览器


```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>05-图片浏览器</title>
</head>
<body>

<img src="image/image_01.jpg" alt="" class="icon">

<br>

<button class="pre">上一张</button>
<button class="next">下一张</button>

<script>
        //1.找到标签
        var icon=document.getElementsByClassName('icon')[0];
        var pre=document.getElementsByClassName('pre')[0];
        var next=document.getElementsByClassName('next')[0];
        var currentIndex=1;
        var  min=1;
        var  max=3;
        //2.点击上一张
        pre.οnclick=function () {
            if(currentIndex==min){
                currentIndex=3;
            }else{
                currentIndex-=1;
            }
            icon.src='image/image_0'+currentIndex+'.jpg';
            console.log('上一张'+icon.src);
        }
        //3.点击下一张
        next.οnclick=function () {
            if(currentIndex==max){
                currentIndex=1;
            }else{
                currentIndex+=1;
            }
            icon.src='image/image_0'+currentIndex+'.jpg';
            console.log('下一张'+icon.src);
        }

</script>
</body>
</html>
```





### 9.3JS实现定时器





```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>06-定时器</title>
    <style>
        body{
            background-color: black;
            text-align: center;
        }
        p{
            color: red;
            font-size: 60px;
            display: none;
        }
        img{
            display: none;
        }
        div{
            color: red;
            font-size: 160px;
            margin-top: 100px;
        }
    </style>
</head>
<body>

<img src="image/flower.gif" alt="">
<p>I LOVE YOU </p>
<div>10</div>

<script>
    //1.拿到要操作的标签
    var icon=document.getElementsByTagName('img')[0];
    var word=document.getElementsByTagName('p')[0];
    var div=document.getElementsByTagName('div')[0];
    //2.添加定时器
    //var time
    this.time=setInterval(function () {
        console.log(' -- -- ')
        div.innerText-=1;
        if(div.innerText==0){
                //3.停止定时
                clearInterval(this.time);
                //4.显示和隐藏
                icon.style.display='inline-block';
                word.style.display='block';
                div.style.display='none';
        }
    },1000)
</script>
</body>
</html>
```





### 9.3DOM操作的补充(CRUD)

1. 添加标签
2. 获取标签
3. 创建标签
4. 插入标签
5. 删除标签
6. 改标签
7. 查找标签
8. 打印标签(属于查询)

**案例:**

html代码:

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>07-DOM操作的CRUD</title>

    <style>

        div{
            width: 300px;
            height: 300px;
            background-color: red;
        }
    </style>
</head>
<body>

<div id="main">
    <p>我是在body中的写的标签</p>
</div>


<!--1.引用外部的js-->
<script src="js/index.js"></script>
<!--2.页内的js-->
<script>

</script>

</body>
</html>
```



index.js代码:

```
/**
 * Created by Administrator on 2017/3/25.
 */

//window窗体加载完毕后执行下面的代码:(会覆盖body写的界面)
window.οnlοad=function () {
    //CRUD 操作

    // 1. 添加标签
    // document.write('<input type="color">');

    //
}

    // 1. 添加标签
    document.write('<input type="color">');
    // 2. 获取标签
    var div=document.getElementById('main');
    // 3. 创建图片标签
    var img=document.createElement('img');
    img.src='image/image_01.jpg';
    img.style.width='80%';
    // 4. 插入标签
    div.appendChild(img);
    // 5.删除标签
    var input=document.getElementsByTagName('input')[0];
    input.remove();

    // 6. 改标签

    // 7. 查找标签
    // document.getElementsByClassName();
    // document.getElementsByTagName();
    // document.getElementsByName();
    // document.getElementById();

    // 8. 打印标签(属于查询)
    console.log(img);
    console.log(div.childNodes);
```





## 10.Tab选项卡(综合练习)

### 10.1整体框架的搭建





### 10.2设计选项卡的样式



```
*{
  margan:0;
  padding:0;
}
body{
    padding: 60px;
}

/*选项卡样式*/
#tab{
    width: 498px;
    height: 130px;
    border: 1px solid #9d9d9d;
}
```



### 10.3设计选项卡头部样式

```
/*选项卡头部样式*/
#tab-top{
    background-color: #dddddd;
    height: 35px;
}
```

### 10.4实现头布局和样式



**布局:**


```
         <!--头部-->
        <div id="tab-top">
            <ul>
                <li class="selected">公告</li>
                <li>规则</li>
                <li>论坛</li>
                <li>安全</li>
                <li>公益</li>
            </ul>
        </div>
```



**样式:**

1.去除圆点和左浮动

```
#tab-top ul{
    /*去除圆点*/
    list-style: none;
}

#tab-top ul li{
    /*左浮动*/
    float: left;
    width: 98px;
}
```
2.垂直居中和水平居中

```
/*选项卡头部样式*/
#tab-top{
    background-color: #dddddd;
    height: 35px;

    /*垂直居中*/
    line-height: 35px;
    /*水平居中*/
    text-align: center;
}
```

3.添加边界

```
#tab-top ul li{
    /*左浮动*/
    float: left;
    width: 98px;
    
    border-left: 1px solid #dddddd;
    border-right: 1px solid #dddddd;
    border-bottom: 1px solid #9d9d9d;
}
```
4.设计ul的宽度为500px 和 给选项卡添加overflow

```
/*选项卡样式*/
#tab{
    ...
    overflow: hidden;

}
#tab-top ul{
    /*去除圆点*/
    list-style: none;
    width: 500px;
}
```
5.默认选中第一个选项卡

```
#tab-top ul li.selected{
    background-color: white;
    border-bottom: 0px;
    border-left: 1px solid #9d9d9d;
    border-right: 1px solid #9d9d9d;
}
```



6.ul向左移动1px

```
/*选项卡头部样式*/
#tab-top{
    ....
    /*定位*/
    position: relative;
}

#tab-top ul{
        ....
    /*定位*/
    position: absolute;
    left: -1px;
}
```
7.添加伪类选择器

```
#tab-top ul li:hover{
    color:  orange;
    font-weight: bold;
}
```



### 10.5实现内容布局和样式(一)



**布局:**



```
                <ul>
                    <li>
                        <a href="#">接次文件,毁了一家店</a>
                    </li>
                    <li>
                        <a href="#">账号安全神器阿里钱盾</a>
                    </li>
                    <li>
                        <a href="#">新版阿里110上线了</a>
                    </li>
                    <li>
                        <a href="#">卖家学违禁避免被处罚</a>
                    </li>
                </ul>
```



**样式:**

1.去除圆点和左浮动 


```
   #tab-body .dom ul {
       /*去掉点*/
       list-style: none;
   }
   #tab-body .dom li{

       /*浮动*/
       float: left;
       width: 230px;
       margin-bottom: 15px;
   }
```

2.内容水平居中和去掉a标签的下划线

```
/*内容部分*/
#tab-body{

    margin-top: 10px;
    /*内容水平居中*/
    text-align: center;
}

a{
    /*去除a标签的下划线*/
    text-decoration: none;
}
```





### 10.6实现内容布局和样式(二)

**布局:**

```
  <!--内容-->
        <div id="tab-body">
             <!--让第一个内容显示出来-->
            <div class="dom" style="display: block;">
                <ul>
                    <li>
                        <a href="#">接次文件,毁了一家店</a>
                    </li>
                    <li>
                        <a href="#">账号安全神器阿里钱盾</a>
                    </li>
                    <li>
                        <a href="#">新版阿里110上线了</a>
                    </li>
                    <li>
                        <a href="#">卖家学违禁避免被处罚</a>
                    </li>
                </ul>
            </div>
            <!--第二个-->
            <div class="dom">
                <ul>
                    <li>
                        <a href="#">“全额返现”要管控啦</a>
                    </li>
                    <li>
                        <a href="#">淘宝新规发布汇总(7月)</a>
                    </li>
                    <li>
                        <a href="#">炒信规则调整意见反馈</a>
                    </li>
                    <li>
                        <a href="#">质量相关规则近期变更</a>
                    </li>
                </ul>
            </div>
            <!--第三个-->
            <div class="dom" >
                <ul>
                    <li>
                        <a href="#">阿里建商家全链路服务</a>
                    </li>
                    <li>
                        <a href="#">个性化的消费时代来临</a>
                    </li>
                    <li>
                        <a href="#">跨境贸易是中小企业机</a>
                    </li>
                    <li>
                        <a href="#">美妆行业虚假信息管控</a>
                    </li>
                </ul>
            </div>
            <!--第四个-->
            <div class="dom" >
                <ul>
                    <li>
                        <a href="#">接次文件,毁了一家店</a>
                    </li>
                    <li>
                        <a href="#">账号安全神器阿里钱盾</a>
                    </li>
                    <li>
                        <a href="#">新版阿里110上线了</a>
                    </li>
                    <li>
                        <a href="#">卖家学违禁避免被处罚</a>
                    </li>
                </ul>
            </div>
            <!--第五个-->
            <div class="dom">
                <ul>
                    <li>
                        <a href="#">为了公益high起来</a>
                    </li>
                    <li>
                        <a href="#">魔豆妈妈在线申请</a>
                    </li>
                </ul>
            </div>
    
        </div>
```

**样式:**

```
#tab-body .dom {
    /*所有的内容都隐藏*/
    display: none;
}

a:hover{
    color: orange;
}
```



### 10.7 JS实现动态切换

1. 拿到所有的li标签
2. 拿到所有的内容div标签
3. 遍历li标签
4. 取出单独的li标签
5. 监听每个标签的鼠标移动事件
6. 让所有的li标签不被选中
7. 让当前标签选中
8. 让所有的内容隐藏
9. 让选中的内容展示出来

```
/**
* Created by Administrator on 2017/3/25.
    */
   window.οnlοad=function () {
    //1.拿到所有的li标签
    var allLi=document.getElementById('tab-top').getElementsByTagName('li');
    console.log(allLi);
    //2.拿到所有的内容div标签
    var allD=document.getElementById('tab-body').getElementsByClassName('dom');
    console.log(allD);

    //判断
    if(allLi.length!=allD.length){
        return ;
    }

    //3.遍历li标签
    for(var i=0;i<allLi.length;i++){
        //4.取出单独的li标签
        var li=allLi[i];
        li.id=i;
        console.log(li);
        //5.监听每个鼠标移动事件
        li.οnmοusemοve=function () {
            //6.让所有的li标签不被选中
            for(var j=0;j<allLi.length;j++){
                allLi[j].className='';
       
                //8.让所有的内容隐藏
                allD[j].style.display='none';
            }
            //7.让当前标签选中
            this.className='selected';
       
            //9.让选中的内容展示出来
            console.log('i='+i);
            allD[this.id].style.display='block';
        }

    }
   }
``
```

```
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值