IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 前端技术——8——前端技术总结补疑 -> 正文阅读

[JavaScript知识库]前端技术——8——前端技术总结补疑

HTML、CSS、JS以及JQuery总结:

现在的HTML主要是实现内容的呈现,CSS是对内容进行布局和装饰,JS以及jQuery是对内容的操作,即实现内容的动态改变。

前后端的交互,现在学到的主要是HTML的form表单:

<form action="url" method="GET | POST" enctype="multipart/form-data">
<input type="file" name="f">? //如果有file类型字段,form标签中要有enctype="multipart/form-data"
<input type="submit">
</form>

能够向后台传递个字段主要有:input标签 type=“text、radio、checkbox、file、hidden、password”等,select标签,textarea标签,这几个标签必须设置name属性,name的值就是设置传递数据的key,标签的value是传递的数据的值,后台接收的是字典,key就是前端标签的name值,value就是前端标签的value值。

CSS主要的是float:

清除浮动——:after的用法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .left{
            float: left;
        }
        .container{
            background-color: rosybrown;
        }
        .container .item{
            width: 180px;
            height: 150px;
            background-color: #336699;
            border: 1px solid red;
        }
        .clearfix:after{
            content: "ooo"; /*//增加的内容,在页面上显示,但不能选定*/
            display: block; /*以块级标签显示*/
            clear: both;  /*清除浮动,撑起外层div*/
            visibility: hidden; /*不想显示content增加的内容,但是占据位置,display:none则是不显示内容,也不占据位置*/
            height: 0; /*这样浏览器上外观显示就没有ooo这个内容,也不占位置了,但在文档流中还有的*/
        }
        /*//.container:after 是在container标签内部的沉底部位增加内容*/
        /*以后只要在对应的标签中增加class=“clearfix”就能撑起这个标签,好处是一直在标签的最底部增加,即使是动态增加子标签*/
    </style>
</head>
<body>
<div class="container clearfix">
    <div class="item left"></div>
    <div class="item left"></div>
    <div class="item left"></div>
    <div class="item left"></div>
<!--    <div style="clear: both"></div> /* 以前的做法,在.container内部增加一个div,清除浮动,撑起container*/-->
</div>
</body>
</html>

1、已知外层高度,内元素浮动时,外层按照已知已设置的高度被撑开

2、未知外层高度
? ? ? ? -- 原来做法:在内元素沉底位置增加<div style="clear:both";> </div>
? ? ? ? -- 推荐做法:写一个样式,如上的:
? ? ? ??.clearfix:after{
? ? ? ? ? ? content: "ooo";?
? ? ? ? ? ? display: block;
? ? ? ? ? ? clear: both; ?
? ? ? ? ? ? visibility: hidden;
? ? ? ? ? ? height: 0;
? ? ? ? }
? ? ? ??然后在需要的标签上增加class为clearfix就可以。

hover的应用:

.c1{
? ? background-color:red;
}
.c1:hover{
? ? background-color:pink;
}

以上样式,当鼠标放在.c1标签上时,背景色变为pink;鼠标移出标签,背景色变为red。

.c1:hover .c2{
? ? background-color:blue;
}

以上样式,是当鼠标放在c1上时,c2的样式改变。

实现一个鼠标进入和离开时改变的例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .clearfix:after{
            content: "ooo";
            display: block;
            clear: both;
            visibility: hidden;
            height: 0;
        }
        .container{
            background-color: red;
        }
        .container .item{
            width: 180px;
            height: 150px;
            background-color: #336699;
            border: 1px solid red;
            overflow: hidden;
            position: relative;//加上这一条,是为了给遮罩层定位用的

        }
        .left{
            float: left;
        }

        .container .item:hover{  /*当鼠标放在item标签上时,item自身改变*/
            border: 1px solid yellow;
        }
        .container .item .text {
            display: none;
        }
        .container .item:hover .text{
            display: block;
        }/*当鼠标选中item时,item下的text标签发生改变*/
    </style>
</head>
<body>
<div class="container clearfix">
    <div class="item left">
        <div class="bg">
            <img src="1.jpg" style="height: 150px;width: 180px">
        </div>
        <div class="text">
            <div style="z-index:9;position: absolute;left: 0;right: 0;top:0;bottom: 0;background-color: deeppink;opacity: 0.4;"></div>
            //上面的div为遮罩层,其定位,需要一个position:relative
            <div style="z-index:10;position: absolute;left: 0;right: 0;top: 0;bottom: 0;color: yellow">内容介绍</div>
            //上面的div为遮罩层上的文字层,其定位,也需要一个position:relative
        </div>
    </div>
    <div class="item left">
        <div class="bg">
            <img src="1.jpg" style="height: 150px;width: 180px">
        </div>
        <div class="text">
            <div style="z-index:9;position: absolute;left: 0;right: 0;top:0;bottom: 0;background-color: deeppink;opacity: 0.4;"></div>
            //上面的div定位,需要一个position:relative
            <div style="z-index:10;position: absolute;left: 0;right: 0;top: 0;bottom: 0;color: yellow">内容介绍</div>
        </div>
    </div>
    <div class="item left">
        <div class="bg">
            <img src="1.jpg" style="height: 150px;width: 180px">
        </div>
        <div class="text">
            <div style="z-index:9;position: absolute;left: 0;right: 0;top:0;bottom: 0;background-color: deeppink;opacity: 0.4;"></div>
            //上面的div定位,需要一个position:relative
            <div style="z-index:10;position: absolute;left: 0;right: 0;top: 0;bottom: 0;color: yellow">内容介绍</div>
        </div>
    </div>
</div>
</body>
</html>

?主要应用了:hover .class

另一个应用:类似下拉菜单栏的例子:

?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0;
        }
        .left{
            float: left;
        }
        .right{
            float: right;
        }
        .pg-header{
            height: 48px;
            background-color: #336699;
            color: white;
            line-height: 48px;
        }
        .pg-header .logo{
            width: 200px;
            align-content: center;
            margin-left: 10px;
        }
        .pg-header .user{
            padding: 0 40px;
            height: 48px;
            position: relative;
        }
        .pg-header .user:hover{
            background-color: palegoldenrod;
        }

        .pg-header .user .au img{
            width: 40px;
            height: 40px;
            margin-top: 4px;
            border-radius: 50%;
        }
        .pg-header .user .more{
            position: absolute;
            width: 150px;
            top: 48px;
            right: 16px;
            border: 1px solid red;
            background-color: #b4b4b4;
            display: none;
            z-index: 90;
        }
        .pg-header .user .more a{
            display: block;
        }
        .pg-header .user:hover .more{
            display: block;
        }
        .pg-body .body-menu{
            position: absolute;
            top: 50px;
            bottom: 0;
            left: 0;
            width: 200px;
            border: 1px solid forestgreen;
        }
        .pg-body .body-content{
            position: absolute;
            top: 50px;
            bottom: 0;
            left: 210px;
            right: 0;
            border: 1px solid forestgreen;
            overflow: auto;
            z-index: 10;
        }
    </style>
</head>
<body>
<div class="pg-header">
    <div class="logo left">后台管理页面布局演示</div>
    <div class="user right">
        <a class="au">
            <img src="1.jpg">
        </a>
        <div class="more">
            <a>我的信息</a>
            <a>注销</a>
            <a>更多信息</a>
        </div>
    </div>
</div>
<div class="pg-body">
    <div class="body-menu"></div>
    <div class="body-content"></div>
</div>
</body>
</html>

JavaScript总结补充:

作用域和作用域链:

Java/C#中,代码块作为作用域,Python中以函数作为作用域。

而JavaScript中,以函数作为作用域;函数在被调用之前,作用域链已经存在。

<script>
? ? ? ? ? ? xo = 'alex';
? ? ? ? ? ? function f1(){
? ? ? ? ? ? ? ? var xo = 'eric';
? ? ? ? ? ? ? ? function f2(){
? ? ? ? ? ? ? ? console.log(xo);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? return f2
? ? ? ? ? ? }
? ? ? ? ? ? var xxxxx = f1()
? ? ? ? ? ? xxxxx()
? ? ? ? ? ? // eirc
</script>

?声明提前:

?function func(){?
? ? ? ? ? ? console.log(ox);
? ? ? ? ? ? var ox = ' ?'
? ? ? ? ? ? var ox = ' ?'
? ? ? ? }
??func()

jQuery:找元素(直接,间接);操作(属性、增加、删除、修改。。。)

事件绑定方式:

DOM下绑定事件:

1)、<p id="p1" οnclick="func1(this);">hello p</p>
2)、var?ele=document.getElementById("p1");
? ? ? ? ? ? ? ? ele.οnclick=function(){alert (this.innerHTML);}

jQuery下绑定事件:

1)、$("p").click(function(){$(this).css("color","red");})

$(document).ready(function(){? ?}? ?//当js代码放在HTNL文档开头时,使用这个格式等待HTML加载完成在执行代码,就不会出现元素找不到的情况。

简写方式:$(function(){? ?})

事件相对于DOM,将前面的on去掉

2)、$("p").bind("click",function(){})? //不推荐使用了

3)、$("P").on("click","li",function(){})

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<ul>
    <li>11111</li>
    <li>22222</li>
    <li>33333</li>
    <li>44444</li>
</ul>
<input type="button" value="+" onclick="add();">
<p>pppppppppppppppp</p>
<script src="jquery-3.6.0.js"></script>
<script>
    function add() {
        $("ul").append("<li>555555</li>");
    }
    // $("ul li").click(function () {
    //     alert(456);
    // })
    // //上面的绑定事件的方式,为直接使用事件click(),对动态添加的标签无法绑定
    $("ul").on("click","li",function () {
        alert(666);
    })
    //上面的绑定事件方式,为使用on方式,动态添加的元素也能生效。
    function myHandler(event) {
        alert(event.data.foo);
    }
    $("p").on("click",{foo:"bar"},myHandler);
    //上面标签绑定事件,传递一个字典作为参数,在事件函数中,定义event参数,通过event来获取这个参数

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

?on方式的绑定,叫做事件委托,将绑定到li上的事件,委托给ul。on有四个参数。

面板拖动示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div style="border: 1px solid #ddd;width: 600px;position: absolute">
    <div id="title" style="background-color: black;height: 40px;color: white">
        标题
    </div>
    <div style="height: 300px;">
        内容
    </div>
</div>
<script src="jquery-3.6.0.js"></script>
<script>
    $("#title").mouseover(function () {
        $(this).css("cursor","move").mousedown(function (event) {
            var start_x = event.screenX;
            var start_y = event.screenY;
            var parent_left = $(this).parent().offset().left;
            var parent_top = $(this).parent().offset().top;

            $(this).on("mousemove",function (event2) {
                var new_x = event2.screenX;
                var new_y = event2.screenY;

                var new_parent_x = parent_left + new_x - start_x;
                var new_parent_y = parent_top + new_y -start_y;

                $(this).parent().css("left",new_parent_x+"px");
                $(this).parent().css("top",new_parent_y+"px");
            }).mouseup(function () {
                $(this).off("mousemove");

            });
        });
    });

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

鼠标按住标题栏拖动

?动画显示隐藏示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>hello world</p>
<input id="show" type="button" value="显示">
<input id="hide" type="button" value="隐藏">
<input id="toggle" type="button" value="切换">
<script src="jquery-3.6.0.js"></script>
<script>
    $("#show").click(function () {
        $("p").show(2000); 
    })//显示,有一个慢动作的拉幕效果
    $("#hide").click(function () {
        $("p").hide(2000);
    })//隐藏,有一个慢动作的收幕效果
    $("#toggle").click(function () {
        $("p").toggle(5000);
    })//实现上述显示和隐藏功能,当前是显示的,则隐藏,当前是隐藏的则显示
</script>
</body>
</html>

淡入淡出动画示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="div1" style="display: none;width: 200px;height: 200px;background-color: forestgreen;"></div>
<input id="In" type="button" value="fadeIn">
<input id="Out" type="button" value="fadeOut">
<input id="Toggle" type="button" value="fadeToggle">
<input id="To" type="button" value="fadeTo">
<script src="jquery-3.6.0.js"></script>
<script>
    $("#In").click(function () {
        $("div").fadeIn(2000);
    })
    $("#Out").click(function () {
        $("div").fadeOut(2000);
    })
    $("#Toggle").click(function () {
        $("div").fadeToggle(2000);
    })
    $("#To").click(function () {
        $("div").fadeTo(2000,0.3);
    })//最后出来的背景透明度为0.3
</script>
</body>
</html>

滑动动画:slideDown()、slideUp()、slideToggle()

回调函数:

$("#show").click(function () {
? ? ? ? $("p").show(2000,function(){ 。。。? });?
? ? })

当show方法2秒完成后,即show方法完成了动作,然后调用函数,这里的function就是回调函数,即定义的动作或事件完成后,再调用的函数。

jQuery扩展:使用extend()方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>hello pppp</p>
<script src="jquery-3.6.0.js"></script>
<script>
    $.extend({
        getmax:function (a,b) {
            return a>b ? a:b;
        }
    });//直接在jQuery上扩展,调用时是$加上点调用
    alert($.getmax(5,6));

    $.fn.extend({
        print:function () {
            alert($(this).html());
        }
    });//这种扩展,调用时必须是一个标签
    $("p").print();
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    var f = function (a) {
        alert(a);
    };
    f(123);
    //上下等同
    (function (a) {
        alert(a);
    })(123);
//将扩展方法放在自执行函数中,属于私有域,避免重名变量冲突
    (function () {
        $.fn.extend({
            print:function(){
                console.log($(this).html());
            };
        });
    })();

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

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:26:06  更:2022-03-24 00:29:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:53:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码