一个初学者的辛酸路程-jQuery

前言:

主要概要:

1、HTML+CSS补充

2、DOM事件

3、jQuery示例

 

内容概要:

1、布局

代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body{
            margin:0;
        }
        .w{
            width:980px;
            margin:0 auto;
            border:1px solid greenyellow;
        }
    </style>
</head>
<body>
    <div style="background-color: black;color: white;">
        <div class="w">标题</div>
    </div>
    <div>
        <div class="w">内容</div>
    </div>
</body>
</html>
View Code

效果如下:

 

 2、clear  both的另外一种写法 (清除浮动)

常规写法就是如下所示:

<body>
    <div style="background-color: greenyellow;">
        <div style="width: 200px;height: 200px;border: 1px solid red;float: left;"></div>
        <div style="width: 200px;height: 200px;border: 1px solid red;float: left;"></div>
        <div style="width: 200px;height: 200px;border: 1px solid red;float: left;"></div>
        <div style="width: 200px;height: 200px;border: 1px solid red;float: left;"></div>
        <div style="width: 200px;height: 200px;border: 1px solid red;float: left;"></div>
        <div style="width: 200px;height: 200px;border: 1px solid red;float: left;"></div>
        <div style="clear: both;"></div>
    </div>
</body>

  接着,我们换另外一种写法

注意:有content才会加标签,一般都是这么写,不能写display: none

    <style>
        .clearfix:after{
            content: '.';
            display: block;
            clear: both;
            visibility: hidden;
            height:0;
        }
    </style>

所有网站这个都会用到。

以后就写一个公共的CSS,放在引用即可,after是指在这个标签内容的后面

<link rel="stylesheet" href="commons.css">

 3、页面布局,拖动浏览器如何让格式不变

第一种方法:

在外面定义一个div给一个固定宽度,如果缩小他会自动出现滚动条。如下图

写法如下:

<div style="width: 800px;">
   输入标签
</div>

 方法2:@media

    <style>
        @media (min-width: 800px){
        .item{
            width:20%;
            float: left;
            }
        }
        @media (max-width: 700px){
        .item{
            width:50%;
            float: left;
            }
        }

    </style>

 4、事件绑定

submit ,a标签,from表单,这些默认有些默认事件的

也可以自定义一些事件

 方式1:点击出现弹框,确定,跳转

<body>
    <a href="http://www.baidu.com" onclick=" func();">走你</a>
    <script>
        function func(){
            alert(123);
             false;
        }
    </script>
</body>

如果我不想让他跳转,需要return一个FALSE即可,如下

<body>
    <a href="http://www.baidu.com" onclick="return func();">走你</a>
    <script>
        function func(){
            alert(123);
            return false;
        }
    </script>
</body>

方式2:

<a href="http://www.baidu.com" id="i1">走你</a>
<script>
    document.getElementById('i1').onclick = function () {
        alert(123)
    }
</script>

默认阻止写法就是,价格return FALSE;

<body>
<a href="http://www.baidu.com" id="i1">走你</a>
<script>
    document.getElementById('i1').onclick = function () {
        alert(123);
        return false;
    }
</script>
</body>

 

有何作用?

用户提交数据如果为空,我就在JS上去阻止提交了。

 

 

<form action="http://www.baidu.com">
    <input type="text" id="user" name="user" />
    <input type="submit" value="提交" onclick="return func();">
</form>
<script>
    function func(){
        var v = document.getElementById('user').value;
        if(v.length>0){
            return true;
        }else{
            alert('请输入内容')
            return false;
        }
    }
</script>

第二种写法:

    <input type="submit" id="sb" value="提交" />
</form>

<script>
    document.getElementById('sb').onclick = function(){
       var v = document.getElementById('user').value;
        if(v.length>0){
            return true;
        }else{
            alert('请输入内容')
            return false;
        }
    }
</script>

 

 5、有一个绑定事件,我绑定想获取里面的数据。

<body>
    <div id="i1" onclick="fuck();">答复</div>
    <script>
        function fuck(){
            var v = document.getElementById('i1').innerText;
            alert(v);
        }
    </script>

this,触发当前目标的对象

<div onclick="fuck(this);">答复</div>
   <script>
        function fuck(self){
            var v = self.innerHTML;
            alert(v);
        }
    </script>

另外一种写法

<div id="i1">答复</div>
<script>
        document.getElementById('i1').onclick = function(){
            var v = this.innerHTML;
            alert(v);
        }
</script>

 

 

 6、点击获取时间去掉里面的关键字,拿开又恢复

 代码如下:

<body>
    <input type="text" value="请输入关键字" onfocus="fuckFocus(this);"onblur="fuckBlur(this);" />
    <input type="button" value="提交">
    <script>
        /*
        当标签获取焦点
        */
        function fuckFocus(ths){
            var v = ths.value;
            if(v == "请输入关键字"){
                ths.value = "";
            }
        }
         /*
        当标签失去焦点
        */
        function fuckBlur(ths){
            var v = ths.value;
            if(v.length == 0){
                ths.value = "请输入关键字"
            }
        }

    </script>
</body>

 this 代表当前标签。

如果获取值,都用.value(表单相关的,比如input系列,select标签)

除了这些,想获取标签中间的值(div span),用innerhtml和innertext。

2者的区别就是innerhtml除了获取值之外还能获取里面的标签,比如a标签或者span标签

如下:

 

 7、同时绑定2个相同的事件

实现效果如下:

点击同时出现2个事件

代码如下:

    <div id="i1" onclick="console.log(1);">dfd</div>
    <script>
        document.getElementById('i1').addEventListener('click',function(){
            console.log(2);
        })
    </script>

 

8、触发事件顺序。由内朝外(事件冒泡)

 

<body>
    <div style="height: 400px;width: 400px;background-color: red" onclick="alert(1);">
        <div style="height: 300px;width: 300px;background-color: greenyellow" onclick="alert(2);">
            <div style="height: 200px;width: 200px;background-color: black" onclick="alert(3);">
            </div>
        </div>
    </div>
</body>

 

 下面,写一个捕获式。通过addEventListener和true来捕获,事件触发顺序就是由外向里了。来控制事件顺序

    <div id="i1" style="height: 400px;width: 400px;background-color: red">
        <div id="i2" style="height: 300px;width: 300px;background-color: greenyellow" >
            <div id="i3" style="height: 200px;width: 200px;background-color: black" >
            </div>
        </div>
    </div>

    <script>
        document.getElementById('i1').addEventListener('click',function(){alert(1);},true);
        document.getElementById('i2').addEventListener('click',function(){alert(2);},true);
        document.getElementById('i3').addEventListener('click',function(){alert(3);},true);
    </script>

  

 给全局绑定事件

event是当前事件的信息

    <input type="text" onkeydown="func(this,event);" />

    <script>
        function  func(ths,e){
            console.log(ths,e)
        }
    </script>

 

全局生效,给Window绑定全局事件

    <input type="text" onkeydown="func(this,event);" />

    <script>
        function  func(ths,e){
            console.log(ths,e);
        }
        window.onkeydown = function(e){
            console.log(e);
        }
    </script>

 

 9、通过JS  给任何标签添加提交表单功能

 

<form id="f1" action="http://www.baidu.com">
    <input type="submit" value="提交">
    <a onclick = "submitForm();">提交</a>

</form>
<script>
    function submitForm(){
        document.getElementById('f1').submit();
    }
</script>

 

 10、给页面刷新,通过代码级别来做

window.location.reload()

 获取当前URL和赋值

window.location.href

 window.location.href = "http://cn.bing.com"

 

 11、出效果图

jQuery+highchart(专门用来出图)

上官网拿图https://www.hcharts.cn/demo/highcharts

代码如下:

记住,函数式直接从官网找好图,贴上它的代码而来,然后再执行函数即可。

官网找的函数如下:

 

<body>
    <div style="height: 500px;">
        <div id="i1"></div>
    </div>
    <script src="jquery-1.12.4.js"></script>
    <script src="highchart/highchart/highcharts.js"></script>
    <script>
        function  createChart(){
            $('#i1').highcharts({
        chart: {
            type: 'bar'
        },
        title: {
            text: 'Historic World Population by Region'
        },
        subtitle: {
            text: 'Source: Wikipedia.org'
        },
        xAxis: {
            categories: ['Africa', 'America', 'Asia', 'Europe', 'Oceania'],
            title: {
                text: null
            }
        },
        yAxis: {
            min: 0,
            title: {
                text: 'Population (millions)',
                align: 'high'
            },
            labels: {
                overflow: 'justify'
            }
        },
        tooltip: {
            valueSuffix: ' millions'
        },
        plotOptions: {
            bar: {
                dataLabels: {
                    enabled: true
                }
            }
        },
        legend: {
            layout: 'vertical',
            align: 'right',
            verticalAlign: 'top',
            x: -40,
            y: 100,
            floating: true,
            borderWidth: 1,
            backgroundColor: ((Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'),
            shadow: true
        },
        credits: {
            enabled: false
        },
        series: [{
            name: 'Year 1800',
            data: [107, 31, 635, 203, 2]
        }, {
            name: 'Year 1900',
            data: [133, 156, 947, 408, 6]
        }, {
            name: 'Year 2008',
            data: [973, 914, 4054, 732, 34]
        }]
    });
        }
        createChart();
    </script>
</body>

 

 12、利用jQuery找到并操作

<body>
    <div id="i1">sdfdf</div>
    <script src="jquery-1.12.4.js"></script>
    <script>
        $('#i1').text('adidas')
    </script>
</body>

通过class来修改

<body>

    <div class="c1">1</div>
    <div class="c1">2</div>
    <div class="c1">3</div>
    <div class="c1">4</div>
    <script src="jquery-1.12.4.js"></script>
    <script>

        $('.c1').text('666')
    </script>
</body>

2个条件,比如找到class为c1然后ID为i1

$('.c1,#i1').text('666')

 等于

$('.c1:eq(2)').text('12345')

 地址为:http://jquery.cuishifeng.cn/id.html

可以在这个里面去查找一些功能。

 

13、点赞实现

用到的知识点如下:

1)追加$('t1').append()在旁边增加一个标签

2)定时器  setInterval

3)透明度

4)位置变化 position: relative

5)字体大小和位置变化 

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .container{
            padding:50px;
            border:1px solid #dddddd;
        }
        .item{
            position: relative;
            width:30px;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="item">
            <span>赞</span>
        </div>
    </div>
    <div class="container">
        <div class="item">
            <span>赞</span>
        </div>
    </div>
    <div class="container">
        <div class="item">
            <span>赞</span>
        </div>
    </div>
    <div class="container">
        <div class="item">
            <span>赞</span>
        </div>
    </div>
</body>
    <script src="jquery-1.12.4.js"></script>
    <script>
        $('.item').click(function(){
            AddFavor(this);
        });
        function  AddFavor(self){
            var fontSize = 15;
            var top = 0;
            var right = 0;
            var opacity = 1;

            var tag = document.createElement('span');
            $(tag).text('+1');
            $(tag).css('color','green');
            $(tag).css('fontSize',fontSize + "px");
            $(tag).css('position','absolute');
            $(tag).css('right',right + "px");
            $(tag).css('top',top + "px");
            $(tag).css('opacity',opacity);
            $(self).append(tag);

           var obj = setInterval(function(){
                fontSize = fontSize + 5;
                top = top - 5;
                right = right - 5;
                opacity = opacity - 0.1;

                $(tag).css('fontSize',fontSize + "px");
                $(tag).css('right',right + "px");
                $(tag).css('top',top + "px");
                $(tag).css('opacity',opacity);

//               删除定时器和去除+1的标签
               if (opacity < 0){
                   clearInterval(obj);
                   $(tag).remove()
               }

            },100);
        }
    </script>
</html>

效果如下:

 

posted @ 2017-02-27 17:38  我还可以试试  阅读(410)  评论(0编辑  收藏  举报